1 00:00:00,000 --> 00:00:03,944 >> [Bermain muzik] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID MALAN: Baiklah. 4 00:00:11,690 --> 00:00:14,674 Ini adalah CS50, dan ini adalah akhir minggu 2. 5 00:00:14,674 --> 00:00:16,840 Saya minta maaf saya tidak boleh di sana dengan anda semua hari ini, 6 00:00:16,840 --> 00:00:18,300 tetapi anda berada dalam tangan yang sangat baik. 7 00:00:18,300 --> 00:00:21,710 Izinkan saya untuk memperkenalkan CS50 sendiri Rob Bowden. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 ROB BOWDEN: Dan sudah tentu, kemudian kita perlu membuat menyeronokkan fakta 10 00:00:31,730 --> 00:00:36,820 bahawa dia menghantar kami menegak video dan menunjukkan ini. 11 00:00:36,820 --> 00:00:38,320 >> [VIDEO MAIN SEMULA] 12 00:00:38,320 --> 00:00:39,820 >> [Bermain muzik] 13 00:00:39,820 --> 00:00:42,350 >> [JEJAK] 14 00:00:42,350 --> 00:00:44,730 >> Video -Ini tidak perlu melihat dengan cara ini. 15 00:00:44,730 --> 00:00:46,570 Ia boleh dielakkan. 16 00:00:46,570 --> 00:00:49,070 Mengatakan tidak kepada video menegak. 17 00:00:49,070 --> 00:00:53,310 >> Video -Vertical berlaku apabila anda memegang kamera anda dengan cara yang salah. 18 00:00:53,310 --> 00:00:55,880 Video anda akan berakhir sehingga kelihatan seperti crap. 19 00:00:55,880 --> 00:00:57,650 >> - [Mengomel] 20 00:00:57,650 --> 00:01:02,240 >> -Terdapat Lebih ramai orang ketagih untuk membuat video menegak setiap hari. 21 00:01:02,240 --> 00:01:06,240 Ia tidak retak atau apa-apa, tetapi ia masih benar-benar buruk. 22 00:01:06,240 --> 00:01:10,410 Terdapat dua jenis orang-orang yang ditimpa VVS. 23 00:01:10,410 --> 00:01:14,160 Kumpulan pertama merawat video mereka menembak seperti gambar. 24 00:01:14,160 --> 00:01:15,850 Mereka tidak bermaksud apa-apa kemudaratan. 25 00:01:15,850 --> 00:01:19,180 Mereka hanya tidak faham bahawa semasa anda boleh bertukar gambar, 26 00:01:19,180 --> 00:01:20,880 anda tidak boleh benar-benar berubah video. 27 00:01:20,880 --> 00:01:21,880 >> [CRASH] 28 00:01:21,880 --> 00:01:23,460 >> - [MONKEY SOUNDS] 29 00:01:23,460 --> 00:01:27,540 >> -The Kumpulan yang lain adalah orang-orang yang tidak memberikan [Bleep]. 30 00:01:27,540 --> 00:01:31,090 >> Sindrom Video -Vertical berbahaya. 31 00:01:31,090 --> 00:01:34,120 Rakaman yang mempunyai sentiasa mendatar. 32 00:01:34,120 --> 00:01:35,990 Televisyen adalah mendatar. 33 00:01:35,990 --> 00:01:38,380 Skrin komputer adalah mendatar. 34 00:01:38,380 --> 00:01:41,580 Mata orang ramai adalah mendatar. 35 00:01:41,580 --> 00:01:45,170 Kami tidak dibina untuk menonton video menegak. 36 00:01:45,170 --> 00:01:47,600 >> -Saya Suka video menegak. 37 00:01:47,600 --> 00:01:50,410 >> -Nobody Mengambil berat tentang anda. 38 00:01:50,410 --> 00:01:53,340 >> -Jika Ini masalah ini tidak dikawal, anda juga 39 00:01:53,340 --> 00:01:57,650 akan mula menunjukkan empat video sekaligus hanya untuk menjimatkan bandwidth. 40 00:01:57,650 --> 00:02:02,400 >> Video menegak -Letterboxed akan menjadi saiz setem pos. 41 00:02:02,400 --> 00:02:04,920 >> -Dan Ia akan merebak di mana-mana. 42 00:02:04,920 --> 00:02:07,670 Skrin pawagam mempunyai sentiasa mendatar. 43 00:02:07,670 --> 00:02:11,200 Jika video menegak menjadi diterima, pawagam 44 00:02:11,200 --> 00:02:13,930 akan mempunyai untuk menjadi tinggi dan kurus. 45 00:02:13,930 --> 00:02:17,710 >> -Dan Semua pawagam akan mempunyai untuk dirobohkan dan dibina semula. 46 00:02:17,710 --> 00:02:22,090 Dan pada masa itu mereka telah dibina semula, Mila Kunis akan menjadi tua dan hodoh. 47 00:02:22,090 --> 00:02:24,342 >> -Birds Akan berlanggar dengan mereka dan mati. 48 00:02:24,342 --> 00:02:26,530 >> -We'll Semua mendapat sengit leher daripada melihat ke atas. 49 00:02:26,530 --> 00:02:29,800 >> -Dan Yang tidak akan duduk di barisan hadapan pernah lagi. 50 00:02:29,800 --> 00:02:37,170 >> -George Lucas akan semula pelepasan Bintang Wars again-- edisi kurus. 51 00:02:37,170 --> 00:02:41,860 >> -Saya Tidak pernah benar-benar dapat memberitahu cerita yang saya mahu memberitahu. 52 00:02:41,860 --> 00:02:46,030 Ini adalah satu peluang yang baik untuk saya bereksperimen dengan teknologi baru. 53 00:02:46,030 --> 00:02:48,150 >> -You're Dungu. 54 00:02:48,150 --> 00:02:54,430 >> Masa -Setiap peranti mudah alih yang digunakan untuk rekod video, godaan ada. 55 00:02:54,430 --> 00:02:56,370 Hanya mengatakan tidak. 56 00:02:56,370 --> 00:03:00,116 Mengatakan tidak kepada George Lucas. 57 00:03:00,116 --> 00:03:04,062 Mengatakan tidak kepada lama Mila Kunis. 58 00:03:04,062 --> 00:03:06,600 Mengatakan tidak kepada video menegak. 59 00:03:06,600 --> 00:03:12,511 >> -Dan Jika anda melihat seseorang melakukannya, berkata, "anda tidak menembak yang dummy betul!" 60 00:03:12,511 --> 00:03:15,433 >> [Bermain muzik] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [AKHIR MAIN SEMULA] 63 00:03:19,830 --> 00:03:23,702 >> [Tepuk tangan] 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 bentuk kriptografi, 67 00:03:45,790 --> 00:03:49,500 yang pada dasarnya penyulitan dan penyahsulitan mesej rahsia. 68 00:03:49,500 --> 00:03:52,590 Jadi di sini kita mempunyai mainan yang sangat mudah. 69 00:03:52,590 --> 00:03:56,900 Dan idea ini adalah Lingkaran luar berputar mengelilingi cincin. 70 00:03:56,900 --> 00:04:01,610 Dan anda boleh lihat, mungkin jika saya zum dalam, bahawa- ia sukar untuk melihat. 71 00:04:01,610 --> 00:04:05,090 Tetapi, seperti, bilangan 1-- baik, yang bergerak. 72 00:04:05,090 --> 00:04:09,120 >> Bilangan 1 maps kepada surat X, bilangan 2 peta kepada surat 73 00:04:09,120 --> 00:04:11,630 J. Sangat sukar tidak melangkau ke hadapan. 74 00:04:11,630 --> 00:04:16,100 Surat 2 peta untuk J. Number 3 maps D. Jadi 75 00:04:16,100 --> 00:04:20,140 dengan cincin ini, anda boleh memberi seseorang mesej 1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 Atas sebab tertentu anda mahu memberitahu mereka XJD. 77 00:04:22,624 --> 00:04:24,540 Tetapi anda boleh memberikan mereka beberapa mesej nombor, 78 00:04:24,540 --> 00:04:28,460 dan selagi mereka mempunyai cincin ini, mereka boleh menyahsulitkan apa yang anda cuba untuk mengatakan. 79 00:04:28,460 --> 00:04:32,510 >> Jadi, anda mungkin telah melihat ini contoh tertentu kriptografi 80 00:04:32,510 --> 00:04:36,640 sebelum ini, jika di sekitar musim Krismas anda tonton A Story Krismas. 81 00:04:36,640 --> 00:04:38,520 Jika anda tidak pernah dilihat sebelum ini, maka hanya 82 00:04:38,520 --> 00:04:41,060 menghidupkan TBS di literal bila-bila masa pada malam Krismas, 83 00:04:41,060 --> 00:04:44,510 kerana mereka hanya menunjukkan ia kembali ke belakang ke belakang untuk kembali ke belakang sepanjang hari. 84 00:04:44,510 --> 00:04:46,744 Dan video yang berkaitan adalah ini. 85 00:04:46,744 --> 00:04:47,410 [VIDEO MAIN SEMULA] 86 00:04:47,410 --> 00:04:50,020 -Be Ia dikenali kepada segala-galanya yang Ralph Parker adalah dengan ini 87 00:04:50,020 --> 00:04:52,850 dilantik sebagai ahli Little Orphan Annie Secret Circle 88 00:04:52,850 --> 00:04:56,490 dan adalah berhak kepada semua penghormatan dan manfaat yang berlaku kepadanya. 89 00:04:56,490 --> 00:04:59,010 Ditandatangani Little Orphan Annie. 90 00:04:59,010 --> 00:05:03,120 Balas Pierre Andre dalam dakwat! 91 00:05:03,120 --> 00:05:07,460 Kepujian dan faedah sudah pada usia sembilan tahun! 92 00:05:07,460 --> 00:05:12,530 >> [Menjerit DARI RADIO] 93 00:05:12,530 --> 00:05:13,030 -Ayuh. 94 00:05:13,030 --> 00:05:14,000 Mari kita pada dengannya. 95 00:05:14,000 --> 00:05:18,274 Saya tidak memerlukan semua jazz yang tentang penyeludup dan lanun. 96 00:05:18,274 --> 00:05:20,440 Malam esok -Listen dengan pengembaraan menyimpulkan 97 00:05:20,440 --> 00:05:22,540 daripada Pirate Kapal Hitam. 98 00:05:22,540 --> 00:05:25,460 Kini, sudah tiba masanya untuk Mesej rahsia Annie 99 00:05:25,460 --> 00:05:28,620 untuk anda ahli Circle Rahsia. 100 00:05:28,620 --> 00:05:32,370 Ingat anak-anak, hanya ahli Rahsia Circle Annie 101 00:05:32,370 --> 00:05:34,880 boleh decode mesej rahsia Annie. 102 00:05:34,880 --> 00:05:39,100 Ingat, Annie adalah bergantung kepada anda. 103 00:05:39,100 --> 00:05:41,660 Tetapkan PIN anda untuk B2. 104 00:05:41,660 --> 00:05:43,960 Berikut adalah mesej. 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 -Saya Am dalam mesyuarat rahsia pertama saya. 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 di malam ini suara yang besar. 115 00:05:54,570 --> 00:05:57,490 Saya boleh memberitahu bahawa malam ini mesej adalah benar-benar penting. 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 Itulah mesej dari Annie dirinya. 119 00:06:01,580 --> 00:06:02,880 Ingat, jangan beritahu sesiapa. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> Saat -Five kemudian, saya dalam satu-satunya bilik di dalam rumah di mana seorang budak sembilan 122 00:06:11,130 --> 00:06:15,830 boleh duduk dalam privasi dan decode. 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 Saya pergi ke depan. 126 00:06:20,210 --> 00:06:23,300 E. Perkataan pertama adalah "menjadi." 127 00:06:23,300 --> 00:06:25,880 S. Ia datang mudah sekarang. 128 00:06:25,880 --> 00:06:28,400 U. 25. 129 00:06:28,400 --> 00:06:30,528 Itulah R. 130 00:06:30,528 --> 00:06:31,278 -Ayuh, Ralphie! 131 00:06:31,278 --> 00:06:31,861 Saya kena pergi! 132 00:06:31,861 --> 00:06:33,182 -I'll Betul ke bawah, Ma! 133 00:06:33,182 --> 00:06:36,038 Gee jagoan. 134 00:06:36,038 --> 00:06:42,840 T. O. "Pastikan anda" - pastikan untuk apa? 135 00:06:42,840 --> 00:06:44,770 Apakah Little Orphan Annie cuba katakan? 136 00:06:44,770 --> 00:06:46,381 Pastikan anda apa? 137 00:06:46,381 --> 00:06:47,825 >> -Randy Telah mendapat untuk pergi! 138 00:06:47,825 --> 00:06:48,866 Bolehkah kamu keluar daripadanya? 139 00:06:48,866 --> 00:06:49,783 >> Hak -Semua, ibu! 140 00:06:49,783 --> 00:06:51,786 Saya akan keluar betul! 141 00:06:51,786 --> 00:06:53,606 Saya telah mendapat lebih dekat sekarang. 142 00:06:53,606 --> 00:06:55,550 Ketegangan yang amat dahsyat. 143 00:06:55,550 --> 00:06:57,050 Apakah ia? 144 00:06:57,050 --> 00:06:59,905 Nasib planet ini boleh meragukan! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Randy mendapat untuk pergi! 146 00:07:01,736 --> 00:07:05,680 >> -I'll Betul keluarlah, menangis dengan kuat! 147 00:07:05,680 --> 00:07:07,170 Hampir sampai! 148 00:07:07,170 --> 00:07:08,150 Jari saya terbang. 149 00:07:08,150 --> 00:07:09,980 Fikiran saya perangkap keluli. 150 00:07:09,980 --> 00:07:11,496 Setiap liang digetarkan. 151 00:07:11,496 --> 00:07:13,268 Ia adalah hampir jelas! 152 00:07:13,268 --> 00:07:13,767 Ya. 153 00:07:13,767 --> 00:07:14,609 Ya. 154 00:07:14,609 --> 00:07:15,108 Ya. 155 00:07:15,108 --> 00:07:16,449 Ya. 156 00:07:16,449 --> 00:07:20,240 Pastikan anda minum Ovaltine anda. 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 A komersial yg tdk memuaskan? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 Bedebah. 162 00:07:34,920 --> 00:07:35,890 >> [AKHIR MAIN SEMULA] 163 00:07:35,890 --> 00:07:39,650 >> ROB BOWDEN: Jadi itulah bagaimana Ovaltine berkaitan dengan kriptografi. 164 00:07:39,650 --> 00:07:42,290 Pada asasnya CS50 hanya diiklankan Ovaltine, jadi kita boleh 165 00:07:42,290 --> 00:07:44,400 menjadi komersial yg tdk memuaskan untuk Ovaltine. 166 00:07:44,400 --> 00:07:44,900 Baiklah. 167 00:07:44,900 --> 00:07:47,120 Jadi sekarang sains komputer yang sebenar. 168 00:07:47,120 --> 00:07:50,670 Ingat hari ini kita berhenti menyelam jauh ke dalam tali. 169 00:07:50,670 --> 00:07:52,820 Oleh itu, kita berurusan dengan rentetan "Zamyla." 170 00:07:52,820 --> 00:07:55,130 Dan kami mengiktiraf hakikat bahawa kita boleh merawat 171 00:07:55,130 --> 00:07:57,510 "Zamyla" sebagai jujukan aksara. 172 00:07:57,510 --> 00:07:59,740 Dan ingat bahawa kita belajar notasi kurungan. 173 00:07:59,740 --> 00:08:01,995 Jadi, jika ini telah disimpan dalam rentetan "s", maka 174 00:08:01,995 --> 00:08:05,860 jika kita kata s kurungan 0, yang akan menunjukkan Z. modal surat 175 00:08:05,860 --> 00:08:09,790 Dan jika kita kata s kurungan 1, yang akan menunjukkan pertama huruf kecil, 176 00:08:09,790 --> 00:08:14,220 dan sebagainya sehingga s kurungan 5, yang akan menunjukkan yang terakhir. 177 00:08:14,220 --> 00:08:17,090 >> Sekarang ingat bahawa panjang tali ini ialah 6, 178 00:08:17,090 --> 00:08:23,220 tetapi indeks ke dalam tali adalah 0 hingga 5, Z melalui itu berlangsung. 179 00:08:23,220 --> 00:08:28,650 Jadi ini sekarang sesuai dengan gambar yang lebih besar memori komputer anda, RAM anda. 180 00:08:28,650 --> 00:08:32,020 Jadi di suatu tempat program yang anda menjalankan komputer anda 181 00:08:32,020 --> 00:08:34,780 perlu ingat Zamyla di suatu tempat di ingatan. 182 00:08:34,780 --> 00:08:36,029 Jadi saya boleh mempunyai seorang sukarelawan? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Ya sila. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 Dan apa nama awak? 187 00:08:51,500 --> 00:08:52,410 >> DEAN: Dean. 188 00:08:52,410 --> 00:08:53,550 >> ROB BOWDEN: Dean? 189 00:08:53,550 --> 00:08:54,910 Gembira dapat bertemu dengan anda, Dean. 190 00:08:54,910 --> 00:08:58,240 Jadi datang ke sini, dan kita akan mempunyai anda menarik 191 00:08:58,240 --> 00:09:00,740 pada susun atur bagus bagus kami ingatan. 192 00:09:00,740 --> 00:09:05,950 Sekarang saya suka berfikir memori sebagai salah satu jalur panjang bait, 193 00:09:05,950 --> 00:09:11,090 tetapi hanya untuk tujuan paparan kami akan hanya kiri ke kanan, atas ke bawah. 194 00:09:11,090 --> 00:09:11,590 OKAY? 195 00:09:11,590 --> 00:09:22,030 >> Jadi saya akan menunjukkan program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 Dan supaya semua program ini adalah melakukan meminta empat tali 197 00:09:25,760 --> 00:09:28,830 daripada pengguna dengan GetString dan kemudian percetakan 198 00:09:28,830 --> 00:09:30,950 apa sahaja yang rentetan pertama masukkan tidak. 199 00:09:30,950 --> 00:09:32,840 Kami mengabaikan dua melalui empat. 200 00:09:32,840 --> 00:09:33,610 OKAY. 201 00:09:33,610 --> 00:09:38,210 Jadi di sini sekarang-- apabila Saya mula-mula permintaan s1. 202 00:09:38,210 --> 00:09:39,740 Jadi anda komputer. 203 00:09:39,740 --> 00:09:41,680 Dan anda melaksanakan GetString. 204 00:09:41,680 --> 00:09:46,710 Oleh itu, anda meminta rentetan daripada saya, dan saya katakan, OK, Dean. 205 00:09:46,710 --> 00:09:47,900 Beri rentetan "Dean." 206 00:09:47,900 --> 00:09:50,300 >> Jadi di suatu tempat di memori anda perlu ingat "Dean." 207 00:09:50,300 --> 00:09:52,160 Jadi menulisnya ke dalam ingatan di suatu tempat. 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 Perfect. 210 00:09:59,210 --> 00:09:59,880 OKAY. 211 00:09:59,880 --> 00:10:01,740 Jadi sekarang kita telah S2. 212 00:10:01,740 --> 00:10:03,869 Dan s2 akan menjadi permintaan untuk GetString. 213 00:10:03,869 --> 00:10:05,160 Jadi, saya akan memasuki rentetan. 214 00:10:05,160 --> 00:10:08,720 Saya akan masukkan "Hannah." 215 00:10:08,720 --> 00:10:10,586 Oleh itu, masukilah "Hannah" di suatu tempat ke dalam ingatan. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 Yeah. 218 00:10:19,360 --> 00:10:23,000 A-H. 219 00:10:23,000 --> 00:10:25,550 >> OK, jadi sekarang s3. 220 00:10:25,550 --> 00:10:28,380 Dan ia akan menjadi satu lagi meminta untuk GetString. 221 00:10:28,380 --> 00:10:37,020 Dan sekarang masukkan "Maria." 222 00:10:37,020 --> 00:10:37,520 Baiklah. 223 00:10:37,520 --> 00:10:40,980 Dan kemudian ada satu lepas permintaan untuk GetString, s4. 224 00:10:40,980 --> 00:10:42,580 Jadi, saya tidak tahu. 225 00:10:42,580 --> 00:10:45,640 Bagaimana pula kita pergi dengan antidisestablishmentarianism. 226 00:10:45,640 --> 00:10:49,460 Oleh itu, masukilah itu ke dalam ingatan. 227 00:10:49,460 --> 00:10:50,400 Yeah. 228 00:10:50,400 --> 00:10:53,970 Jadi hanya melakukan "Rob." 229 00:10:53,970 --> 00:10:54,560 >> OKAY. 230 00:10:54,560 --> 00:10:58,410 Jadi sekarang explain-- mengapa anda meninggalkan ruang ini? 231 00:10:58,410 --> 00:11:01,340 Mengapa anda mempunyai ini kosong ruang di sini, di sini, dan di sini? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 Ya. 234 00:11:05,670 --> 00:11:09,450 Jadi notis apabila saya pergi untuk mencetak s1-- jadi jika kita 235 00:11:09,450 --> 00:11:11,890 mempunyai "Hannah" berjalan sehingga sebelah "Dean," 236 00:11:11,890 --> 00:11:14,360 bagaimana kita tahu apabila rentetan "Dekan" berakhir? 237 00:11:14,360 --> 00:11:19,470 Jadi mencetak s1 tali mungkin mempunyai hanya dicetak "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 jika ia tidak mempunyai apa-apa petunjuk apabila "Dekan" sebenarnya berakhir. 239 00:11:22,720 --> 00:11:23,240 >> Baiklah. 240 00:11:23,240 --> 00:11:27,650 Jadi dalam memori cara kita sebenarnya mewakili tujuan ini rentetan 241 00:11:27,650 --> 00:11:29,940 adalah dengan garis sendeng terbalik sifar. 242 00:11:29,940 --> 00:11:32,620 Jadi ruang ini adalah apa yang kita mahu. 243 00:11:32,620 --> 00:11:34,040 Ia seharusnya menjadi garis sendeng terbalik sifar. 244 00:11:34,040 --> 00:11:37,690 Ini akan menjadi satu garis sendeng terbalik sifar, dan ini akan menjadi garis sendeng terbalik sifar. 245 00:11:37,690 --> 00:11:41,585 Dan anda boleh mempunyai hadiah hebat kerana menjadi sukarelawan yang sempurna. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Ambil bola tekanan! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> OKAY. 250 00:11:49,700 --> 00:11:54,420 Jadi ini backslash watak sifar adalah bagaimana kita menunjukkan akhir rentetan. 251 00:11:54,420 --> 00:11:57,120 Ia adalah bagaimana apabila mana-mana program yang diberikan mahu mencetak rentetan, 252 00:11:57,120 --> 00:11:59,760 ia how-- ingat kita belajar fungsi strlen minggu lepas? 253 00:11:59,760 --> 00:12:00,940 Panjang tali? 254 00:12:00,940 --> 00:12:03,770 Ia adalah bagaimana panjang tali boleh menentukan berapa lama tali adalah. 255 00:12:03,770 --> 00:12:05,810 Ia hanya menyimpan iterating atas watak-watak 256 00:12:05,810 --> 00:12:08,217 sehingga ia mendapati Backslash watak sifar. 257 00:12:08,217 --> 00:12:11,050 Jadi perkara yang penting untuk menyedari mengenai watak backslash sifar 258 00:12:11,050 --> 00:12:14,950 adalah ia diwakili oleh semua sifar dalam bit. 259 00:12:14,950 --> 00:12:18,980 Jadi notis bahawa ini adalah berbeza dari watak sifar. 260 00:12:18,980 --> 00:12:23,010 Jadi watak sifar, jika anda ingat dalam contoh bahawa dia telah memberikan pada akhir 261 00:12:23,010 --> 00:12:27,360 kuliah di mana watak-watak peta supaya- seperti modal A peta ke 65. 262 00:12:27,360 --> 00:12:29,130 Huruf kecil peta untuk 97. 263 00:12:29,130 --> 00:12:30,890 B huruf kecil akan menjadi 98. 264 00:12:30,890 --> 00:12:35,220 Jadi nombor 0 peta supaya- saya tidak tahu dari atas kepala saya. 265 00:12:35,220 --> 00:12:36,400 44 atau 45. 266 00:12:36,400 --> 00:12:37,890 Di suatu tempat di rantau itu. 267 00:12:37,890 --> 00:12:40,850 >> Jadi watak 0 adalah nombor yang sebenar. 268 00:12:40,850 --> 00:12:44,350 Tetapi sifar garis sendeng terbalik peta ke semua bit sifar. 269 00:12:44,350 --> 00:12:46,380 Jadi ada perbezaan yang antara garis sendeng terbalik sifar, 270 00:12:46,380 --> 00:12:48,450 yang kita akan memanggil terminator nol. 271 00:12:48,450 --> 00:12:53,210 Ada perbezaan antara garis miring sifar dan watak sifar. 272 00:12:53,210 --> 00:12:54,350 >> Baiklah. 273 00:12:54,350 --> 00:12:57,520 Jadi bercakap sedikit lebih lanjut mengenai tali. 274 00:12:57,520 --> 00:13:01,470 Sebab itu kita lihat di sini ini adalah bagaimana ia akan dibentangkan di dalam ingatan. 275 00:13:01,470 --> 00:13:07,940 Jadi idea ini rentetan sebagai urutan daripada characters-- supaya komputer rasmi 276 00:13:07,940 --> 00:13:10,750 jangka sciency untuk urutan adalah array. 277 00:13:10,750 --> 00:13:13,790 Oleh itu, kita akan memanggil rentetan pelbagai watak. 278 00:13:13,790 --> 00:13:17,770 Dan sebenarnya ada data lain jenis yang kita boleh membuat array daripada. 279 00:13:17,770 --> 00:13:19,975 >> Jadi untuk memberi motivasi ini, melihat contoh. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 Kami akan memanggilnya ages0.c saya akan copy dan paste template kami. 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 OKAY. 284 00:13:33,410 --> 00:13:39,378 Jadi, dalam program ini yang kita mahu lakukan adalah merebut umur 285 00:13:39,378 --> 00:13:45,160 tiga pelajar dalam kursus ini. 286 00:13:45,160 --> 00:13:49,240 Oleh itu, kita tahu int age-- dan sekarang saya akan mengatakan 0. 287 00:13:49,240 --> 00:13:53,140 Jadi, anda mungkin mahu untuk mengatakan age1, tetapi untuk tujuan kita akan melihat sangat tidak lama lagi, 288 00:13:53,140 --> 00:13:57,187 Saya akan berkata int age0 sama GetInt. 289 00:13:57,187 --> 00:13:59,270 Jadi panggilan yang sama untuk GetInt bahawa kita telah menggunakan saya 290 00:13:59,270 --> 00:14:01,561 tidak berlaku untuk mendorong berkata, "berikan saya zaman." 291 00:14:01,561 --> 00:14:03,120 Tetapi permintaan itu. 292 00:14:03,120 --> 00:14:06,510 >> Dan age1 sama GetInt. 293 00:14:06,510 --> 00:14:09,600 Dan int age2 sama GetInt. 294 00:14:09,600 --> 00:14:14,070 Jadi, sekali lagi, tiga pelajar, tetapi akhirnya indeks boleh ubah 295 00:14:14,070 --> 00:14:16,890 adalah age0 melalui age2. 296 00:14:16,890 --> 00:14:17,550 OKAY. 297 00:14:17,550 --> 00:14:23,960 Jadi program ini akan melakukan apa sahaja yang kita mahu dengan age0, age1 dan age2, 298 00:14:23,960 --> 00:14:27,670 tetapi program ini akhirnya bekerja untuk tiga pelajar. 299 00:14:27,670 --> 00:14:28,380 >> OKAY. 300 00:14:28,380 --> 00:14:32,110 Jadi sekarang bagaimana jika saya mahu pelajar empat? 301 00:14:32,110 --> 00:14:36,000 Well, saya akan perlu kembali ke dalam kod saya, menukar komen, 302 00:14:36,000 --> 00:14:39,840 dan sekarang kami mempunyai int age3 sama GetInt. 303 00:14:39,840 --> 00:14:40,610 OKAY. 304 00:14:40,610 --> 00:14:43,660 Jadi yang melihat masalah di sini? 305 00:14:43,660 --> 00:14:47,310 Apa masalahnya dengan seperti ini persediaan? 306 00:14:47,310 --> 00:14:47,810 Yeah. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 Yeah. 309 00:14:53,610 --> 00:14:56,360 Oleh itu, kita sedang mencipta berubah-ubah bagi setiap pelajar. 310 00:14:56,360 --> 00:15:00,140 Sekarang bekerja, tetapi akhirnya apa jika saya kini 311 00:15:00,140 --> 00:15:06,500 berkata, "Saya mahu merebut usia lapan pelajar atau 16 pelajar 312 00:15:06,500 --> 00:15:11,340 atau bagaimanapun ramai pelajar beratus-ratus pelajar di CS50 313 00:15:11,340 --> 00:15:16,750 atau beribu-ribu pelajar di kampus atau berbilion-bilion orang di dunia? 314 00:15:16,750 --> 00:15:19,130 Jadi akhirnya ia tidak berkekalan. 315 00:15:19,130 --> 00:15:21,990 Bila-bila masa anda melihat diri anda menyalin dan kod menampal seperti ini, 316 00:15:21,990 --> 00:15:25,050 anda biasanya perlu berasa bahawa terdapat cara yang lebih baik. 317 00:15:25,050 --> 00:15:31,290 >> Jadi ini adalah di mana kita memperkenalkan pengisytiharan tatasusunan. 318 00:15:31,290 --> 00:15:34,564 Oleh itu, apabila anda mengisytiharkan array, ini adalah apa format umum 319 00:15:34,564 --> 00:15:35,480 akan kelihatan seperti. 320 00:15:35,480 --> 00:15:36,664 Kami akan mengatakan jenis. 321 00:15:36,664 --> 00:15:38,830 dan kemudian kita akan memberikan nama array itu, 322 00:15:38,830 --> 00:15:41,150 sama seperti kita menentukan apa-apa ubah diberikan. 323 00:15:41,150 --> 00:15:43,980 Dan kemudian akhirnya kita menggunakan notasi kurungan ini sekali lagi 324 00:15:43,980 --> 00:15:47,480 tetapi dalam konteks yang berbeza dari bagaimana kita menggunakannya sebelum ini. 325 00:15:47,480 --> 00:15:51,860 >> Jadi di sini ini kelihatan seperti biasa pengisytiharan pembolehubah yang kita lihat. 326 00:15:51,860 --> 00:15:54,890 Oleh itu, kita telah lihat int x koma bertitik sebelum ini. 327 00:15:54,890 --> 00:16:00,020 Sekarang kita boleh melihat sesuatu seperti int x kurungan 5. 328 00:16:00,020 --> 00:16:04,020 Dan meletakkan idea ini ke dalam Program GetInt yang kita ada-- 329 00:16:04,020 --> 00:16:08,850 supaya kita boleh melaksanakan ini dengan cara yang sama. 330 00:16:08,850 --> 00:16:13,630 >> Katakan dalam CS kita cenderung untuk menggunakan n sebagai bilangan sesuatu. 331 00:16:13,630 --> 00:16:16,150 Jadi di sini kita akan menyimpan empat pelajar. 332 00:16:16,150 --> 00:16:25,960 Dan sekarang kita boleh mengatakan umur int kurungan tidak n-- agak mendapatkannya YET 333 00:16:25,960 --> 00:16:32,210 mengisytiharkan pelbagai pelajar tingkatan empat. 334 00:16:32,210 --> 00:16:38,050 Jadi bagaimana ini akan kelihatan dalam memori akan sama dengan ini. 335 00:16:38,050 --> 00:16:39,570 Membersihkan ini. 336 00:16:39,570 --> 00:16:46,606 Dan kita akan mempunyai tempat dalam memory-- Saya akan meletakkan ini di sana. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> Jadi di suatu tempat di ingatan. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 Satu dua tiga empat. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 Kami mempunyai empat integer berturut-turut untuk pelbagai ini empat integer. 343 00:17:09,849 --> 00:17:13,820 Jadi, pada masa ini, apakah Saiz salah satu daripada kotak-kotak? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 Yeah. 346 00:17:17,690 --> 00:17:18,390 Ia empat bait. 347 00:17:18,390 --> 00:17:19,690 Ia adalah 32 bit. 348 00:17:19,690 --> 00:17:22,310 Jadi sekarang ini adalah berbeza dari array yang kita 349 00:17:22,310 --> 00:17:24,020 lihat sebelum ini, pelbagai watak. 350 00:17:24,020 --> 00:17:28,540 Dalam rentetan setiap kotak hanya satu bait, kerana watak hanya satu bait. 351 00:17:28,540 --> 00:17:32,170 Tetapi dengan pelbagai integer, masing-masing keselamatan telah menjadi empat bait agar 352 00:17:32,170 --> 00:17:34,060 untuk memenuhi keseluruhan integer. 353 00:17:34,060 --> 00:17:37,197 Jadi ini adalah apa yang pelbagai empat ints akan kelihatan seperti. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> Dan kemudian kembali ke kod. 356 00:17:43,870 --> 00:17:47,460 Sekarang kita mahu sebenarnya kedai bilangan bulat ke dalam pelbagai itu. 357 00:17:47,460 --> 00:17:53,470 Jadi sekarang ini adalah sangat, sangat, sangat corak biasa yang akan pada satu ketika 358 00:17:53,470 --> 00:17:54,680 menjadi memori otot. 359 00:17:54,680 --> 00:17:56,710 Jadi int i sama dengan 0. 360 00:17:56,710 --> 00:17:57,940 i kurang daripada n. 361 00:17:57,940 --> 00:18:01,850 i plus plus. 362 00:18:01,850 --> 00:18:05,790 Kurungan umur i sama GetInt. 363 00:18:05,790 --> 00:18:15,100 >> Jadi ini untuk gelung, format ini, anda perlu menjadi sangat digunakan untuk. 364 00:18:15,100 --> 00:18:20,010 Jadi ini adalah umumnya bagaimana kita akan melelar hampir mana-mana lokasi. 365 00:18:20,010 --> 00:18:23,690 Sekarang notis seperti ini menjelaskan mengapa dari awal 366 00:18:23,690 --> 00:18:29,870 kami tidak mempunyai untuk gelung pergi untuk int i sama dengan 1, i kurang daripada atau sama dengan 10. 367 00:18:29,870 --> 00:18:34,200 Ini kerana bermula dari sifar membuat kerja-kerja ini dengan baik dengan pameran. 368 00:18:34,200 --> 00:18:36,270 Jadi tatasusunan adalah sifar diindeks. 369 00:18:36,270 --> 00:18:40,360 Jika pelbagai ini adalah panjang 4, indeks 0 hingga 3. 370 00:18:40,360 --> 00:18:42,880 >> Jadi melalui pertama lelaran ini untuk gelung 371 00:18:42,880 --> 00:18:49,930 kita akan dapat menetapkan umur kurungan 0 sama dengan panggilan untuk GetInt. 372 00:18:49,930 --> 00:18:52,440 Jadi apa sahaja yang saya telah untuk memasuki pada keyboard. 373 00:18:52,440 --> 00:18:56,970 Dalam pas kedua, kami menetapkan age1 sama dengan GetInt. 374 00:18:56,970 --> 00:18:58,230 Pas Ketiga, age2. 375 00:18:58,230 --> 00:18:59,880 Age3 pas akhir. 376 00:18:59,880 --> 00:19:05,750 Oleh itu, jika dalam laluan pertama gelung Saya masukkan nombor 4 pada papan kekunci, 377 00:19:05,750 --> 00:19:07,740 maka kita akan memasukkan 4 di sini. 378 00:19:07,740 --> 00:19:11,470 Jika pada lulus kedua saya masukkan 50, kita akan meletakkan 50 di sini. 379 00:19:11,470 --> 00:19:15,180 Pada lulus ketiga saya mungkin masukkan negatif 1, -1, 380 00:19:15,180 --> 00:19:21,810 dan akhirnya jika saya masukkan 0-- dan sekarang ingat bahawa ini adalah indeks tiga. 381 00:19:21,810 --> 00:19:25,350 >> Setelah kami kembali gelung, i adalah akan incremented hingga 4. 382 00:19:25,350 --> 00:19:27,770 i tidak lagi kurang daripada n, yang 4. 383 00:19:27,770 --> 00:19:29,840 Dan kita keluar daripada gelung. 384 00:19:29,840 --> 00:19:32,578 Jadi apa yang akan menjadi salah dengan ini? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [Didengar]? 387 00:19:38,729 --> 00:19:39,604 PENONTON: [didengar] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> Ya. 390 00:19:46,400 --> 00:19:51,550 Jadi array hanya mempunyai empat tempat, yang bermakna sebagai indeks 0 hingga 3. 391 00:19:51,550 --> 00:19:55,630 Jadi, jika ini berlaku, saya akan mengambil nilai 4 pada satu ketika. 392 00:19:55,630 --> 00:20:00,910 umur kurungan 4 akan menetapkan apa sahaja yang berlaku untuk menjadi di sini 393 00:20:00,910 --> 00:20:02,920 dengan apa yang saya katakan, masukkan 6. 394 00:20:02,920 --> 00:20:05,010 Yang akan menetapkan ini kepada 6. 395 00:20:05,010 --> 00:20:06,560 >> Tetapi kita tidak tahu apa yang di sini. 396 00:20:06,560 --> 00:20:08,836 Ini bukan memori bahawa kita mempunyai akses kepada. 397 00:20:08,836 --> 00:20:10,710 Jadi, jika anda ingat dari kuliah yang lepas, 398 00:20:10,710 --> 00:20:14,350 beliau telah mencetak nilai Zamyla dan pada satu ketika dia memukul segmentasi ini 399 00:20:14,350 --> 00:20:17,990 kesalahan. Jadi, anda mungkin akan melihat banyak kesalahan segmentasi anda 400 00:20:17,990 --> 00:20:20,530 melaksanakan beberapa set masalah. 401 00:20:20,530 --> 00:20:24,950 Tetapi ini adalah salah satu cara di mana anda boleh menghadapi segmentasi yang 402 00:20:24,950 --> 00:20:28,540 kesalahan, apabila anda mula mengakses memori dalam cara yang anda tidak perlu. 403 00:20:28,540 --> 00:20:34,117 Oleh itu, kita tidak mempunyai akses kepada lokasi ini dan ini adalah bug. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> Jadi ini adalah lebih baik. 406 00:20:40,190 --> 00:20:45,820 Sekarang masih kecil isu dengan kod ini. 407 00:20:45,820 --> 00:20:50,720 Dan itu pada dasarnya bahawa kita masih terperangkap di empat pelajar. 408 00:20:50,720 --> 00:20:52,940 Sekarang jika saya mahu menggunakan lapan pelajar, OK. 409 00:20:52,940 --> 00:20:54,350 Ia bukan masalah besar. 410 00:20:54,350 --> 00:20:58,120 Saya boleh pergi dalam, menukar komen, dan menukar n. 411 00:20:58,120 --> 00:20:59,760 Sekarang ini akan bekerja dengan lapan pelajar. 412 00:20:59,760 --> 00:21:02,190 Jika saya menyusun ini dan menjalankan ini, ia akan menunjukkan me-- 413 00:21:02,190 --> 00:21:07,870 ia akan meminta integer selama lapan pelajar dan ia hanya akan berfungsi. 414 00:21:07,870 --> 00:21:11,850 Tetapi ia adalah kurang daripada yang ideal untuk perlu susun semula program ini setiap kali 415 00:21:11,850 --> 00:21:15,960 Saya ingin menukar bilangan pelajar yang saya ingin memasuki peringkat umur untuk. 416 00:21:15,960 --> 00:21:22,990 >> Jadi peningkatan muktamad mengenai ini, seperti yang kita akan lihat sini-- kami 417 00:21:22,990 --> 00:21:26,177 akan meminta jumlah orang. 418 00:21:26,177 --> 00:21:28,010 Di sini kita mempunyai bilangan yang orang di bilik-bilik 419 00:21:28,010 --> 00:21:29,880 atau mana-mana peringkat umur orang di dalam bilik. 420 00:21:29,880 --> 00:21:33,300 Tetapi kita akan meminta jumlah orang di dalam bilik daripada pengguna. 421 00:21:33,300 --> 00:21:36,171 Jadi ini adalah sama-buat ketika yang tepat gelung yang kita lihat sebelum ini. 422 00:21:36,171 --> 00:21:37,920 Ia adalah sama do-gelung while bahawa anda 423 00:21:37,920 --> 00:21:40,050 boleh melaksanakan pada masalah yang ditetapkan. 424 00:21:40,050 --> 00:21:43,102 Jadi selagi mereka memasuki n kurang daripada 1, 425 00:21:43,102 --> 00:21:45,310 jadi tidak mempunyai untuk menjadi di kurangnya satu orang di dalam bilik. 426 00:21:45,310 --> 00:21:47,407 Selagi mereka memasuki n kurang daripada 1, 427 00:21:47,407 --> 00:21:48,990 maka kita akan terus bertanya lagi. 428 00:21:48,990 --> 00:21:50,906 Sila masukkan nombor yang orang di dalam bilik. 429 00:21:50,906 --> 00:21:53,550 Sekarang, apabila kita ada bilangan orang dalam room-- yang 430 00:21:53,550 --> 00:21:58,020 jadi saya boleh masuk bahawa terdapat 200 orang di dalam bilik ini. 431 00:21:58,020 --> 00:22:05,480 Kemudian turun di sini kita akan datang dan mengisytiharkan pelbagai saiz 200. 432 00:22:05,480 --> 00:22:10,220 Kami mengisytiharkan lokasi itu cukup besar untuk memegang 200 peringkat umur. 433 00:22:10,220 --> 00:22:15,370 Yang turun, ia adalah untuk gelung bahawa anda akan menjadi sangat digunakan untuk. 434 00:22:15,370 --> 00:22:19,490 Jadi iterating lebih pelbagai ini, menetapkan bagi setiap lokasi 435 00:22:19,490 --> 00:22:23,020 dalam array yang integer, dan maka akhirnya di sini kita berada 436 00:22:23,020 --> 00:22:28,340 hanya mendapat satu contoh iterating lebih array itu, bukan untuk menetapkan nilai-nilai, 437 00:22:28,340 --> 00:22:30,150 tetapi untuk mengakses nilai. 438 00:22:30,150 --> 00:22:33,810 >> Jadi di sini kita melihat bahawa kita katakan, setahun dari sekarang, 439 00:22:33,810 --> 00:22:40,470 orang% i akan menjadi tua% i tahun, di mana% pertama i ialah i campur 1. 440 00:22:40,470 --> 00:22:43,010 Jadi saya adalah pembolehubah indeks ini. 441 00:22:43,010 --> 00:22:49,420 Dan% i kedua akan menjadi nilai yang disimpan dalam pelbagai peringkat umur ditambah 1. 442 00:22:49,420 --> 00:22:54,217 Jadi plus 1 sahaja kerana kami saying-- ditambah 1, umur i tambah 1. 443 00:22:54,217 --> 00:22:57,050 Ditambah 1 hanya kerana kami berkata, setahun dari sekarang orang yang 444 00:22:57,050 --> 00:22:58,280 akan yang lalu. 445 00:22:58,280 --> 00:23:01,080 >> Jadi mengapa ini saya tambah 1? 446 00:23:01,080 --> 00:23:04,064 Mengapa kita mempunyai campur 1 di sana? 447 00:23:04,064 --> 00:23:04,564 Yeah. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 Ya. 450 00:23:07,930 --> 00:23:10,510 Jadi ingat tatasusunan adalah sifar diindeks. 451 00:23:10,510 --> 00:23:14,840 Jadi, jika kita mencetak ini keluar untuk seseorang untuk hanya membaca output, 452 00:23:14,840 --> 00:23:19,380 maka mungkin mereka mahu melihat sesuatu seperti orang satu, orang nombor satu, 453 00:23:19,380 --> 00:23:21,160 akan berusia 20 tahun. 454 00:23:21,160 --> 00:23:23,570 Bilangan orang dua akan berusia 15 tahun. 455 00:23:23,570 --> 00:23:27,420 Mereka tidak mahu melihat orang nombor sifar ialah 15 tahun. 456 00:23:27,420 --> 00:23:36,460 >> Jadi menyusun ini dan hanya melihat apa yang ia kelihatan like-- Buat beberapa ruang. 457 00:23:36,460 --> 00:23:43,560 Membuat peringkat umur menyusun. 458 00:23:43,560 --> 00:23:45,080 Running peringkat umur. 459 00:23:45,080 --> 00:23:46,580 Kita melihat beberapa orang di dalam bilik. 460 00:23:46,580 --> 00:23:48,850 Jadi saya akan mengatakan terdapat tiga orang di dalam bilik. 461 00:23:48,850 --> 00:23:54,000 Usia nombor satu orang, katakan 15, 20, 25. 462 00:23:54,000 --> 00:23:59,680 Dan sekarang saya akan mengatakan satu tahun dari kini mereka akan menjadi 16, 21, 26. 463 00:23:59,680 --> 00:24:02,900 Mari kita lihat bahawa ini bekerja dengan yang n yang tidak sama dengan 3. 464 00:24:02,900 --> 00:24:07,940 Jadi, jika saya mengatakan beberapa orang adalah 5, satu, dua, tiga, dua, satu, setahun dari sekarang 465 00:24:07,940 --> 00:24:11,170 mereka akan menjadi dua, tiga, berusia empat, tiga, dua tahun. 466 00:24:11,170 --> 00:24:16,500 Jadi saya boleh hanya sebagai mudah telah n menjadi 10,000. 467 00:24:16,500 --> 00:24:21,270 Sekarang saya akan duduk di sini untuk tempoh yang agak seketika memasuki peringkat umur, tetapi ia berfungsi. 468 00:24:21,270 --> 00:24:26,000 >> Oleh sebab itu dalam ingatan suatu tempat kita mempunyai pelbagai saiz 10,000, 469 00:24:26,000 --> 00:24:28,830 jadi akhirnya 40000 bait, kerana ada 470 00:24:28,830 --> 00:24:31,222 empat bait bagi setiap daripada mereka integer. 471 00:24:31,222 --> 00:24:33,180 Jadi ada pelbagai saiz 10,000 di mana kita boleh 472 00:24:33,180 --> 00:24:36,201 menyimpan peringkat umur dari orang-orang 10,000 orang. 473 00:24:36,201 --> 00:24:36,700 Baiklah. 474 00:24:36,700 --> 00:24:40,070 Soalan tentang apa-apa ini? 475 00:24:40,070 --> 00:24:41,892 Yeah. 476 00:24:41,892 --> 00:24:43,350 Bagaimana jika anda memberikan nombor negatif? 477 00:24:43,350 --> 00:24:44,870 Mari kita lihat apa yang berlaku. 478 00:24:44,870 --> 00:24:49,320 Jadi, dalam beberapa case-- tertentu ini orang di dalam bilik itu, satu negatif. 479 00:24:49,320 --> 00:24:52,580 Ia ditolak itu, kerana di sini kita berlaku 480 00:24:52,580 --> 00:24:57,180 yang akan mengendalikan hakikat bahawa jika n kurang daripada satu kita akan tanya lagi. 481 00:24:57,180 --> 00:25:01,780 Jika anda cuba untuk mengisytiharkan pelbagai saiz negatif, 482 00:25:01,780 --> 00:25:03,950 ia secara amnya tidak berfungsi. 483 00:25:03,950 --> 00:25:05,570 >> Jadi mari kita cuba. 484 00:25:05,570 --> 00:25:08,000 Mari kita mengabaikan apa sahaja nilai mereka input untuk n 485 00:25:08,000 --> 00:25:10,571 dan hanya mengatakan umur int satu negatif. 486 00:25:10,571 --> 00:25:12,410 Mari kita lihat jika ia juga menyusun. 487 00:25:12,410 --> 00:25:14,100 Saya tak pasti. 488 00:25:14,100 --> 00:25:14,920 No. 489 00:25:14,920 --> 00:25:18,280 Jadi peringkat umur diisytiharkan sebagai pelbagai dengan saiz yang negatif. 490 00:25:18,280 --> 00:25:22,540 Jadi pendahuluan ia mengiktiraf array tidak boleh mempunyai saiz negatif dan menolaknya. 491 00:25:22,540 --> 00:25:26,840 Sekarang, jika kita tidak mengendalikan ini gelung do-while dengan betul, 492 00:25:26,840 --> 00:25:28,810 jika kita tidak memeriksa jika n kurang daripada 1-- 493 00:25:28,810 --> 00:25:32,690 katakan kita hanya tidak mempunyai ini di semua 494 00:25:32,690 --> 00:25:35,940 dan sebaliknya kita hanya merebut integer. 495 00:25:35,940 --> 00:25:40,710 Tidak kira apa integer iaitu, kita mengisytiharkan pelbagai saiz itu. 496 00:25:40,710 --> 00:25:44,250 >> Jadi pengkompil tidak boleh mungkin mengadu sekarang. 497 00:25:44,250 --> 00:25:48,780 Jika saya menyusun this-- jadi ia tidak boleh mengadu, 498 00:25:48,780 --> 00:25:51,480 kerana ia tidak boleh tahu bahawa saya akan memasukkan nombor negatif, 499 00:25:51,480 --> 00:25:52,550 yang mungkin tidak sah. 500 00:25:52,550 --> 00:25:54,633 Untuk semua ia tahu, saya mungkin masukkan nombor yang positif, 501 00:25:54,633 --> 00:25:56,000 yang sah. 502 00:25:56,000 --> 00:26:01,090 Jadi saya bayangkan jika saya memasuki negatif 1 orang di dalam bilik, segmentasi bersalah. 503 00:26:01,090 --> 00:26:06,040 >> Jadi, OK. 504 00:26:06,040 --> 00:26:13,160 Jadi mari kita menambah kembali ini hanya simpan apa yang asalnya adalah. 505 00:26:13,160 --> 00:26:15,640 Oleh itu, peringkat umur. 506 00:26:15,640 --> 00:26:18,120 Sekarang, jika saya mahu mencuba negatif age-- jadi mari kita 507 00:26:18,120 --> 00:26:19,710 berkata terdapat lima orang di dalam bilik. 508 00:26:19,710 --> 00:26:23,180 Umur orang nombor satu adalah negatif 4, orang tiga 509 00:26:23,180 --> 00:26:26,500 adalah sifar, orang three-- OK. 510 00:26:26,500 --> 00:26:29,850 Jadi di sini, setahun dari sekarang, bilangan orang akan menjadi negatif berumur 3 tahun. 511 00:26:29,850 --> 00:26:32,830 Jadi mungkin tidak masuk akal. 512 00:26:32,830 --> 00:26:37,220 Tetapi itu hanya kerana mencari pada kod semua yang kita lakukan 513 00:26:37,220 --> 00:26:40,260 meminta GetInt. 514 00:26:40,260 --> 00:26:44,110 >> Sekarang, jika kita telah mempunyai Fungsi GetPositiveInt 515 00:26:44,110 --> 00:26:49,690 atau kita baru sahaja hanya melakukan ini jenis gelung sementara sama di bawah sana, 516 00:26:49,690 --> 00:26:52,340 maka ini akan bekerja dengan sempurna denda. 517 00:26:52,340 --> 00:26:54,200 Tetapi dalam khusus ini kes, kita tidak melakukan 518 00:26:54,200 --> 00:26:57,772 berada pengendalian nilai-nilai negatif. 519 00:26:57,772 --> 00:26:59,147 Lain-lain soalan tentang tatasusunan? 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 OKAY. 522 00:27:03,250 --> 00:27:09,380 >> Jadi, sekarang kita telah lihat tatasusunan. 523 00:27:09,380 --> 00:27:12,500 Dan kita akan perlu menggunakan ini kerana hujah-hujah baris arahan. 524 00:27:12,500 --> 00:27:14,680 Jadi dalam masalah menetapkan two-- Saya tahu ramai daripada anda 525 00:27:14,680 --> 00:27:18,040 mungkin masih boleh bekerja di set masalah satu, tetapi masalah menetapkan dua akan datang. 526 00:27:18,040 --> 00:27:22,260 Dalam masalah menetapkan dua, anda akan perlu berurusan dengan tali, tatasusunan 527 00:27:22,260 --> 00:27:23,950 dan hujah-hujah baris arahan. 528 00:27:23,950 --> 00:27:26,270 >> Jadi apakah hujah baris arahan? 529 00:27:26,270 --> 00:27:29,570 Sekarang, anda boleh melihat ke bawah di sini sedikit teaser untuk betul-betul apa yang 530 00:27:29,570 --> 00:27:30,950 akan berlaku. 531 00:27:30,950 --> 00:27:32,950 Kita lihat int utama, argc inc, kurungan tali argv. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 Jadi pertama mari kita cuba untuk mentafsir apa yang yang cuba katakan. 534 00:27:38,130 --> 00:27:40,800 Sekarang, OK. 535 00:27:40,800 --> 00:27:44,637 >> Jadi pada baris arahan anda harus membiasakan diri dengan beberapa arahan ini 536 00:27:44,637 --> 00:27:48,580 sekarang, dan anda mungkin menjalankan cd di terminal sebelum ini. 537 00:27:48,580 --> 00:27:52,100 Jadi, jika kita katakan cd pset1, anda tahu bahawa yang sepatutnya 538 00:27:52,100 --> 00:27:55,050 menjadi berubah ke dalam direktori pset1 itu. 539 00:27:55,050 --> 00:27:59,120 >> Sekarang notis bahawa anda tidak pernah bertulis program seperti ini sebelum ini. 540 00:27:59,120 --> 00:28:03,120 Setiap program yang anda telah ditulis, anda akan berjalan, berkata, dot mengurangkan Mario, 541 00:28:03,120 --> 00:28:06,779 dot mengurangkan tamak, dan kemudian ia mungkin meminta anda untuk input. 542 00:28:06,779 --> 00:28:08,570 Sekarang, itu bukan apa yang direktori perubahan tidak. 543 00:28:08,570 --> 00:28:12,770 Apabila anda menjalankan cd, ia tidak kemudian berkata, mana direktori yang anda ingin cd ke? 544 00:28:12,770 --> 00:28:17,200 Sebaliknya, anda hanya berkata, cd pset1, dan ia hanya pergi ke dalam direktori pset1 itu. 545 00:28:17,200 --> 00:28:20,430 >> Jadi begitu juga kita mempunyai contoh-contoh lain. 546 00:28:20,430 --> 00:28:21,540 membuat hello. 547 00:28:21,540 --> 00:28:25,760 Apabila anda menjalankan membuat, ia tidak kemudian berkata, mana program yang anda ingin membuat? 548 00:28:25,760 --> 00:28:29,620 Anda hanya berkata, pada baris arahan membuat hello. 549 00:28:29,620 --> 00:28:31,060 >> Move adalah contoh yang lain. 550 00:28:31,060 --> 00:28:34,840 Yang ini kita sedang bergerak di mario.c memfailkan naik satu direktori. 551 00:28:34,840 --> 00:28:38,060 Jadi sekarang kita tahu dengan contoh ini kita benar-benar lulus dua hujah. 552 00:28:38,060 --> 00:28:42,090 Ada mario.c sebagai hujah pertama, dan dot dot adalah hujah kedua. 553 00:28:42,090 --> 00:28:46,140 Dan kemudian apabila anda membuka warung membuat, anda melihat arahan yang benar-benar panjang garis ini-- 554 00:28:46,140 --> 00:28:50,580 arahan yang benar-benar panjang dicetak pada baris arahan. 555 00:28:50,580 --> 00:28:53,590 Supaya lama command-- ini adalah hanya sebahagian pendek daripada itu, 556 00:28:53,590 --> 00:28:56,090 tetapi kini kami mempunyai tiga hujah-hujah baris arahan. 557 00:28:56,090 --> 00:28:59,750 Dot dash sifar, hello, dan hello.c. 558 00:28:59,750 --> 00:29:03,497 >> Jadi ini adalah baris arahan hujah, hujah-hujah 559 00:29:03,497 --> 00:29:05,580 bahawa anda lulus di baris arahan supaya ia 560 00:29:05,580 --> 00:29:08,680 tidak perlu digesa apabila anda menjalankan program ini. 561 00:29:08,680 --> 00:29:13,090 Ia akan mengecewakan jika semasa anda berlari dilafaz ia berkata, "OK, 562 00:29:13,090 --> 00:29:15,630 yang program-- yang fail yang anda menyusun? 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 Apa bendera akan anda suka untuk masuk? dash o. 565 00:29:19,440 --> 00:29:21,190 Apakah yang ingin anda fail yang hendak dipanggil? 566 00:29:21,190 --> 00:29:21,690 hello. 567 00:29:21,690 --> 00:29:25,290 Tidak, anda hanya menjalankan dilafaz melontarkan o hello hello.c. 568 00:29:25,290 --> 00:29:28,820 >> Jadi melihat kembali pada ini. 569 00:29:28,820 --> 00:29:32,920 Sekarang argc argc-- adalah tuduhan hujah. 570 00:29:32,920 --> 00:29:36,620 Ia jumlah baris arahan hujah-hujah yang dimasukkan pada baris arahan. 571 00:29:36,620 --> 00:29:39,720 Nah, argv-- teknikal v bermaksud vektor, 572 00:29:39,720 --> 00:29:41,460 yang pada asasnya bermakna pelbagai. 573 00:29:41,460 --> 00:29:42,680 Tetapi, anda boleh mengabaikan itu. 574 00:29:42,680 --> 00:29:47,540 Argv-- kita ada rentetan argv, supaya kurungan tali argv. 575 00:29:47,540 --> 00:29:50,150 Jadi ini adalah satu lagi bentuk kurungan anda tidak pernah melihat sebelum ini. 576 00:29:50,150 --> 00:29:52,300 Kurungan itu, kita telah melihat notasi apabila kita telah berkata, 577 00:29:52,300 --> 00:29:53,970 seperti, rentetan s sama Zamyla. 578 00:29:53,970 --> 00:29:56,910 s kurungan 0 mengakses Z. watak 579 00:29:56,910 --> 00:30:00,720 >> Kami juga telah melihat kurungan apabila kita kata umur int braket 5. 580 00:30:00,720 --> 00:30:03,160 Yang diisytiharkan pelbagai saiz 5. 581 00:30:03,160 --> 00:30:06,280 Jadi di sini adalah versi daripada kurungan kami tidak dilihat sebelum ini. 582 00:30:06,280 --> 00:30:09,630 Jadi ini jenis tali argv yang akan benar-benar biasa 583 00:30:09,630 --> 00:30:12,050 bahawa ia hanya akan menjadi tali. 584 00:30:12,050 --> 00:30:14,520 Sekarang kurungan menunjukkan bahawa ini adalah pelbagai. 585 00:30:14,520 --> 00:30:19,920 Jadi kurungan tali argv cara argv yang pelbagai rentetan. 586 00:30:19,920 --> 00:30:22,540 Sekarang teknikal rentetan adalah pelbagai watak. 587 00:30:22,540 --> 00:30:26,400 Jadi ini kini array daripada pelbagai watak. 588 00:30:26,400 --> 00:30:31,490 Tetapi ia adalah lebih mudah untuk berfikir tentang ini kerana hanya pelbagai tali. 589 00:30:31,490 --> 00:30:34,900 >> Jadi mengapa mungkin kurungan kosong? 590 00:30:34,900 --> 00:30:38,170 Seperti, mengapa tidak boleh kita katakan, 5 kurungan, pendakap n? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 Yeah. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 Yeah. 595 00:30:44,230 --> 00:30:46,396 Kita tidak tahu berapa ramai input ada akan menjadi. 596 00:30:46,396 --> 00:30:53,560 Jadi, jika kita melihat contoh yang dilafaz, kita katakan dilafaz dash o hello hello.c. 597 00:30:53,560 --> 00:30:56,710 Dalam kes ini, tidak berlaku menjadi tiga hujah baris arahan. 598 00:30:56,710 --> 00:31:00,522 Dan sebagainya brackets-- yang kita akan melihat dalam kedua ia tidak akan menjadi tiga. 599 00:31:00,522 --> 00:31:01,730 Secara teknikal akan menjadi empat. 600 00:31:01,730 --> 00:31:04,030 Tetapi dalam kurungan, kami akan berkata, terdapat tiga. 601 00:31:04,030 --> 00:31:08,220 Tetapi sekarang kita melihat langkah mario.c dot dot, kurungan 602 00:31:08,220 --> 00:31:09,760 kita mahu meletakkan dua di dalamnya. 603 00:31:09,760 --> 00:31:12,884 >> Dan terdapat banyak arahan yang mempunyai beberapa pembolehubah baris arahan 604 00:31:12,884 --> 00:31:13,620 hujah. 605 00:31:13,620 --> 00:31:17,430 Jadi apa versi ini notasi kurungan menunjukkan 606 00:31:17,430 --> 00:31:20,820 adalah bahawa argv adalah pelbagai tali. 607 00:31:20,820 --> 00:31:24,360 Tetapi kita tidak tahu berapa ramai rentetan dalam pelbagai itu. 608 00:31:24,360 --> 00:31:27,090 Dan bagaimana kita kemudian mengetahui bagaimana rentetan ramai yang dalam array? 609 00:31:27,090 --> 00:31:28,870 Itulah titik argc keseluruhan. 610 00:31:28,870 --> 00:31:32,300 argc memberitahu kita berapa lama argv adalah. 611 00:31:32,300 --> 00:31:36,500 >> Jadi perkara terakhir yang perlu diingat adalah bahawa, secara teknikal, 612 00:31:36,500 --> 00:31:40,820 arahan itu sendiri yang diambil kira sebagai salah satu daripada hujah-hujah baris arahan. 613 00:31:40,820 --> 00:31:45,330 Jadi cd pset1, terdapat dua hujah-hujah baris arahan. 614 00:31:45,330 --> 00:31:50,260 Program itu sendiri, cd, dan kemudian hujah bahagian yang sebenar itu, pset1. 615 00:31:50,260 --> 00:31:54,490 Apa-apa program yang anda telah menulis setakat ini telah mempunyai satu baris arahan argument-- dot 616 00:31:54,490 --> 00:31:55,320 mengurangkan Mario. 617 00:31:55,320 --> 00:31:57,350 Itulah satu-satunya hujah baris arahan. 618 00:31:57,350 --> 00:32:00,900 >> Jadi sekarang melihat dilafaz melontarkan o hello hello.c. 619 00:32:00,900 --> 00:32:01,905 Jadi apa argc? 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 Jadi argc ialah 4. 623 00:32:08,140 --> 00:32:12,140 Dilafaz, jadi argv kurungan 0 adalah dilafaz. 624 00:32:12,140 --> 00:32:15,630 argv kurungan 1 adalah dash 0. 625 00:32:15,630 --> 00:32:21,870 argv kurungan 2 adalah hello, dan argv kurungan 3 adalah hello.c. 626 00:32:21,870 --> 00:32:26,813 OK, jadi soalan mengenai perkara ini, dan kemudian kami akan lihat beberapa contoh perancangan. 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> OKAY. 629 00:32:30,480 --> 00:32:36,260 Oleh itu, kita akan lihat pada hello3.c. 630 00:32:36,260 --> 00:32:41,890 Jadi ini perlu biasa dari salah satu daripada c contoh pertama 631 00:32:41,890 --> 00:32:45,800 kita mempunyai mana kita hanya akan berkata, hello dunia, tetapi sekarang ini adalah lebih umum. 632 00:32:45,800 --> 00:32:52,300 Jadi di sini kita katakan hello garis miring n argv kurungan% s 1. 633 00:32:52,300 --> 00:32:57,440 Notice-- jadi sehingga ketika ini, ini adalah apa fail template saya telah kelihatan seperti. 634 00:32:57,440 --> 00:33:01,800 Saya mempunyai int main (tidak sah), dan kemudian saya akan melakukan sesuatu dalam fungsi utama. 635 00:33:01,800 --> 00:33:05,100 Sekarang sebaliknya, sebaik sahaja kami mula berurusan dengan hujah-hujah baris arahan, 636 00:33:05,100 --> 00:33:07,890 kita perlu menyatakan suatu bentuk yang berbeza utama. 637 00:33:07,890 --> 00:33:11,930 >> Jadi melihat hello3 lagi, utama akan 638 00:33:11,930 --> 00:33:15,990 mengambil dua hujah sekarang-- int argc, bilangan hujah baris arahan, 639 00:33:15,990 --> 00:33:20,970 dan tali argv kurungan, sebenar tali dimasukkan pada baris arahan. 640 00:33:20,970 --> 00:33:26,560 Jadi saya akan mengubahnya Templat untuk mencerminkan hakikat itu. 641 00:33:26,560 --> 00:33:29,060 Sekarang setiap kali anda menulis program, jika tidak 642 00:33:29,060 --> 00:33:33,720 perlu mengambil sebarang baris perintah hujah, maka hanya menggunakan int main (tidak sah). 643 00:33:33,720 --> 00:33:37,070 Tetapi sekarang apabila anda menulis program hujah baris arahan, yang 644 00:33:37,070 --> 00:33:40,350 anda akan lakukan untuk masalah menetapkan two-- jadi sekarang bahawa anda menjalankan 645 00:33:40,350 --> 00:33:42,630 program-program yang perlu hujah baris arahan, 646 00:33:42,630 --> 00:33:45,250 anda perlu mempunyai utama borang ini. 647 00:33:45,250 --> 00:33:51,290 >> Jadi sini-- ini adalah penggunaan besar daripada hujah baris arahan. 648 00:33:51,290 --> 00:33:54,100 Jadi mencetak argv 1. 649 00:33:54,100 --> 00:33:59,180 OK jadi mari kita menyusun dan menjalankan program ini. 650 00:33:59,180 --> 00:34:02,440 Membuat hello3. 651 00:34:02,440 --> 00:34:03,570 Menyusun. 652 00:34:03,570 --> 00:34:06,870 Dot mengurangkan hello3. 653 00:34:06,870 --> 00:34:08,920 Dan katakan, "Rob." 654 00:34:08,920 --> 00:34:10,760 Hello Rob. 655 00:34:10,760 --> 00:34:14,940 Jika saya katakan, "hello Maria," hello Maria. 656 00:34:14,940 --> 00:34:15,719 Hello Maria. 657 00:34:15,719 --> 00:34:18,639 Hannah masih mengatakan, "hello Maria, "kerana saya tidak 658 00:34:18,639 --> 00:34:21,340 melakukan apa-apa dengan argv kami 2. 659 00:34:21,340 --> 00:34:22,590 Argv 2 kini akan menjadi "Hannah." 660 00:34:22,590 --> 00:34:25,030 Argc akan menjadi 3. 661 00:34:25,030 --> 00:34:27,735 Bagaimana jika saya melakukan ini? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 Jadi hello null. 664 00:34:34,679 --> 00:34:38,760 >> Beliau secara ringkas menyentuh hakikat itu, dari segi teknikal, GetString 665 00:34:38,760 --> 00:34:42,429 aku bercuti batal, tetapi kita akan mendapat banyak lagi ke dalam apa null sebenarnya. 666 00:34:42,429 --> 00:34:47,449 Tetapi mengambil ia sebagai satu perkara fakta bahawa tiada umumnya tidak baik. 667 00:34:47,449 --> 00:34:50,179 Kami melakukan sesuatu yang salah jika ia mencetak "hello null." 668 00:34:50,179 --> 00:34:52,179 Dan sebab itu kita lakukan sesuatu yang salah is-- baik, 669 00:34:52,179 --> 00:34:56,179 apabila saya berlari dot mengurangkan hello3, argc adalah 1. 670 00:34:56,179 --> 00:34:59,680 Ini bermakna panjang argv adalah 1. 671 00:34:59,680 --> 00:35:05,110 Jika array adalah panjang 1, satu-satunya indeks sah adalah sifar. 672 00:35:05,110 --> 00:35:08,550 Dan sebagainya di sini argv 1 adalah di luar julat pelbagai ini. 673 00:35:08,550 --> 00:35:13,410 Ia adalah sama dengan sebelum ini apabila saya cuba untuk menyimpan 6 di luar akhir array. 674 00:35:13,410 --> 00:35:18,100 Jadi, saya cuba untuk mengakses sesuatu di luar tuduhan argv, 675 00:35:18,100 --> 00:35:21,340 dan kami mendapat null. 676 00:35:21,340 --> 00:35:24,360 >> Jadi versi yang lebih baik daripada ini, satu peningkatan, 677 00:35:24,360 --> 00:35:27,010 secara jelas memeriksa argc. 678 00:35:27,010 --> 00:35:33,580 Jadi, jika argc bersamaan 2, ini bermakna kita berlari sesuatu seperti dot mengurangkan hello3 Rob. 679 00:35:33,580 --> 00:35:36,840 Dan ia akan mencetak "hello Rob." 680 00:35:36,840 --> 00:35:39,850 Jika argc tidak sama 2, maka ia hanya akan 681 00:35:39,850 --> 00:35:42,560 untuk mengabaikan apa sahaja yang anda meletakkan di hujah baris arahan 682 00:35:42,560 --> 00:35:43,960 sebagai hujah baris arahan. 683 00:35:43,960 --> 00:35:47,168 Atau jika anda tidak meletakkan apa-apa sama sekali, ia hanya akan mengabaikan itu dan hanya berkata, 684 00:35:47,168 --> 00:35:47,960 "hello kamu." 685 00:35:47,960 --> 00:35:51,490 >> Jadi menyusun ini. 686 00:35:51,490 --> 00:35:54,500 Membuat hello4. 687 00:35:54,500 --> 00:35:56,790 Dan berjalan hello4. 688 00:35:56,790 --> 00:36:00,010 Berjalan dengan cara ini, apa yang perlu dicetak? 689 00:36:00,010 --> 00:36:01,330 "Hello kamu." 690 00:36:01,330 --> 00:36:02,810 Hello anda. 691 00:36:02,810 --> 00:36:05,870 Bagaimana pula hello4 Rob? 692 00:36:05,870 --> 00:36:06,950 "Hello Rob." 693 00:36:06,950 --> 00:36:10,580 Dan akhirnya, hello Rob Maria hanya "hello" sekali lagi, 694 00:36:10,580 --> 00:36:13,677 kerana anda tidak benar-benar masukkan sesuatu yang ia harapkan. 695 00:36:13,677 --> 00:36:15,510 Anda masukkan lebih banyak nama daripada ia boleh mengendalikan, 696 00:36:15,510 --> 00:36:19,500 jadi ia hanya gagal untuk hello anda tingkah laku. 697 00:36:19,500 --> 00:36:23,040 Jadi soalan mengenai perkara ini? 698 00:36:23,040 --> 00:36:26,290 Atau hujah-hujah baris arahan? 699 00:36:26,290 --> 00:36:28,690 >> OK, jadi mengambil lihat pada beberapa lagi contoh menggunakan 700 00:36:28,690 --> 00:36:34,230 baris arahan arguments-- pertama kami telah argv dash 1 dot c. 701 00:36:34,230 --> 00:36:38,510 Jadi komen yang memberikan apa yang program ini harus lakukan. 702 00:36:38,510 --> 00:36:42,460 Tetapi notis sekarang-- ini untuk gelung, ini sepadan dengan corak yang tepat 703 00:36:42,460 --> 00:36:43,390 Yang saya katakan sebelum ini. 704 00:36:43,390 --> 00:36:46,240 Kami hanya berada menggunakan argc bukannya n. 705 00:36:46,240 --> 00:36:48,880 Sekarang argc adalah benar-benar n. 706 00:36:48,880 --> 00:36:51,260 Ia panjang array argv. 707 00:36:51,260 --> 00:36:59,600 Jadi, adakah iterating lebih argv lokasi printf-ing setiap nilai argv. 708 00:36:59,600 --> 00:37:04,730 >> Jadi, jika saya membuat ini. 709 00:37:04,730 --> 00:37:08,232 Membuat argv 1. 710 00:37:08,232 --> 00:37:09,940 Ia menyusun. 711 00:37:09,940 --> 00:37:11,620 Dot mengurangkan argv 1. 712 00:37:11,620 --> 00:37:15,530 Hanya berjalan ini, ia cetakan dot slash argv 1 713 00:37:15,530 --> 00:37:18,500 kerana itu adalah satu-satunya baris arahan argument-- nama program. 714 00:37:18,500 --> 00:37:22,080 Akan sentiasa ada di least-- argc tidak boleh kurang daripada satu, 715 00:37:22,080 --> 00:37:25,910 kerana tidak akan sentiasa sekurang-kurangnya nama-program untuk berjalan. 716 00:37:25,910 --> 00:37:32,040 Jadi argv 1 Rob akan mencetak argv 1 dan kemudian pada baris baru "Rob." 717 00:37:32,040 --> 00:37:36,350 >> Jadi dalam lelaran pertama gelung ini, i adalah 0. 718 00:37:36,350 --> 00:37:39,090 Argv 0 adalah nama program. 719 00:37:39,090 --> 00:37:40,010 Dot mengurangkan argv 1. 720 00:37:40,010 --> 00:37:43,770 Dan kemudian argv 1 adalah pertama saya hujah baris arahan, iaitu Rob. 721 00:37:43,770 --> 00:37:45,920 Pada ketika ini, kami tidak sama dengan argc. 722 00:37:45,920 --> 00:37:48,210 Kami keluar daripada gelung dan kami sudah selesai. 723 00:37:48,210 --> 00:37:53,940 Jadi ini akan bekerja untuk sewenang-wenangnya beberapa hujah baris arahan. 724 00:37:53,940 --> 00:37:58,550 Perhatikan ia mencetak argv 0, argv 1, argv 2, argv 3, argv 4. 725 00:37:58,550 --> 00:38:00,150 Dan tidak ada argv 5. 726 00:38:00,150 --> 00:38:01,460 argc adalah bersamaan hingga 5. 727 00:38:01,460 --> 00:38:06,960 Jadi pada argc-- di i sama 5, kita keluar daripada gelung. 728 00:38:06,960 --> 00:38:07,950 OKAY. 729 00:38:07,950 --> 00:38:11,315 Jadi soalan mengenai bahawa sebelum kita melihat contoh yang lebih kompleks? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> Jadi argv 2. 732 00:38:16,860 --> 00:38:17,830 Baiklah. 733 00:38:17,830 --> 00:38:20,610 Oleh itu, kita masih percetakan hujah-hujah baris arahan. 734 00:38:20,610 --> 00:38:23,170 Tetapi kini melihat kita ada yang bersarang untuk gelung. 735 00:38:23,170 --> 00:38:24,670 Jadi apa yang ini buat? 736 00:38:24,670 --> 00:38:28,430 Jadi gelung pertama yang dilakukan apa yang ia lakukan sebelum ini. 737 00:38:28,430 --> 00:38:30,950 Kami masih menggelung lebih setiap hujah baris arahan, 738 00:38:30,950 --> 00:38:34,260 tetapi kini loop-- kedua ini kami telah juga dilihat sesuatu seperti ini sebelum ini. 739 00:38:34,260 --> 00:38:38,600 Apabila dia iterating lebih Zamyla mencetak Z-A-M-Y-L-A. 740 00:38:38,600 --> 00:38:44,816 Jadi ini gelung kedua untuk int j sama 0, n sama strlen argv kurungan i. 741 00:38:44,816 --> 00:38:49,170 >> Jadi mari kita mula-mula berfikir untuk the-- mari kita berjalan melalui. 742 00:38:49,170 --> 00:38:53,560 Mari kita berfikir apa yang komputer akan lakukan jika saya berlari program ini sebagai hanya dot 743 00:38:53,560 --> 00:38:56,030 mengurangkan argv dash 2. 744 00:38:56,030 --> 00:39:03,590 Jadi, jika saya berlari kod ini, maka argc akan menjadi sama dengan 1. 745 00:39:03,590 --> 00:39:07,050 Dan tali argv-- hanya ada akan menjadi salah satu indeks dalam argv, 746 00:39:07,050 --> 00:39:12,370 dan itu akan menjadi sama dengan dot mengurangkan argv 2-- nama program. 747 00:39:12,370 --> 00:39:19,170 >> OK, jadi sekarang saya sama dengan 0, i kurang daripada 1, i plus plus untuk int j sama dengan 0, 748 00:39:19,170 --> 00:39:23,880 n sama strlen argv kurungan 0, jadi dalam lelaran pertama gelung ini. argv 749 00:39:23,880 --> 00:39:27,250 kurungan 0 adalah slash dot argv 2. 750 00:39:27,250 --> 00:39:29,320 Jadi apa yang panjang tali itu? 751 00:39:29,320 --> 00:39:32,480 Nah, dot mengurangkan A-R-G-V dash 2. 752 00:39:32,480 --> 00:39:35,020 Jadi strlen itu akan 8. 753 00:39:35,020 --> 00:39:37,500 Jadi j sama dengan 0, n bersamaan 8. 754 00:39:37,500 --> 00:39:39,530 Selama j adalah kurang daripada 8, j ++. 755 00:39:39,530 --> 00:39:44,080 Dan dengan itu kita akan menjadi percetakan yang bersifat tunggal, yang 756 00:39:44,080 --> 00:39:47,350 adalah argv kurungan i braket j. 757 00:39:47,350 --> 00:39:49,826 >> Jadi satu-satunya i adalah sifar. 758 00:39:49,826 --> 00:39:51,700 Kita masih hanya mempunyai satu hujah baris arahan. 759 00:39:51,700 --> 00:39:53,890 Dalam bahawa lelaran pertama daripada untuk gelung, kami 760 00:39:53,890 --> 00:39:56,950 akan menjadi percetakan argv kurungan 0 kurungan 0. 761 00:39:56,950 --> 00:39:58,325 Dan kemudian j akan kenaikan. 762 00:39:58,325 --> 00:40:01,650 Dan kita akan percetakan argv kurungan 0 kurungan 1. 763 00:40:01,650 --> 00:40:04,150 Dan kemudian argv kurungan 0 kurungan 2. 764 00:40:04,150 --> 00:40:09,030 >> Jadi ini adalah pertemuan pertama kami array pelbagai dimensi. 765 00:40:09,030 --> 00:40:12,770 Ingat sebelum ini bahawa saya berkata argv yang secara teknikal 766 00:40:12,770 --> 00:40:15,950 pelbagai tatasusunan aksara. 767 00:40:15,950 --> 00:40:24,360 Jadi di sini jika saya berkata seperti rentetan s sama argv kurungan i, 768 00:40:24,360 --> 00:40:29,590 dan kemudian saya berkata, s kurungan j, ini akan mencapai perkara yang sama. 769 00:40:29,590 --> 00:40:31,960 Sekarang, anda telah melihat s kurungan j sebelum ini. 770 00:40:31,960 --> 00:40:36,680 Itu hanya mengakses j-ke- watak yang satu ini. 771 00:40:36,680 --> 00:40:48,010 Maka dengan ini, kami mendapat j-ke-watak i-ke argv. 772 00:40:48,010 --> 00:40:51,450 >> Jadi apa yang perlu akhirnya output ini? 773 00:40:51,450 --> 00:40:53,210 Membuat argv 2. 774 00:40:53,210 --> 00:40:54,730 Ia menyusun. 775 00:40:54,730 --> 00:40:56,340 Dot mengurangkan argv 2. 776 00:40:56,340 --> 00:41:03,790 "Rob Maria Hannah," dan memberikan kami beberapa bilik. 777 00:41:03,790 --> 00:41:07,050 Oleh itu, kita melihat bahawa ini adalah keluarkan dot pada baris sendiri dan slash 778 00:41:07,050 --> 00:41:08,920 pada baris sendiri dan pada baris sendiri. 779 00:41:08,920 --> 00:41:11,260 Ia mencetak setiap watak individu 780 00:41:11,260 --> 00:41:12,950 setiap hujah baris arahan. 781 00:41:12,950 --> 00:41:15,960 Dan kemudian di antara mereka, kerana barisan baru ini 782 00:41:15,960 --> 00:41:19,380 kami mencetak turun di sini, dalam antara mereka ia akan mencetak baris baru. 783 00:41:19,380 --> 00:41:24,540 >> Jadi ini adalah sama dengan melontarkan argv sebelum 1, 784 00:41:24,540 --> 00:41:26,459 yang dicetak setiap hujah baris arahan, 785 00:41:26,459 --> 00:41:28,500 tetapi sekarang kita mencetak hujah-hujah baris arahan 786 00:41:28,500 --> 00:41:31,950 dan kemudian iterating melalui setiap watak setiap hujah baris arahan 787 00:41:31,950 --> 00:41:35,400 untuk mendapatkan output ini. 788 00:41:35,400 --> 00:41:36,870 OKAY? 789 00:41:36,870 --> 00:41:40,570 Jadi soalan mengenai perkara ini? 790 00:41:40,570 --> 00:41:45,130 >> Satu perkara yang perlu diperhatikan adalah bahawa baris arahan arguments-- 791 00:41:45,130 --> 00:41:49,990 sehingga mereka dipisahkan oleh ruang sebagai anda secara semulajadi akan mengharapkan mereka untuk menjadi. 792 00:41:49,990 --> 00:41:53,050 Jadi rentetan boleh mempunyai ruang di dalamnya. 793 00:41:53,050 --> 00:41:57,380 Ia bukan super penting, tetapi jika saya mahu baris arahan hujah ketiga 794 00:41:57,380 --> 00:42:01,226 mempunyai ruang di dalamnya, maka saya boleh mengatakan sesuatu seperti ini. 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 OKAY? 797 00:42:05,550 --> 00:42:12,190 Jadi ini sekarang masih hanya mempunyai tiga baris arahan arguments-- baik 4. 798 00:42:12,190 --> 00:42:17,620 Dot mengurangkan argv dash 2, Rob, Maria dan Hannah Bloomberg. 799 00:42:17,620 --> 00:42:18,320 OKAY. 800 00:42:18,320 --> 00:42:19,310 Soalan-soalan mengenai perkara ini? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> Ada apa-apa yang istimewa tentang watak ruang. 803 00:42:24,894 --> 00:42:27,810 Ia hanya berlaku untuk menjadi bahawa baris arahan merawat aksara ruang 804 00:42:27,810 --> 00:42:29,226 bagaimana anda memisahkan setiap hujah. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 Baiklah. 807 00:42:33,000 --> 00:42:39,950 Oleh itu, maka set Masalah two-- anda akan menjadi 808 00:42:39,950 --> 00:42:43,240 melihat kriptografi rahsia utama. 809 00:42:43,240 --> 00:42:47,700 Jadi, sama dengan contoh yang kita lihat dari A Story Krismas, 810 00:42:47,700 --> 00:42:52,840 anda akan dapat melaksanakan beberapa algoritma bahawa, memandangkan mesej, 811 00:42:52,840 --> 00:42:55,560 anda akan dapat untuk menyulitkan mesej yang 812 00:42:55,560 --> 00:42:58,730 bahawa hanya seseorang yang mempunyai rahsia yang utama, dengan bahawa cincin decoder, 813 00:42:58,730 --> 00:43:01,090 akan dapat menyahsulit. 814 00:43:01,090 --> 00:43:04,839 >> Jadi itulah edisi standard. 815 00:43:04,839 --> 00:43:07,130 Anda akan dapat melaksanakan dua versi yang berbeza. 816 00:43:07,130 --> 00:43:09,620 Jika anda berlaku untuk melihat dengan di penggodam Edisi sekarang, 817 00:43:09,620 --> 00:43:12,600 kita akan memberi anda rentetan seperti ini, 818 00:43:12,600 --> 00:43:15,240 yang mewakili kata laluan disulitkan. 819 00:43:15,240 --> 00:43:19,990 Jadi matlamat anda adalah untuk memikirkan apa kata laluan yang dibuka adalah. 820 00:43:19,990 --> 00:43:26,950 Sekarang ini adalah benar-benar bagaimana kata laluan disimpan dalam banyak komputer, 821 00:43:26,950 --> 00:43:31,290 dan ia hanya menyimpan ini rentetan aksara rawak. 822 00:43:31,290 --> 00:43:34,440 Anda perlu memikirkan bagaimana untuk mendapatkan dari rentetan ini aksara rawak 823 00:43:34,440 --> 00:43:36,140 apa kata laluan asal adalah. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> Dan akhirnya, selepas ini set masalah, anda perlu 826 00:43:43,290 --> 00:43:46,100 dapat memahami apa yang dimaksudkan. 827 00:43:46,100 --> 00:43:51,650 Jadi, anda akan belajar bagaimana untuk menyahsulit seperti ini rentetan rawak. 828 00:43:51,650 --> 00:43:56,390 Begitu juga, jika anda masih ingat dari minggu 0, anda mungkin telah melihat URL ini. 829 00:43:56,390 --> 00:44:00,210 Dan anda akan dapat menyahsulit ini akhirnya. 830 00:44:00,210 --> 00:44:04,810 Anda mungkin tidak akan gembira apabila anda menyahsulit dan klik pada pautan. 831 00:44:04,810 --> 00:44:05,700 Baiklah. 832 00:44:05,700 --> 00:44:06,591 Itu sahaja untuk hari ini. 833 00:44:06,591 --> 00:44:12,095 Maka perhatikanlah lagi minggu depan! 834 00:44:12,095 --> 00:44:18,315 >> [Bermain muzik ELECTRONIC] 835 00:44:18,315 --> 00:47:15,619