1 00:00:00,000 --> 00:00:07,700 2 00:00:07,700 --> 00:00:15,180 >> SPEAKER: OK, jadi, Anda akan tidak percaya, tapi minggu lalu, Senin, di Pierce, saya 3 00:00:15,180 --> 00:00:16,090 turun di ruang bawah tanah. 4 00:00:16,090 --> 00:00:17,010 Aku tidak pernah pergi ke Pierce. 5 00:00:17,010 --> 00:00:20,530 Dan aku tak akan kembali lagi, karena Aku meninggalkan barang-barang saya sendiri untuk, 6 00:00:20,530 --> 00:00:23,950 seperti, lima menit dan seseorang mencuri komputer dan saya saya 7 00:00:23,950 --> 00:00:26,050 telepon dari ranselku. 8 00:00:26,050 --> 00:00:28,780 Yang berarti aku mendapatkannya kembali, dan maka kurang dari seminggu kemudian 9 00:00:28,780 --> 00:00:30,220 itu bisa dicuri lagi. 10 00:00:30,220 --> 00:00:31,570 >> Dan kemudian itu bisa dihidupkan - 11 00:00:31,570 --> 00:00:34,540 Find My iPhone terus untuk membantu. 12 00:00:34,540 --> 00:00:37,340 Jadi saya terus mendorong Anda tidak menggunakannya. 13 00:00:37,340 --> 00:00:42,270 Ternyata pada sekali, dan itu di MIT, seperti 15 menit kemudian, dan orang 14 00:00:42,270 --> 00:00:45,770 disebut nomor telepon ini yang menunjukkan di saya AT & T log panggilan. 15 00:00:45,770 --> 00:00:48,830 >> Jadi aku pergi online, disebut bahwa ponsel nomor, dan langsung pergi ke ini 16 00:00:48,830 --> 00:00:50,540 mesin penjawab di Spanyol. 17 00:00:50,540 --> 00:00:52,520 Dan saya belum pernah mendengar tentang hal itu sejak. 18 00:00:52,520 --> 00:00:54,800 Jadi saya harus mendapatkan baru komputer dan telepon. 19 00:00:54,800 --> 00:00:55,150 Aku tahu. 20 00:00:55,150 --> 00:00:56,326 Ya. 21 00:00:56,326 --> 00:01:00,110 Tapi jika kalian ingin chip untuk saya Dana komputer setelah ini, itu sebabnya 22 00:01:00,110 --> 00:01:01,030 Aku sudah meminta Anda di sini. 23 00:01:01,030 --> 00:01:02,280 Just kidding. 24 00:01:02,280 --> 00:01:04,239 25 00:01:04,239 --> 00:01:07,420 Tapi itu benar-benar sedih dan trauma. 26 00:01:07,420 --> 00:01:10,700 >> Tapi itu semua kembali sekarang, dan itu sebabnya p-set 8 membutuhkan waktu sangat lama, karena 27 00:01:10,700 --> 00:01:12,480 Aku tidak punya komputer. 28 00:01:12,480 --> 00:01:13,730 Dan seseorang mencurinya. 29 00:01:13,730 --> 00:01:16,940 Dan aku email, menanyakan apakah mereka akan kelas p-set 8 Anda. 30 00:01:16,940 --> 00:01:18,790 Tapi mereka mengatakan tidak. 31 00:01:18,790 --> 00:01:20,000 Dan aku seperti, aku bisa komputer saya kembali? 32 00:01:20,000 --> 00:01:21,270 Dan mereka seperti, no. 33 00:01:21,270 --> 00:01:22,130 Just kidding. 34 00:01:22,130 --> 00:01:22,930 >> OK. 35 00:01:22,930 --> 00:01:28,140 Ini adalah bagian akhir kami, dan saya memiliki beberapa - kita hanya memiliki tiga 36 00:01:28,140 --> 00:01:29,790 hal dalam agenda. 37 00:01:29,790 --> 00:01:31,330 Kita akan berbicara sedikit tentang panduan Q. 38 00:01:31,330 --> 00:01:33,900 Kemudian kita akan menghabiskan 15 menit pada demo keren. 39 00:01:33,900 --> 00:01:36,890 Kemudian kita akan semua mengatakan selamat tinggal satu sama lain. 40 00:01:36,890 --> 00:01:41,460 Anda tidak benar-benar membutuhkan komputer Anda atau pena atau kertas untuk membuat catatan, atau 41 00:01:41,460 --> 00:01:42,410 ikuti bersama. 42 00:01:42,410 --> 00:01:45,620 Jadi saya berasumsi jika Anda memiliki komputer Anda up, maka Anda berada di Facebook. 43 00:01:45,620 --> 00:01:46,530 Hanya mengatakan. 44 00:01:46,530 --> 00:01:49,650 Kecuali Anda mengisi Q panduan, yang pertama. 45 00:01:49,650 --> 00:01:50,690 >> The Q panduan terbuka. 46 00:01:50,690 --> 00:01:53,520 Anda telah memiliki email tentang hal itu. 47 00:01:53,520 --> 00:01:56,930 Setelah semua hal Q diajukan di akhir tahun, saya mendapatkan semua 48 00:01:56,930 --> 00:02:03,710 Q komentar dalam skor dari semua orang yang memilih untuk memberikan umpan balik. 49 00:02:03,710 --> 00:02:04,810 Dan ketika Anda pergi di Q - 50 00:02:04,810 --> 00:02:07,440 Saya tidak tahu apakah Anda bisa melakukan hal ini, Jeff, karena kau dan mahasiswa ekstensi. 51 00:02:07,440 --> 00:02:12,730 Tapi ketika Anda pergi di Q, jika Anda belum melakukannya sebelumnya, Anda memilih Anda 52 00:02:12,730 --> 00:02:14,020 guru, yaitu David Malan. 53 00:02:14,020 --> 00:02:14,970 Anda harus melakukan dia. 54 00:02:14,970 --> 00:02:15,690 >> Dan kemudian Anda dapat memilih TF. 55 00:02:15,690 --> 00:02:17,750 Dan Anda dapat memilih sebanyak TF yang Anda inginkan. 56 00:02:17,750 --> 00:02:18,990 Tapi ada 60 dari kita. 57 00:02:18,990 --> 00:02:20,350 Anda tidak harus memilih orang. 58 00:02:20,350 --> 00:02:23,090 Anda hanya bisa memilih saya, atau hanya memilih beberapa orang lain, jika Anda ingin, untuk 59 00:02:23,090 --> 00:02:24,470 memberikan umpan balik juga. 60 00:02:24,470 --> 00:02:27,595 Dan kemudian Anda mendapatkan skor pada semua ini sumbu yang berbeda, dan kemudian Anda dapat meninggalkan 61 00:02:27,595 --> 00:02:28,570 mereka umpan balik. 62 00:02:28,570 --> 00:02:31,520 >> Dan kemudian, seperti sebulan kemudian, Aku akan mendapatkan semua umpan balik itu. 63 00:02:31,520 --> 00:02:34,570 Dan seperti umpan balik Anda sudah memberi saya sepanjang semester, saya 64 00:02:34,570 --> 00:02:35,790 membaca semua itu. 65 00:02:35,790 --> 00:02:39,620 Dan itu benar-benar membantu, dan membantu saya tumbuh sebagai seorang guru dan sebagai 66 00:02:39,620 --> 00:02:40,680 individual. 67 00:02:40,680 --> 00:02:43,360 Jadi, tolong, luangkan waktu untuk melakukannya. 68 00:02:43,360 --> 00:02:45,020 Kami hanya akan berada di sini untuk, seperti, 30 menit. 69 00:02:45,020 --> 00:02:48,090 Jadi jika Anda ingin, pada akhir ini, untuk mengambil lima menit, dan cukup mengisi 70 00:02:48,090 --> 00:02:49,960 Q, karena tidak mengambil setiap waktu lebih dari itu. 71 00:02:49,960 --> 00:02:53,410 Itu akan sangat menyenangkan, dan Anda juga mendapatkan nilai Anda kembali lebih cepat jika 72 00:02:53,410 --> 00:02:54,620 Anda mengisi Q. tersebut 73 00:02:54,620 --> 00:02:56,580 >> Jadi sebagian besar dari Anda telah melakukan itu sebelumnya - 74 00:02:56,580 --> 00:02:58,240 atau tidak, sekitar setengah dari Anda telah melakukan itu sebelumnya. 75 00:02:58,240 --> 00:03:00,060 Tapi jika Anda mahasiswa baru, itulah apa itu. 76 00:03:00,060 --> 00:03:01,910 Ini akan sama untuk semua kelas. 77 00:03:01,910 --> 00:03:02,270 Lakukan. 78 00:03:02,270 --> 00:03:02,900 Dibutuhkan lima menit. 79 00:03:02,900 --> 00:03:07,610 Tapi juga, jika Anda melakukannya dengan sedikit serius, itu bukan hal terburuk 80 00:03:07,610 --> 00:03:10,270 di dunia, karena aku pasti menganggapnya serius. 81 00:03:10,270 --> 00:03:13,000 >> Jadi jika kau tinggalkan aku wajah tersenyum, Saya akan menghargai itu. 82 00:03:13,000 --> 00:03:17,550 Tapi saya juga akan menghargai jika Anda meninggalkan saya lebih dari wajah tersenyum. 83 00:03:17,550 --> 00:03:18,270 Tapi itu terserah Anda. 84 00:03:18,270 --> 00:03:21,540 Saya tidak bisa memberitahu Anda - atau seperti smiley besar wajah, dengan modal D. Itu akan 85 00:03:21,540 --> 00:03:23,060 menjadi lebih baik. 86 00:03:23,060 --> 00:03:27,860 >> OK, hanya itu yang saya miliki untuk Q. Jika Anda memiliki pertanyaan, Anda dapat meminta 87 00:03:27,860 --> 00:03:29,370 saya, tapi cukup jelas. 88 00:03:29,370 --> 00:03:31,090 Hanya, silahkan, mengisinya. 89 00:03:31,090 --> 00:03:34,390 Saya akan sangat menghargai itu, dan itu berarti banyak bagi saya. 90 00:03:34,390 --> 00:03:38,910 >> OK, ini adalah apa yang kita akan menghabiskan 15 menit melalui. 91 00:03:38,910 --> 00:03:39,800 Aku akan menunjukkan kepada Anda beberapa kode. 92 00:03:39,800 --> 00:03:42,080 Saya pikir ini benar-benar keren, dan ini membuat saya lebih 93 00:03:42,080 --> 00:03:43,810 bersemangat dalam ilmu komputer. 94 00:03:43,810 --> 00:03:46,480 Jadi saya berharap ini akan melakukan sama untuk Anda semua. 95 00:03:46,480 --> 00:03:51,760 >> Kita akan membuka - dan semua ini kode saya akan mengirimkan kepada Anda nanti. 96 00:03:51,760 --> 00:03:52,680 Tapi kami hanya akan membuka - 97 00:03:52,680 --> 00:03:54,310 Aku di terminal saya - 98 00:03:54,310 --> 00:03:56,810 kita akan membuka program ini disebut [? MySum. ?] 99 00:03:56,810 --> 00:04:01,290 100 00:04:01,290 --> 00:04:02,540 >> Dapatkah semua orang membaca itu, atau Aku harus membuatnya lebih besar? 101 00:04:02,540 --> 00:04:07,670 102 00:04:07,670 --> 00:04:13,040 Ada yang bisa memberitahu saya apa kode ini akan lakukan ketika saya menjalankannya, atau apa ini 103 00:04:13,040 --> 00:04:14,320 Program akan lakukan ketika saya menjalankannya? 104 00:04:14,320 --> 00:04:30,710 105 00:04:30,710 --> 00:04:32,400 >> [? Avi,?] Apa yang Anda pikirkan itu akan dilakukan? 106 00:04:32,400 --> 00:04:33,335 Finish mengunyah. 107 00:04:33,335 --> 00:04:35,033 Anda tidak harus berbicara dengan mulut Anda terbuka. 108 00:04:35,033 --> 00:04:38,330 109 00:04:38,330 --> 00:04:42,860 >> AUDIENCE: Apakah itu mengambil sekelompok argumen, menemukan jumlah mereka kembali 110 00:04:42,860 --> 00:04:45,285 sum, dan kemudian mencetaknya? 111 00:04:45,285 --> 00:04:53,045 Atau dibutuhkan dalam dua argumen, dan maka tidak [Tak terdengar]. 112 00:04:53,045 --> 00:04:56,460 Dan kemudian ia akan mencetak apapun hasilnya. 113 00:04:56,460 --> 00:04:58,100 >> SPEAKER: Tutup, benar-benar dekat. 114 00:04:58,100 --> 00:04:59,840 Ada yang ingin Anda tambahkan ke [? apa Avi?] mengatakan? 115 00:04:59,840 --> 00:05:04,830 116 00:05:04,830 --> 00:05:07,293 Apakah Anda perlu memberikan program ini argumen command-line? 117 00:05:07,293 --> 00:05:09,145 >> AUDIENCE: No 118 00:05:09,145 --> 00:05:09,610 >> SPEAKER: No 119 00:05:09,610 --> 00:05:11,250 Apa yang terjadi jika Anda tidak memberikan argumen command-line? 120 00:05:11,250 --> 00:05:12,500 Saya hanya menulis dot slash MySum. 121 00:05:12,500 --> 00:05:15,145 122 00:05:15,145 --> 00:05:16,630 >> AUDIENCE: 1 ditambah 2 sama dengan 3. 123 00:05:16,630 --> 00:05:17,250 >> SPEAKER: 1 ditambah 2 sama dengan 3. 124 00:05:17,250 --> 00:05:18,570 Dan itu akan mencetak yang keluar. 125 00:05:18,570 --> 00:05:19,450 Itu tepat sekali. 126 00:05:19,450 --> 00:05:21,370 Anda akan melihat bahwa print f line di bagian bawah. 127 00:05:21,370 --> 00:05:23,450 Ini akan mencetak a, b, dan maka jumlah a dan b. 128 00:05:23,450 --> 00:05:26,360 Dan saya kira Anda menganggap bahwa sum bekerja dengan benar. 129 00:05:26,360 --> 00:05:28,120 Asumsi yang baik. 130 00:05:28,120 --> 00:05:32,250 >> OK, dan apa yang terjadi jika saya memberikan argumen apa? 131 00:05:32,250 --> 00:05:33,010 [? Manu? ?] 132 00:05:33,010 --> 00:05:36,230 >> AUDIENCE: Ini akan menambahkan apa pun argumen pertama adalah b. 133 00:05:36,230 --> 00:05:37,150 Atau 2, maaf. 134 00:05:37,150 --> 00:05:38,480 >> SPEAKER: Benar, 2. 135 00:05:38,480 --> 00:05:42,470 Apakah ada yang tahu apa yang strtol tidak? 136 00:05:42,470 --> 00:05:43,960 Ini pada dasarnya atoi. 137 00:05:43,960 --> 00:05:47,240 Atoi sebenarnya merupakan versi mewah - 138 00:05:47,240 --> 00:05:49,600 atau versi yang lebih sederhana dari strtol. 139 00:05:49,600 --> 00:05:51,790 Tapi itu benar-benar menggunakan strtol. 140 00:05:51,790 --> 00:05:54,610 141 00:05:54,610 --> 00:05:58,010 Dan saya menemukan bahwa keluar karena saya ingin sesuatu seperti atoi, dan kemudian ketika saya 142 00:05:58,010 --> 00:06:01,110 tidak atoi, saya baca di sini. 143 00:06:01,110 --> 00:06:04,380 Dan aku menemukan "perilaku ini adalah sama dengan "strtol. 144 00:06:04,380 --> 00:06:06,850 Jadi pada dasarnya atoi untuk semua maksud dan tujuan. 145 00:06:06,850 --> 00:06:09,320 Dan Anda lihat saya bahkan menggunakan nol dan 10. 146 00:06:09,320 --> 00:06:14,390 >> Ini benar-benar memungkinkan Anda mengambil string, dan mengubahnya menjadi nomor, dan pilih 147 00:06:14,390 --> 00:06:15,970 apa dasar yang ingin Anda lakukan masuk 148 00:06:15,970 --> 00:06:17,370 Jadi ini adalah basis 10 di sini. 149 00:06:17,370 --> 00:06:20,455 Aku bisa melakukan dua basis untuk desimal, basis 16 untuk heksadesimal. 150 00:06:20,455 --> 00:06:22,090 Ini cukup keren. 151 00:06:22,090 --> 00:06:25,860 Tapi cerita panjang pendek, ini memakan waktu dua angka dan menambahkan mereka bersama-sama. 152 00:06:25,860 --> 00:06:29,260 >> Jadi mari kita menjalankannya. 153 00:06:29,260 --> 00:06:32,560 Dan Anda juga akan melihat, ada beberapa hal - 154 00:06:32,560 --> 00:06:37,830 jadi saya memiliki makefile di sini, dan jika Anda membuka bahwa sampai, beberapa hal 155 00:06:37,830 --> 00:06:39,270 Anda akan melihat berbeda. 156 00:06:39,270 --> 00:06:42,370 Secara khusus, argumen ini di sini, Anda mungkin 157 00:06:42,370 --> 00:06:43,010 belum melihat itu sebelumnya. 158 00:06:43,010 --> 00:06:45,770 Umumnya, kami menyusun hal-hal dengan dasbor nol, nol. 159 00:06:45,770 --> 00:06:51,500 Dash nol, nol, berarti tidak melakukan optimasi, compiler. 160 00:06:51,500 --> 00:06:54,950 Jangan mencoba dan membuat sesuatu yang mewah, atau membuat sesuatu berjalan lebih cepat, atau mendapatkan 161 00:06:54,950 --> 00:06:56,530 menyingkirkan variabel yang diperlukan. 162 00:06:56,530 --> 00:06:58,080 Jangan mengoptimalkan kode ini sama sekali, 163 00:06:58,080 --> 00:07:00,110 >> Aku meminta-tingkat ketiga optimasi. 164 00:07:00,110 --> 00:07:02,580 Jadi aku meminta compiler untuk melakukan banyak optimasi. 165 00:07:02,580 --> 00:07:05,870 Anda dapat mengubah bahwa dalam makefile ketika Anda memiliki kode ini, jika Anda ingin 166 00:07:05,870 --> 00:07:07,190 untuk melihat hal-hal yang berbeda. 167 00:07:07,190 --> 00:07:08,660 Yang kami akan menunjukkan dalam satu detik. 168 00:07:08,660 --> 00:07:12,080 Jadi kita menjalankan sum saya 1 ditambah 2 ditambah 3. 169 00:07:12,080 --> 00:07:13,445 Seseorang memberi saya dua argumen. 170 00:07:13,445 --> 00:07:17,221 171 00:07:17,221 --> 00:07:18,210 >> AUDIENCE: 4 dan 5. 172 00:07:18,210 --> 00:07:18,966 >> SPEAKER: 4 dan 5. 173 00:07:18,966 --> 00:07:19,900 Terima kasih. 174 00:07:19,900 --> 00:07:20,860 Besar, ia bekerja. 175 00:07:20,860 --> 00:07:25,700 Apa beberapa argumen yang baik lainnya untuk mencoba, untuk memastikan hal ini bekerja? 176 00:07:25,700 --> 00:07:27,050 Siapa saja? 177 00:07:27,050 --> 00:07:27,430 >> AUDIENCE: 0. 178 00:07:27,430 --> 00:07:29,210 >> SPEAKER: 0 dan? 179 00:07:29,210 --> 00:07:31,010 >> AUDIENCE: Negatif 3. 180 00:07:31,010 --> 00:07:32,040 >> SPEAKER: Ia bekerja. 181 00:07:32,040 --> 00:07:33,670 Tetapi mereka adalah pilihan yang baik. 182 00:07:33,670 --> 00:07:36,600 OK, jadi mari kita kembali ke sini. 183 00:07:36,600 --> 00:07:38,540 Ini adalah mysum.c. 184 00:07:38,540 --> 00:07:42,440 Anda akan melihat ada juga sesuatu disebut sumfunction.c. 185 00:07:42,440 --> 00:07:48,110 Dan ini mengatakan, oh, ada sesuatu didefinisikan dalam sumfunction.c. 186 00:07:48,110 --> 00:07:51,480 Saya tidak menyertakan file ini di sini karena saya tidak perlu. 187 00:07:51,480 --> 00:07:54,840 Tapi aku link itu di ketika saya mengkompilasi, yang Anda perhatikan. 188 00:07:54,840 --> 00:07:57,380 >> Mari kita gulir ke atas. 189 00:07:57,380 --> 00:08:02,880 Kami melihat ketika kita dikompilasi MySum, hak di sana, kami terhubung dalam biner dari 190 00:08:02,880 --> 00:08:04,130 sumfunction.o. 191 00:08:04,130 --> 00:08:05,780 192 00:08:05,780 --> 00:08:08,470 Dan aku tidak membutuhkan file header karena, tentu saja, ada 193 00:08:08,470 --> 00:08:09,240 deklarasi fungsi. 194 00:08:09,240 --> 00:08:12,200 Jadi tajam termasuk biasanya hanya menempatkan dalam deklarasi fungsi. 195 00:08:12,200 --> 00:08:13,730 Di sini saya baru saja menaruhnya langsung dalam kode. 196 00:08:13,730 --> 00:08:16,370 Dan jadi saya perlu melakukan Link dalam biner, yang saya lakukan. 197 00:08:16,370 --> 00:08:19,950 >> Setiap tebakan untuk apa yang di sumfunction.c? 198 00:08:19,950 --> 00:08:21,950 Apa kode saya sudah menulis di sumfunction.c? 199 00:08:21,950 --> 00:08:25,445 200 00:08:25,445 --> 00:08:26,695 >> AUDIENCE: [Tak terdengar]. 201 00:08:26,695 --> 00:08:29,460 202 00:08:29,460 --> 00:08:30,630 >> SPEAKER: Setiap tebakan? 203 00:08:30,630 --> 00:08:30,940 Ya? 204 00:08:30,940 --> 00:08:33,710 >> AUDIENCE: Saya pikir, mendefinisikan beberapa [Tak terdengar]. 205 00:08:33,710 --> 00:08:33,975 >> SPEAKER: Ya. 206 00:08:33,975 --> 00:08:37,650 Jadi saya menulis int sum int a. 207 00:08:37,650 --> 00:08:41,120 Saya menulis baris ini, dan kemudian aku harus terbuka penjepit keriting, ditutup penjepit keriting. 208 00:08:41,120 --> 00:08:46,160 Apa yang Anda pikir saya menulis di dalam mereka kurung kurawal, di dalam fungsi itu? 209 00:08:46,160 --> 00:08:46,600 Ya? 210 00:08:46,600 --> 00:08:48,150 >> AUDIENCE: Kembali sama dengan a. 211 00:08:48,150 --> 00:08:50,010 >> PROCESSOR: Itu tebakan benar-benar baik. 212 00:08:50,010 --> 00:08:51,720 Yang berpikir [? Manu?] Yang benar? 213 00:08:51,720 --> 00:08:54,122 Dikatakan kembali plus b. 214 00:08:54,122 --> 00:08:55,860 OK, tidak semua orang. 215 00:08:55,860 --> 00:08:56,520 [? Akshar,?] 216 00:08:56,520 --> 00:08:57,390 Anda lakukan, juga? 217 00:08:57,390 --> 00:09:00,430 Anda yakin? 218 00:09:00,430 --> 00:09:01,680 OK. 219 00:09:01,680 --> 00:09:09,551 220 00:09:09,551 --> 00:09:10,050 Apa? 221 00:09:10,050 --> 00:09:11,662 >> AUDIENCE: Anda mengejanya salah. 222 00:09:11,662 --> 00:09:13,000 >> SPEAKER: Tidak, aku tidak. 223 00:09:13,000 --> 00:09:13,966 Ya, hanya bercanda. 224 00:09:13,966 --> 00:09:15,300 Kau benar. 225 00:09:15,300 --> 00:09:15,930 Itu persis apa yang dikatakannya. 226 00:09:15,930 --> 00:09:17,110 Ini kembali plus b. 227 00:09:17,110 --> 00:09:18,570 Itu membuat banyak akal. 228 00:09:18,570 --> 00:09:20,240 >> OK, mari kita kembali ke sini. 229 00:09:20,240 --> 00:09:21,490 Kita melihat bagaimana header - 230 00:09:21,490 --> 00:09:24,540 231 00:09:24,540 --> 00:09:25,660 itu jenis kembali. 232 00:09:25,660 --> 00:09:29,100 Ingat, kita telah melihat hari itu satu, jenis fungsi kembali, tapi pergi 233 00:09:29,100 --> 00:09:30,160 sebelum nama fungsi int. 234 00:09:30,160 --> 00:09:31,560 Di sini, saya telah menulis int. 235 00:09:31,560 --> 00:09:35,680 Apa yang Anda pikir akan terjadi jika dalam hal ini fungsi, saya tidak menulis int, tapi 236 00:09:35,680 --> 00:09:38,270 Saya menulis unsigned? 237 00:09:38,270 --> 00:09:41,050 Bedanya, tentu saja, adalah bahwa unsigned hanya mewakili positif 238 00:09:41,050 --> 00:09:43,620 bilangan bulat, dan int dapat positif atau negatif. 239 00:09:43,620 --> 00:09:45,450 >> Jadi saya sudah berubah pengembalian jenis fungsi ini. 240 00:09:45,450 --> 00:09:49,370 Kode ini tidak cocok kembali ini disini. 241 00:09:49,370 --> 00:09:50,925 Apa yang Anda pikir akan terjadi ketika saya mengkompilasi? 242 00:09:50,925 --> 00:09:53,840 243 00:09:53,840 --> 00:09:56,240 Anda harus berteriak padaku. 244 00:09:56,240 --> 00:09:57,700 Tidak ada teriakan. 245 00:09:57,700 --> 00:10:00,050 >> Bagaimana dengan ketika saya menjalankan program ini? 246 00:10:00,050 --> 00:10:05,810 Mari kita lakukan sebelum 0 negatif 3, atau negatif 1. 247 00:10:05,810 --> 00:10:10,180 Masih bekerja, meskipun saya katakan itu kembali integer unsigned. 248 00:10:10,180 --> 00:10:12,060 Jelas itu tidak kembali integer unsigned. 249 00:10:12,060 --> 00:10:13,520 Ini mengembalikan integer ditandatangani. 250 00:10:13,520 --> 00:10:16,130 Ini kembali negatif 1. 251 00:10:16,130 --> 00:10:17,830 OK, itu aneh. 252 00:10:17,830 --> 00:10:27,030 >> Bagaimana jika saya pergi di sini dan melakukan itu? 253 00:10:27,030 --> 00:10:29,700 Jadi saya sudah mengubah segalanya dari int ke unsigned. 254 00:10:29,700 --> 00:10:31,590 Hal ini hanya dapat mengambil unsigned integer. 255 00:10:31,590 --> 00:10:33,840 Tapi apakah kita masih berpikir itu akan dijalankan? 256 00:10:33,840 --> 00:10:35,652 >> AUDIENCE: Ya. 257 00:10:35,652 --> 00:10:37,270 >> SPEAKER: Ini akan. 258 00:10:37,270 --> 00:10:39,410 Itu gila. 259 00:10:39,410 --> 00:10:43,140 Dan kita lulus dalam jelas ditugaskan integer, kita dapat melewati dua ditandatangani 260 00:10:43,140 --> 00:10:46,280 integer, itu masih bekerja. 261 00:10:46,280 --> 00:10:52,150 >> OK, ide mengapa masih bekerja, atau apa yang terjadi? 262 00:10:52,150 --> 00:10:53,368 Ya, Jeff. 263 00:10:53,368 --> 00:10:56,296 >> AUDIENCE: Memiliki sesuatu untuk dilakukan dengan optimasi Anda bahwa Anda 264 00:10:56,296 --> 00:10:57,760 disorot. 265 00:10:57,760 --> 00:10:58,210 >> SPEAKER: No 266 00:10:58,210 --> 00:11:00,570 Kita bisa mengubah optimasi, masih akan bekerja. 267 00:11:00,570 --> 00:11:02,240 Aku bisa melakukannya untuk Anda, tetapi - 268 00:11:02,240 --> 00:11:02,930 >> AUDIENCE: Saya akan mengambil kata-kata Anda untuk itu. 269 00:11:02,930 --> 00:11:03,690 >> SPEAKER: Ya. 270 00:11:03,690 --> 00:11:09,690 Jika Anda membuka makefile di sini, Saya mengubah optimasi. 271 00:11:09,690 --> 00:11:11,570 Sehingga Anda dapat melakukan lari nol, nol. 272 00:11:11,570 --> 00:11:12,820 Ini akan tetap bekerja. 273 00:11:12,820 --> 00:11:16,839 274 00:11:16,839 --> 00:11:20,280 Pikiran lain? 275 00:11:20,280 --> 00:11:22,600 >> Kalian semua diharapkan untuk bekerja, sehingga kenapa kau mengharapkan untuk bekerja? 276 00:11:22,600 --> 00:11:31,210 277 00:11:31,210 --> 00:11:32,150 Tidak ada? 278 00:11:32,150 --> 00:11:33,660 Silence. 279 00:11:33,660 --> 00:11:34,910 OK. 280 00:11:34,910 --> 00:11:39,271 281 00:11:39,271 --> 00:11:41,650 Saya harus menunggu tujuh detik, karena saya mengajukan pertanyaan. 282 00:11:41,650 --> 00:11:44,190 283 00:11:44,190 --> 00:11:48,660 >> Jadi hal yang keren tentang C, dan Anda sudah mungkin alami sebelumnya - Anda 284 00:11:48,660 --> 00:11:50,260 mungkin tidak memiliki, kekuatan ini menjadi pertama kalinya. 285 00:11:50,260 --> 00:11:57,030 Tapi seperti yang Anda semua tahu, ketika saya menulis sesuatu di C, tidak menyimpan seperti 286 00:11:57,030 --> 00:11:57,760 ini pada komputer. 287 00:11:57,760 --> 00:11:59,440 Ini disimpan sebagai satu dan nol. 288 00:11:59,440 --> 00:12:02,970 It goes dari kode C ke kode assembly. 289 00:12:02,970 --> 00:12:09,460 >> Ada yang sudah melihat kode assembly sebelumnya, kode mesin assembly? 290 00:12:09,460 --> 00:12:10,630 Kita akan melihat dalam satu detik. 291 00:12:10,630 --> 00:12:12,040 It goes dari kode C ke kode assembly. 292 00:12:12,040 --> 00:12:13,755 Dan kalian tahu tahap kompilasi. 293 00:12:13,755 --> 00:12:17,410 Anda harus menghafal bahwa untuk kuis satu, dan kemudian menulis itu pada kuis nol. 294 00:12:17,410 --> 00:12:18,240 Kebanyakan orang punya salah. 295 00:12:18,240 --> 00:12:19,760 Saya pikir kalian dipaku itu. 296 00:12:19,760 --> 00:12:22,880 >> Tapi, kalian adalah bagian terbaik untuk kuis, by the way. 297 00:12:22,880 --> 00:12:25,210 Yang mengagumkan. 298 00:12:25,210 --> 00:12:25,910 Ini tidak akan menyakiti Anda. 299 00:12:25,910 --> 00:12:26,900 Jangan khawatir. 300 00:12:26,900 --> 00:12:28,800 Tapi itu benar-benar keren. 301 00:12:28,800 --> 00:12:29,660 Good job. 302 00:12:29,660 --> 00:12:32,870 >> Jadi pergi ke bahasa assembly, dan kemudian ia pergi ke satu dan nol. 303 00:12:32,870 --> 00:12:35,500 Dan satu dan nol yang disimpan pada komputer, dan itulah yang disimpan dalam 304 00:12:35,500 --> 00:12:38,340 a.out, atau dalam hal ini, file executable. 305 00:12:38,340 --> 00:12:41,040 Dan komputer berjalan satu dan nol. 306 00:12:41,040 --> 00:12:41,670 Benar? 307 00:12:41,670 --> 00:12:43,890 Kami telah belajar ini sebelumnya. 308 00:12:43,890 --> 00:12:47,490 >> Jadi hal yang keren adalah, ini unsigned ide, gagasan jenis int unsigned, 309 00:12:47,490 --> 00:12:50,490 et cetera, et cetera, itu di sini dalam bahasa C. 310 00:12:50,490 --> 00:12:51,110 Mereka ada. 311 00:12:51,110 --> 00:12:53,770 Tapi jenis tidak ada pada satu dan nol. 312 00:12:53,770 --> 00:12:57,110 Jenis bahkan tidak benar-benar ada di tingkat bahasa assembly. 313 00:12:57,110 --> 00:13:00,075 Jadi itu adalah sesuatu yang ada di C dunia tapi tidak ada di komputer 314 00:13:00,075 --> 00:13:01,640 dunia atau prosesor dunia. 315 00:13:01,640 --> 00:13:04,660 Itulah beberapa abstraksi bahwa C bahasa telah disertakan, untuk membuat kita 316 00:13:04,660 --> 00:13:06,240 hidup lebih mudah. 317 00:13:06,240 --> 00:13:09,990 >> Jadi pada akhir hari, aku bisa menulis banyak hal yang berbeda di sini, dan itu 318 00:13:09,990 --> 00:13:10,700 tidak membuat perbedaan. 319 00:13:10,700 --> 00:13:12,060 Karena itu hanya ada dalam dunia C. 320 00:13:12,060 --> 00:13:14,100 Itu tidak ada dalam satu dan nol dunia. 321 00:13:14,100 --> 00:13:17,310 Dan program kami mengeksekusi dalam satu dan nol dunia. 322 00:13:17,310 --> 00:13:21,170 Jadi pikiran Anda jelas tidak ditiup belum. 323 00:13:21,170 --> 00:13:22,740 Tapi saya pikir itu keren. 324 00:13:22,740 --> 00:13:23,530 Ya, Jeff. 325 00:13:23,530 --> 00:13:27,298 >> AUDIENCE: Jadi, jika bukan melakukan int, Anda melakukan arang. 326 00:13:27,298 --> 00:13:27,770 Dan kau - 327 00:13:27,770 --> 00:13:29,311 >> SPEAKER: Mari kita lakukan dalam detik. 328 00:13:29,311 --> 00:13:32,583 >> AUDIENCE: Karena maka Anda mendapatkan unsigned pergi dari negatif ke 128 329 00:13:32,583 --> 00:13:34,720 127 atau 0 sampai 255. 330 00:13:34,720 --> 00:13:36,760 >> SPEAKER: Jadi char adalah bermasalah. 331 00:13:36,760 --> 00:13:39,460 Apakah ada yang tahu mengapa arang akan bermasalah, dan itu akan benar-benar 332 00:13:39,460 --> 00:13:42,930 mengubah hal-hal dalam yang dan membidik dunia? 333 00:13:42,930 --> 00:13:44,370 >> AUDIENCE: Karena ukuran char. 334 00:13:44,370 --> 00:13:46,200 >> SPEAKER: Ukuran char adalah 1. 335 00:13:46,200 --> 00:13:48,260 Jadi unsigned juga 4 byte. 336 00:13:48,260 --> 00:13:50,080 Jadi arang akan mengacaukan segalanya. 337 00:13:50,080 --> 00:13:55,660 Tapi apa adalah 4 byte yang terkait dengan char? 338 00:13:55,660 --> 00:13:57,820 Atau yang menambahkan satu tambahan - 339 00:13:57,820 --> 00:13:59,760 Anda dapat menempatkan satu karakter yang lebih setelah arang. 340 00:13:59,760 --> 00:14:00,200 >> AUDIENCE: Bintang Char. 341 00:14:00,200 --> 00:14:01,220 >> SPEAKER: Bintang Char memiliki 4 byte. 342 00:14:01,220 --> 00:14:02,490 Jadi mari kita lakukan sesuatu itu adalah bintang arang. 343 00:14:02,490 --> 00:14:05,470 344 00:14:05,470 --> 00:14:07,240 >> Jadi ini mungkin akan bekerja, tapi kami akan melakukan sesuatu yang bahkan 345 00:14:07,240 --> 00:14:09,710 lebih gila dari ini. 346 00:14:09,710 --> 00:14:10,960 Menurut pendapat saya, gila. 347 00:14:10,960 --> 00:14:21,060 348 00:14:21,060 --> 00:14:24,570 >> Sekarang saya telah menulis sebuah fungsi yang mengembalikan pointer, dan dibutuhkan 349 00:14:24,570 --> 00:14:29,480 pointer dan nilai unsigned - kita akan mengubah kembali ini untuk int jadi kami tidak 350 00:14:29,480 --> 00:14:31,250 membuat terlalu banyak perubahan sekaligus. 351 00:14:31,250 --> 00:14:35,370 Dan memiliki sebuah array disebut, indeks ke dalam array, dan kembali pada 352 00:14:35,370 --> 00:14:35,850 alamat. 353 00:14:35,850 --> 00:14:37,470 Kami telah melihat operator ini sebelumnya. 354 00:14:37,470 --> 00:14:43,340 Ini, apa yang Anda pikir ini akan yang harus dilakukan, sebagai balasannya, ketika saya menjalankannya? 355 00:14:43,340 --> 00:14:48,280 356 00:14:48,280 --> 00:14:49,070 Apa yang Anda pikir itu akan dilakukan? 357 00:14:49,070 --> 00:14:50,320 Setiap tebakan? 358 00:14:50,320 --> 00:14:54,220 359 00:14:54,220 --> 00:14:55,320 >> AUDIENCE: Segfault. 360 00:14:55,320 --> 00:14:55,600 >> SPEAKER: Apa? 361 00:14:55,600 --> 00:14:56,660 Segfault? 362 00:14:56,660 --> 00:14:58,520 Itu dugaan yang baik. 363 00:14:58,520 --> 00:14:59,430 Tom mengatakan hal yang sama. 364 00:14:59,430 --> 00:15:02,240 Setiap tebakan lain? 365 00:15:02,240 --> 00:15:05,260 >> Yang berpikir itu akan melakukan hal yang sama? 366 00:15:05,260 --> 00:15:06,510 Yang berpikir itu akan segfault? 367 00:15:06,510 --> 00:15:09,350 368 00:15:09,350 --> 00:15:10,230 Ia melakukan hal yang sama. 369 00:15:10,230 --> 00:15:11,880 Maaf. 370 00:15:11,880 --> 00:15:13,860 >> Tapi, tentu saja, kita masukkan ke dalam 1 dan 2. 371 00:15:13,860 --> 00:15:16,470 Dan mereka berdua valid, kan? 372 00:15:16,470 --> 00:15:19,420 Mari kita lihat, kita bisa pergi ke Tempat kedua array. 373 00:15:19,420 --> 00:15:24,010 Tapi bagaimana kalau kita membuat b angka negatif? 374 00:15:24,010 --> 00:15:26,380 Itu mungkin menebak yang lebih baik untuk sesuatu segfault. 375 00:15:26,380 --> 00:15:30,310 376 00:15:30,310 --> 00:15:32,260 Masih bekerja. 377 00:15:32,260 --> 00:15:35,020 >> OK, ini sekarang gila. 378 00:15:35,020 --> 00:15:38,350 Ini adalah fungsi sum sama valid. 379 00:15:38,350 --> 00:15:40,470 Ini melakukan hal yang persis sama sebagai pengembalian dan b. 380 00:15:40,470 --> 00:15:44,600 Ada yang bisa menjelaskan mengapa hal ini baik sebuah jumlah fungsi, atau mengapa ini bekerja? 381 00:15:44,600 --> 00:15:45,850 Apa yang terjadi di sini? 382 00:15:45,850 --> 00:15:49,360 383 00:15:49,360 --> 00:15:55,750 Mengapa hal ini melakukan hal yang sama persis hal sebagai fungsi sum lama kita? 384 00:15:55,750 --> 00:15:56,890 [? Akshar,?] 385 00:15:56,890 --> 00:15:58,155 apa yang terjadi? 386 00:15:58,155 --> 00:16:01,540 >> AUDIENCE: Karena ketika Anda memiliki a itu alamat untuk 387 00:16:01,540 --> 00:16:03,950 memori lokasi - 388 00:16:03,950 --> 00:16:07,910 dan ketika Anda melakukan ampersand, itu pergi ke alamat memori. 389 00:16:07,910 --> 00:16:13,610 Dan ketika Anda pergi ke b, Anda jenis langkah-langkah dari alamat memori bergerak, 390 00:16:13,610 --> 00:16:15,550 Anda kembali itu. 391 00:16:15,550 --> 00:16:20,083 Jadi Anda benar-benar, pada kenyataannya, menambahkan a dan b [Tak terdengar]. 392 00:16:20,083 --> 00:16:23,300 393 00:16:23,300 --> 00:16:26,222 Dimana operasi standar pada kembali itu? 394 00:16:26,222 --> 00:16:27,683 Seperti, di mana kurung jatuh? 395 00:16:27,683 --> 00:16:30,610 Apakah kembalinya alamat pada sebelum atau setelah [Tak terdengar]? 396 00:16:30,610 --> 00:16:32,380 >> SPEAKER: Ini akan indeks ke b - 397 00:16:32,380 --> 00:16:34,430 atau indeks ke - dan kemudian kembali alamat. 398 00:16:34,430 --> 00:16:38,800 399 00:16:38,800 --> 00:16:41,340 OK, jadi tidak semua orang mengerti apa [? Akshar?] 400 00:16:41,340 --> 00:16:45,830 kata, dan menjelaskan, mengapa ini bekerja? 401 00:16:45,830 --> 00:16:49,430 Aku tidak, pertama kali seseorang menjelaskan hal ini kepada saya. 402 00:16:49,430 --> 00:16:51,900 Apakah ada yang seperti gambar untuk menjelaskan hal ini? 403 00:16:51,900 --> 00:16:55,320 Kita akan menggambar, dengan tidak ada penanda, itu bagus. 404 00:16:55,320 --> 00:16:57,920 Menemukan beberapa. 405 00:16:57,920 --> 00:17:03,390 >> Jadi kita memiliki sebuah array yang serangkaian kotak. 406 00:17:03,390 --> 00:17:07,160 407 00:17:07,160 --> 00:17:13,710 Yang pertama adalah indeks 0, indeks 1, 2, 3, 4, dot, dot, dot. 408 00:17:13,710 --> 00:17:15,609 Sebuah array yang khas. 409 00:17:15,609 --> 00:17:19,540 Dan selain memiliki indeks, mereka semua memiliki alamat memori. 410 00:17:19,540 --> 00:17:30,190 Jadi mari kita memberikan alamat memori ini 13, 14, 15, 16, 17, dan sebagainya. 411 00:17:30,190 --> 00:17:32,490 Semua orang di sini sejauh ini. 412 00:17:32,490 --> 00:17:35,810 >> Jadi adalah alamat. 413 00:17:35,810 --> 00:17:38,850 Nama array, pointer disimpan di sana. 414 00:17:38,850 --> 00:17:42,730 Ini pointer, itu adalah lokasi memori, ke awal array. 415 00:17:42,730 --> 00:17:45,910 Jadi jika ini adalah array, akan menjadi nilai 13. 416 00:17:45,910 --> 00:17:49,110 Dan, tentu saja, kita dapat memberikan nilai apapun yang kita inginkan. 417 00:17:49,110 --> 00:17:52,450 Char membintangi, kita dapat memberikan setiap alamat memori yang kita inginkan. 418 00:17:52,450 --> 00:17:55,940 Kami dapat memberikan 0, kita dapat memberikan negatif 1 - 1 negatif tidak ada, 419 00:17:55,940 --> 00:17:58,820 sehingga mungkin bermasalah, tapi Anda melihat bahwa itu masih bekerja. 420 00:17:58,820 --> 00:18:03,070 Jadi kita bisa memberikan sejumlah yang kita inginkan, alamat memori apapun yang kita inginkan. 421 00:18:03,070 --> 00:18:08,720 >> Kemudian, int b berkata, OK, pergi nomor ini dari langkah ke dalam array. 422 00:18:08,720 --> 00:18:13,150 Jadi jika b sama dengan 2, dan sama dengan 13, kita berada di alamat memori 13. 423 00:18:13,150 --> 00:18:17,330 Dan kami pergi dua langkah di, dan jadi kita di sini. 424 00:18:17,330 --> 00:18:21,150 Dan ampersand berarti kembali alamat lokasi ini. 425 00:18:21,150 --> 00:18:23,990 Dan alamat adalah, tentu saja, 15. 426 00:18:23,990 --> 00:18:28,710 Jadi kita mendapatkan 13 ditambah 2, atau plus b, yaitu 15. 427 00:18:28,710 --> 00:18:29,590 >> Pertanyaannya adalah, meskipun - 428 00:18:29,590 --> 00:18:30,250 Maafkan aku. 429 00:18:30,250 --> 00:18:34,324 Apakah itu menjelaskan hal-hal mengapa ini bekerja? 430 00:18:34,324 --> 00:18:36,300 >> AUDIENCE: Mengapa itu akan berhasil pergi - 431 00:18:36,300 --> 00:18:38,770 sehingga Anda dapat memiliki sebuah array dan pergi ke indeks negatif? 432 00:18:38,770 --> 00:18:39,050 >> SPEAKER: Benar. 433 00:18:39,050 --> 00:18:40,870 Jadi kami melakukan angka negatif, jadi itu - 434 00:18:40,870 --> 00:18:42,770 apakah ini masuk akal meskipun, pertama, [? Avi,?] 435 00:18:42,770 --> 00:18:43,120 bagi Anda? 436 00:18:43,120 --> 00:18:48,840 >> AUDIENCE: Ya aku hanya [Tak terdengar], tapi - 437 00:18:48,840 --> 00:18:50,440 >> SPEAKER: Ya, ini akan kembali 15. 438 00:18:50,440 --> 00:18:53,523 Jika adalah 13, dan b adalah 2, ini akan kembali 15. 439 00:18:53,523 --> 00:18:58,160 >> AUDIENCE: Jadi nol pengindeksan tidak menjadi isu, kan? 440 00:18:58,160 --> 00:19:00,160 Karena Anda bergerak dari 0. 441 00:19:00,160 --> 00:19:00,470 >> SPEAKER: Benar. 442 00:19:00,470 --> 00:19:05,000 Jadi Anda bergerak - jadi jika b adalah 0, Anda tidak akan bergerak di mana saja. 443 00:19:05,000 --> 00:19:06,330 Dan Anda baru saja kembali alamat - 444 00:19:06,330 --> 00:19:10,830 jika b adalah 0, yang pada dasarnya kembali bahwa alamat. 445 00:19:10,830 --> 00:19:13,960 Melewati dalam char bintang dan mengembalikan alamat hanya mengembalikan, 446 00:19:13,960 --> 00:19:15,860 dasarnya. 447 00:19:15,860 --> 00:19:18,280 >> OK, pertanyaannya adalah mengapa angka negatif bekerja? 448 00:19:18,280 --> 00:19:21,670 Dan itu adalah hal yang benar-benar keren tentang ini, karena ini harus segfault. 449 00:19:21,670 --> 00:19:25,110 Dan itu akan segfault jika kita melakukan sesuatu seperti ini. 450 00:19:25,110 --> 00:19:28,050 451 00:19:28,050 --> 00:19:29,300 Katakanlah, int. 452 00:19:29,300 --> 00:19:34,390 453 00:19:34,390 --> 00:19:39,810 Jadi kode ini terlihat identik dan harus bersikap identik. 454 00:19:39,810 --> 00:19:44,550 Pada dasarnya, x adalah variabel sampah, dan jadi ini harus berperilaku identik. 455 00:19:44,550 --> 00:19:46,370 >> Mari kita membuat ini - 456 00:19:46,370 --> 00:19:47,620 oops - 457 00:19:47,620 --> 00:19:54,790 458 00:19:54,790 --> 00:19:56,040 di bintang. 459 00:19:56,040 --> 00:19:59,160 460 00:19:59,160 --> 00:20:02,733 OK, kita sudah mendapatkan kesalahan di sini, karena sudah akan marah 461 00:20:02,733 --> 00:20:04,610 padaku, karena sudah tahu apa yang akan terjadi. 462 00:20:04,610 --> 00:20:07,060 Secara khusus, yang kedua. 463 00:20:07,060 --> 00:20:09,800 Alamat memori ditumpuk terkait dengan variabel lokal. 464 00:20:09,800 --> 00:20:14,220 >> Pada dasarnya, saya tidak akan mengkompilasi ini, dan kemudian aku akan membatalkan lakukan 465 00:20:14,220 --> 00:20:14,920 apa yang baru saja kita lakukan. 466 00:20:14,920 --> 00:20:19,130 Tetapi karena kita tidak pernah benar-benar mengakses apa yang di memori 467 00:20:19,130 --> 00:20:21,930 lokasi, itu tidak akan segfault. 468 00:20:21,930 --> 00:20:26,450 Kami tidak pernah benar-benar melihat apa yang di kotak kedua atau apa yang ada di kotak manapun 469 00:20:26,450 --> 00:20:28,340 array ini. 470 00:20:28,340 --> 00:20:30,980 Kita hanya mengatakan, inilah alamat hal yang kita cari dan 471 00:20:30,980 --> 00:20:32,410 kembali alamat tersebut. 472 00:20:32,410 --> 00:20:35,700 Kita tidak pernah benar-benar pergi ke array untuk melihat lokasi tersebut. 473 00:20:35,700 --> 00:20:39,140 Dan karena kita tidak pernah menyentuh memori, kita tidak mendapat masalah. 474 00:20:39,140 --> 00:20:40,760 Kami tidak mendapatkan segfault. 475 00:20:40,760 --> 00:20:46,225 >> Jika kita mencoba, sekali lagi, menyentuh memori, sentuh apa yang pada a atau b - 476 00:20:46,225 --> 00:20:49,940 atau bracket b, dan dengan asumsi a adalah 0 dan - 477 00:20:49,940 --> 00:20:53,040 jika itu 0, bahkan, itu akan sangat buruk, karena kita tidak bisa pergi 478 00:20:53,040 --> 00:20:54,090 turun sepanjang perjalanan ke sana. 479 00:20:54,090 --> 00:20:58,250 Jika a dan b keduanya 0, dan kami mencoba untuk menyentuh apa yang ada di sana, maka kita akan 480 00:20:58,250 --> 00:20:59,110 mendapatkan dalam kesulitan. 481 00:20:59,110 --> 00:21:02,160 Tetapi jika kita tidak menyentuh apa yang ada, kami hanya mengembalikan alamat, itu adalah 482 00:21:02,160 --> 00:21:08,300 sebenarnya tidak akan segfault karena itu memungkinkan Anda melakukan operasi tersebut. 483 00:21:08,300 --> 00:21:11,920 Itu hanya akan marah padamu, dan mendapat super marah, ketika Anda mencoba dan menyentuh 484 00:21:11,920 --> 00:21:15,740 memori yang sebenarnya dan mengembalikan apa yang di lokasi memori. 485 00:21:15,740 --> 00:21:17,690 >> Apakah itu masuk akal? 486 00:21:17,690 --> 00:21:24,820 Itu hanya bagian gila C. Jadi, kami memiliki satu lagi dari ini. 487 00:21:24,820 --> 00:21:27,760 488 00:21:27,760 --> 00:21:29,700 >> Siapa yang berpikir ini keren? 489 00:21:29,700 --> 00:21:30,280 Lebih banyak orang. 490 00:21:30,280 --> 00:21:31,070 Itu bagus. 491 00:21:31,070 --> 00:21:34,860 OK, ini adalah salah satu terakhir kami. 492 00:21:34,860 --> 00:21:37,314 Dan aku ingin kau katakan padaku apakah atau tidak Anda berpikir ini akan 493 00:21:37,314 --> 00:21:38,564 untuk melakukan hal yang persis sama. 494 00:21:38,564 --> 00:22:06,050 495 00:22:06,050 --> 00:22:07,390 >> Saya ini tertulis di suatu tempat. 496 00:22:07,390 --> 00:22:08,640 Aku tidak mengingatnya. 497 00:22:08,640 --> 00:22:33,350 498 00:22:33,350 --> 00:22:42,900 >> Mari kita lihat, 8, b 4, 4, 2, 4, 0, 8, 0, 3, 4, 4, 2, 4, 0, 4. 499 00:22:42,900 --> 00:22:46,670 Jadi ini adalah sebuah array, sekarang, bukan fungsi. 500 00:22:46,670 --> 00:22:49,640 Dan itu sebuah array karena kita memiliki persegi kurung, kawat gigi tidak keriting. 501 00:22:49,640 --> 00:22:52,360 Dan itu sebuah array dari tipe apa? 502 00:22:52,360 --> 00:22:55,540 503 00:22:55,540 --> 00:22:56,862 Siapapun, hmm? 504 00:22:56,862 --> 00:22:57,694 >> AUDIENCE: heksadesimal mereka? 505 00:22:57,694 --> 00:22:59,650 >> SPEAKER: Tapi apa jenis C? 506 00:22:59,650 --> 00:23:00,710 Mereka semua memiliki angka heksadesimal. 507 00:23:00,710 --> 00:23:01,960 Apa jenis C? 508 00:23:01,960 --> 00:23:04,730 509 00:23:04,730 --> 00:23:05,480 Ini memberitahu Anda. 510 00:23:05,480 --> 00:23:07,350 >> AUDIENCE: Ini unsigned chars. 511 00:23:07,350 --> 00:23:09,170 >> SPEAKER: Benar, unsigned chars. 512 00:23:09,170 --> 00:23:13,050 Dan dua angka heksadesimal adalah salah satu byte. 513 00:23:13,050 --> 00:23:18,540 Jadi ini adalah 1, 2, 3, 4, 5, 6, 7, 8, 9 byte. 514 00:23:18,540 --> 00:23:21,360 Ini sebuah array dari 9 byte. 515 00:23:21,360 --> 00:23:25,530 >> OK, Anda mungkin sudah tahu jawaban atas pertanyaan ini. 516 00:23:25,530 --> 00:23:29,840 Tapi, apa yang Anda pikirkan akan terjadi ketika saya menjalankan ini? 517 00:23:29,840 --> 00:23:34,110 Saya katakan, sekali lagi, dalam mysum.c, Aku mengharapkan fungsi 518 00:23:34,110 --> 00:23:36,280 yang mengambil dua bilangan bulat. 519 00:23:36,280 --> 00:23:40,265 Dan aku malah mengatakan jumlah itu adalah array dari karakter. 520 00:23:40,265 --> 00:23:42,780 521 00:23:42,780 --> 00:23:48,070 Apa yang akan terjadi bila Saya menjalankan. / MySum dan membuat? 522 00:23:48,070 --> 00:23:53,230 >> Yah, pertama, sebagian besar dari Anda mungkin akan setuju bahwa make - oh tidak, hanya bercanda. 523 00:23:53,230 --> 00:23:54,746 Apa yang saya lakukan salah? 524 00:23:54,746 --> 00:23:55,996 Uh oh. 525 00:23:55,996 --> 00:23:59,220 526 00:23:59,220 --> 00:24:01,160 Yang harus kurung kurawal. 527 00:24:01,160 --> 00:24:02,790 Itulah cara Anda menginisialisasi sebuah array. 528 00:24:02,790 --> 00:24:04,040 Saya buruk. 529 00:24:04,040 --> 00:24:07,530 530 00:24:07,530 --> 00:24:11,670 >> Jadi kita sudah melihat sebelumnya bahwa jenis adalah abstraksi C-tingkat, bukan 531 00:24:11,670 --> 00:24:12,610 komputer tingkat abstraksi. 532 00:24:12,610 --> 00:24:16,360 Jadi sebagian besar dari Anda mungkin diharapkan untuk membuat, atau dengan asumsi bahwa itu akan membuat. 533 00:24:16,360 --> 00:24:18,680 Tapi apa ketika saya menjalankan. / MySum? 534 00:24:18,680 --> 00:24:19,930 Apa yang akan terjadi? 535 00:24:19,930 --> 00:24:21,790 536 00:24:21,790 --> 00:24:23,422 Setiap tebakan? 537 00:24:23,422 --> 00:24:25,270 >> AUDIENCE: Ini akan mencetak sebuah kata. 538 00:24:25,270 --> 00:24:26,310 >> SPEAKER: Ini akan mencetak sebuah kata. 539 00:24:26,310 --> 00:24:29,335 Kata Apa? 540 00:24:29,335 --> 00:24:32,200 >> AUDIENCE: [Tak terdengar]. 541 00:24:32,200 --> 00:24:33,240 >> SPEAKER: Setiap tebakan lain? 542 00:24:33,240 --> 00:24:34,000 OK, mencetak frase. 543 00:24:34,000 --> 00:24:35,130 Anda dapat memiliki frase apapun. 544 00:24:35,130 --> 00:24:36,240 Itu akan menjadi sisi Anda. 545 00:24:36,240 --> 00:24:38,480 Siapa saja yang memiliki menebak yang berbeda? 546 00:24:38,480 --> 00:24:39,730 Anna, apa tebakan Anda? 547 00:24:39,730 --> 00:24:42,675 548 00:24:42,675 --> 00:24:44,615 >> AUDIENCE: Ini akan mencetak - 549 00:24:44,615 --> 00:24:47,525 550 00:24:47,525 --> 00:24:49,480 dua surat, atau [Tak terdengar] satu huruf. 551 00:24:49,480 --> 00:24:51,460 >> SPEAKER: Satu surat. 552 00:24:51,460 --> 00:24:53,260 >> AUDIENCE: Dapatkah saya menghitung berapa banyak [Tak terdengar]? 553 00:24:53,260 --> 00:24:55,426 >> SPEAKER: Sembilan. 554 00:24:55,426 --> 00:24:56,640 Yah, aku akan menjalankannya. 555 00:24:56,640 --> 00:24:58,650 Itu hal yang persis sama. 556 00:24:58,650 --> 00:25:00,190 Ia menambahkan dua angka bersama. 557 00:25:00,190 --> 00:25:02,740 Nah, mari kita melewati dua argumen. 558 00:25:02,740 --> 00:25:03,710 Ini tidak mengambil argumen. 559 00:25:03,710 --> 00:25:06,080 Jadi saya tidak tahu di mana itu bisa mungkin mendapatkan argumen ini. 560 00:25:06,080 --> 00:25:07,710 Tapi mari kita lulus pada 100 dan 0. 561 00:25:07,710 --> 00:25:09,200 Dan itu menambah 100 dan 0. 562 00:25:09,200 --> 00:25:10,220 Itu gila. 563 00:25:10,220 --> 00:25:12,280 Saya kira begitu. 564 00:25:12,280 --> 00:25:14,480 >> Negatif 4, yang bekerja juga. 565 00:25:14,480 --> 00:25:15,650 Anda dapat melakukan apapun yang Anda inginkan. 566 00:25:15,650 --> 00:25:17,920 Ini adalah fungsi sum sama valid. 567 00:25:17,920 --> 00:25:19,640 Ini adalah fungsi penjumlahan. 568 00:25:19,640 --> 00:25:21,510 Tapi, tidak, kau mengatakan itu array byte. 569 00:25:21,510 --> 00:25:23,570 Jadi apa yang terjadi di sini? 570 00:25:23,570 --> 00:25:27,240 >> Jadi, sekali lagi, mari kita kembali ke ide ini bahwa kita mengatakan pada awal. 571 00:25:27,240 --> 00:25:32,050 Anda pergi dari kode C-tingkat, untuk perakitan bahasa, untuk satu dan nol. 572 00:25:32,050 --> 00:25:33,050 Ini adalah heksadesimal. 573 00:25:33,050 --> 00:25:35,780 Tapi ini benar-benar hanya banyak satu dan nol. 574 00:25:35,780 --> 00:25:39,230 Ini adalah 72 satu dan nol, kan? 575 00:25:39,230 --> 00:25:40,550 72 satu dan nol. 576 00:25:40,550 --> 00:25:42,160 9 byte. 577 00:25:42,160 --> 00:25:43,740 Setiap byte memiliki 8 bit. 578 00:25:43,740 --> 00:25:44,760 Setiap bit adalah satu atau nol. 579 00:25:44,760 --> 00:25:45,920 Jadi 72 orang atau nol. 580 00:25:45,920 --> 00:25:48,780 Saya baru saja menulis mereka seperti ini - daripada menulis keluar sebagai banyak 581 00:25:48,780 --> 00:25:49,730 satu dan nol. 582 00:25:49,730 --> 00:25:53,560 >> Tapi ini akan pergi dari C-level bahasa, untuk assembly 583 00:25:53,560 --> 00:25:54,620 bahasa, kode. 584 00:25:54,620 --> 00:25:59,020 Dan ini akan mencetak dalam kode, di suatu tempat, ini 72 satu dan nol 585 00:25:59,020 --> 00:26:00,910 yang saya tulis di sini. 586 00:26:00,910 --> 00:26:03,610 Jadi di suatu tempat di - 587 00:26:03,610 --> 00:26:04,850 mari kita pergi di sini - 588 00:26:04,850 --> 00:26:11,240 di suatu tempat di MySum, program, ada apakah ini 72 satu dan nol bahwa saya telah 589 00:26:11,240 --> 00:26:14,930 tertulis dan diberitahu untuk menulis. 590 00:26:14,930 --> 00:26:19,331 >> Sekarang, setiap tebakan untuk apa mereka 72 satu dan nol artinya? 591 00:26:19,331 --> 00:26:21,240 >> AUDIENCE: Mungkin sama hal sebagai kembali plus b. 592 00:26:21,240 --> 00:26:22,890 >> SPEAKER: Mungkin sama hal sebagai kembali plus b. 593 00:26:22,890 --> 00:26:23,730 Mari kita pastikan. 594 00:26:23,730 --> 00:26:25,210 Mari kita mencari tahu bagaimana saya melakukan ini. 595 00:26:25,210 --> 00:26:31,840 >> Jadi jika Anda pergi kembali ke sini, saya katakan untuk menjalankan perintah ini, objdump-S 596 00:26:31,840 --> 00:26:34,290 sumfunction.o. 597 00:26:34,290 --> 00:26:36,230 Mari kita menjalankannya. objdump - 598 00:26:36,230 --> 00:26:37,990 obj, dump. 599 00:26:37,990 --> 00:26:39,840 Pada dasarnya dapat memberikan apa pun yang saya ingin melihat. 600 00:26:39,840 --> 00:26:40,840 Hal ini dapat memberikan saya bahasa assembly. 601 00:26:40,840 --> 00:26:42,730 Hal ini dapat memberi saya satu dan nol. 602 00:26:42,730 --> 00:26:43,840 Ia memiliki ton bendera. 603 00:26:43,840 --> 00:26:45,860 Ini adalah salah satu kita akan digunakan untuk saat ini. 604 00:26:45,860 --> 00:26:46,980 Dot - 605 00:26:46,980 --> 00:26:48,810 seperti yang Anda lihat di slide - 606 00:26:48,810 --> 00:26:53,840 modal dasbor S mengatakan, Selingi, kode sumber - 607 00:26:53,840 --> 00:26:58,410 baris ini berasal dari C - dengan perakitan kode dan dengan satu dan nol. 608 00:26:58,410 --> 00:27:00,350 Dan kita akan menjalankan di sumfunction.o. 609 00:27:00,350 --> 00:27:01,410 Karena akan lebih mudah untuk melihat. 610 00:27:01,410 --> 00:27:02,670 Lagi - hmm? 611 00:27:02,670 --> 00:27:04,700 >> AUDIENCE: Anda mengejanya salah. 612 00:27:04,700 --> 00:27:05,930 >> SPEAKER: Tapi aku benar-benar akan untuk membersihkan itu untuk kedua. 613 00:27:05,930 --> 00:27:09,160 Saya pertama akan membuka hanya sumfuntion.o. 614 00:27:09,160 --> 00:27:11,170 >> AUDIENCE: Anda mengejanya salah pertama kalinya. 615 00:27:11,170 --> 00:27:12,420 >> SPEAKER: Classic. 616 00:27:12,420 --> 00:27:14,790 617 00:27:14,790 --> 00:27:15,480 Sum - 618 00:27:15,480 --> 00:27:16,680 itu adalah kata keras, meskipun. 619 00:27:16,680 --> 00:27:19,050 Anda akan terkejut. 620 00:27:19,050 --> 00:27:21,560 OK, jadi ini adalah sumfunction.o. 621 00:27:21,560 --> 00:27:24,494 622 00:27:24,494 --> 00:27:26,220 Aku bahkan tidak bisa memberitahu Anda. 623 00:27:26,220 --> 00:27:30,250 Ada banyak nol, jelas banyak dari nol, dan ada beberapa lainnya 624 00:27:30,250 --> 00:27:31,930 hal-hal yang tidak nol. 625 00:27:31,930 --> 00:27:33,220 Tapi sebagian besar nol. 626 00:27:33,220 --> 00:27:35,120 Sepertinya ada beberapa yang. 627 00:27:35,120 --> 00:27:36,810 Jadi jelas, ini sulit untuk dibaca. 628 00:27:36,810 --> 00:27:39,320 Itulah bahasa biner. 629 00:27:39,320 --> 00:27:40,710 >> Sekarang mari kita buka - 630 00:27:40,710 --> 00:27:50,190 631 00:27:50,190 --> 00:27:52,350 apa? 632 00:27:52,350 --> 00:27:53,600 Apa yang saya lakukan salah? 633 00:27:53,600 --> 00:27:56,955 634 00:27:56,955 --> 00:27:58,434 Apakah aku mengejanya dengan benar? 635 00:27:58,434 --> 00:28:09,865 636 00:28:09,865 --> 00:28:11,120 OK, ini adalah aneh. 637 00:28:11,120 --> 00:28:37,560 638 00:28:37,560 --> 00:28:40,158 Saya perlu satu detik untuk mencari apa yang saya lakukan salah. 639 00:28:40,158 --> 00:28:46,030 640 00:28:46,030 --> 00:28:49,310 Itu salah satu kesalahan. 641 00:28:49,310 --> 00:28:50,560 Itu aneh. 642 00:28:50,560 --> 00:28:58,080 643 00:28:58,080 --> 00:29:01,800 Oh, itu sebabnya. 644 00:29:01,800 --> 00:29:09,880 >> Aku akan kembali ke awal kami satu, sehingga kita dapat melihat 645 00:29:09,880 --> 00:29:10,560 kode obyek ini. 646 00:29:10,560 --> 00:29:13,390 Karena ada tidak benar-benar akan menjadi apa-apa ketika kita hanya menempatkan 647 00:29:13,390 --> 00:29:14,640 satu dan nol masuk 648 00:29:14,640 --> 00:29:29,000 649 00:29:29,000 --> 00:29:30,200 Di sana kami pergi. 650 00:29:30,200 --> 00:29:32,425 OK, jadi semua orang bisa melihat ini. 651 00:29:32,425 --> 00:29:38,130 Fungsi ini, seperti yang saya katakan, mengeluarkan garis C - 652 00:29:38,130 --> 00:29:39,060 baris kode sumber - 653 00:29:39,060 --> 00:29:41,000 dengan beberapa petunjuk perakitan. 654 00:29:41,000 --> 00:29:42,760 >> Berikut ini adalah baris kode sumber kami. 655 00:29:42,760 --> 00:29:44,910 Berikut ini salah satu, di sini lain. 656 00:29:44,910 --> 00:29:46,540 Berikut adalah instruksi assembly. 657 00:29:46,540 --> 00:29:47,820 Itulah yang mereka terlihat seperti. 658 00:29:47,820 --> 00:29:49,010 Instruksi perakitan - 659 00:29:49,010 --> 00:29:51,530 Anda dapat mempelajari lebih dari ini jika Anda mengambil kelas CS lainnya, tapi mereka 660 00:29:51,530 --> 00:29:53,500 umumnya sebuah instruksi. 661 00:29:53,500 --> 00:29:57,940 Dan kemudian menjadi sumber dan tujuan. 662 00:29:57,940 --> 00:30:02,740 >> Dan kemudian di sini adalah kode biner yang sesuai dengan perakitan yang 663 00:30:02,740 --> 00:30:04,940 instruksi. 664 00:30:04,940 --> 00:30:09,760 Jadi seperti yang Anda lihat, fungsi jumlah ini, pada akhir hari, tiga 665 00:30:09,760 --> 00:30:10,950 petunjuk perakitan. 666 00:30:10,950 --> 00:30:12,870 Hanya tiga. 667 00:30:12,870 --> 00:30:14,180 Satu mov - 668 00:30:14,180 --> 00:30:16,740 ini m-o-v singkatan Move a. 669 00:30:16,740 --> 00:30:17,780 Tambahkan singkatan Add. 670 00:30:17,780 --> 00:30:20,440 Dan r-e-t singkatan Kembali. 671 00:30:20,440 --> 00:30:22,540 Jadi satu mov, satu add, satu kembali. 672 00:30:22,540 --> 00:30:27,970 Dan ini, di sini, adalah nol dan orang-orang yang sesuai dengan kode tersebut. 673 00:30:27,970 --> 00:30:31,100 >> Jadi mereka nol dan yang, jika Anda tahu mereka, Anda hanya dapat menempatkan 674 00:30:31,100 --> 00:30:32,140 mereka langsung masuk 675 00:30:32,140 --> 00:30:34,130 Dan kemudian akan melakukan hal yang persis sama. 676 00:30:34,130 --> 00:30:37,260 Karena, pada akhir hari, semua Anda mengeksekusi adalah serangkaian panjang 677 00:30:37,260 --> 00:30:38,480 nol dan satu. 678 00:30:38,480 --> 00:30:40,700 Dan itulah yang kode Anda sebenarnya. 679 00:30:40,700 --> 00:30:41,770 >> Dan alasan - 680 00:30:41,770 --> 00:30:43,680 mari kita lihat satu hal. 681 00:30:43,680 --> 00:30:45,440 Apakah saya memiliki makefile terbuka? 682 00:30:45,440 --> 00:30:48,510 Jadi jika kami kembali ke lari nol, nol di sini - 683 00:30:48,510 --> 00:30:52,220 684 00:30:52,220 --> 00:30:57,300 Maaf, modal o, modal o nol, bukan nol, nol. 685 00:30:57,300 --> 00:31:01,810 Dan kami buat, itu akan masih bekerja sama. 686 00:31:01,810 --> 00:31:05,420 Tapi sekarang Anda melihat bahwa ada petunjuk perakitan yang lebih banyak. 687 00:31:05,420 --> 00:31:09,090 Itu karena, sekali lagi, saya meminta compiler tidak melakukan optimasi apapun. 688 00:31:09,090 --> 00:31:12,800 >> Jadi saya masih bisa mengambil semua ini nol dan yang, dan melemparkan mereka di, 689 00:31:12,800 --> 00:31:13,390 dan yang akan bekerja. 690 00:31:13,390 --> 00:31:15,850 Aku hanya melakukan optimasi, karena itu sedikit lebih mudah, maka, 691 00:31:15,850 --> 00:31:17,310 untuk menulis array. 692 00:31:17,310 --> 00:31:19,730 Tapi ini akan bekerja sama dengan baik. 693 00:31:19,730 --> 00:31:24,460 >> OK, kita akan melakukan satu hal terakhir, karena saya pikir adalah bagian paling keren. 694 00:31:24,460 --> 00:31:27,410 Meskipun semua orang jelas sudah ditiup dan berkata-kata. 695 00:31:27,410 --> 00:31:30,520 696 00:31:30,520 --> 00:31:31,670 Pikiran kita ditiup. 697 00:31:31,670 --> 00:31:32,920 [Tak terdengar] 698 00:31:32,920 --> 00:31:47,580 699 00:31:47,580 --> 00:31:51,520 >> Jadi, ini adalah dari kelas CS yang berbeda, yang super menarik, 700 00:31:51,520 --> 00:31:52,970 bahwa saya telah mengambil - 701 00:31:52,970 --> 00:31:54,140 CS61. 702 00:31:54,140 --> 00:31:55,910 Saya sangat mendorong Anda untuk mengambil. 703 00:31:55,910 --> 00:31:58,990 Tapi keren bagian tentang fakta ini, bahwa hal-hal yang hanya nol dan yang, 704 00:31:58,990 --> 00:32:01,270 adalah bahwa segala sesuatu adalah nol dan satu. 705 00:32:01,270 --> 00:32:05,330 >> Jadi Anda dapat mengambil file yang memiliki nol yang benar dan yang Anda inginkan 706 00:32:05,330 --> 00:32:10,390 di suatu tempat di dalamnya, dan menggunakan bagian nol dan satu sebagai fungsi sum. 707 00:32:10,390 --> 00:32:11,480 >> Apa yang saya maksud dengan itu? 708 00:32:11,480 --> 00:32:15,755 Aku berarti Anda dapat mengambil file gambar yang memiliki seri benar nol dan 709 00:32:15,755 --> 00:32:17,120 yang, yang mencetak sesuatu untuk gambar. 710 00:32:17,120 --> 00:32:20,070 Dan satu program mungkin menafsirkan adalah gambar, tetapi Anda dapat menafsirkannya, jika 711 00:32:20,070 --> 00:32:22,040 Anda inginkan, sebagai fungsi sum. 712 00:32:22,040 --> 00:32:27,010 >> Jadi jika kita ingin membuka, untuk Misalnya, gambar ini. 713 00:32:27,010 --> 00:32:37,440 Mari kita pergi, Hello Kitty. 714 00:32:37,440 --> 00:32:38,810 Indah gambar kecil. 715 00:32:38,810 --> 00:32:42,260 Di sini ada string yang nol dan satu. 716 00:32:42,260 --> 00:32:45,500 Mereka 72 nol dan yang ada di gambar ini. 717 00:32:45,500 --> 00:32:47,695 >> Jadi apa yang bisa saya lakukan, maka, adalah menulis - 718 00:32:47,695 --> 00:32:50,510 719 00:32:50,510 --> 00:32:51,760 Aku harus ingat di mana mereka berada. 720 00:32:51,760 --> 00:32:54,550 721 00:32:54,550 --> 00:32:55,720 Aku akan menemukan bahwa dalam satu detik. 722 00:32:55,720 --> 00:32:57,840 Tapi kita lakukan - 723 00:32:57,840 --> 00:32:59,440 biarkan aku mencari tahu di mana mereka berada. 724 00:32:59,440 --> 00:33:00,020 Satu detik. 725 00:33:00,020 --> 00:33:01,270 Mari kita lakukan - 726 00:33:01,270 --> 00:33:05,800 727 00:33:05,800 --> 00:33:07,240 >> AUDIENCE: [Tak terdengar]. 728 00:33:07,240 --> 00:33:08,490 >> SPEAKER: Terima kasih. 729 00:33:08,490 --> 00:33:24,240 730 00:33:24,240 --> 00:33:28,740 Jadi jika kita menjalankan program ini, yang bukannya membaca dalam sebuah file, kemudian ia pergi 731 00:33:28,740 --> 00:33:33,160 indeks ini dalam file. 732 00:33:33,160 --> 00:33:35,500 Dan kemudian, sekali lagi, sama seperti MySum, mengambil dua angka. 733 00:33:35,500 --> 00:33:41,410 Kita dapat menambahkan nomor persis sama seperti telah kita lakukan sebelumnya, yang pergi ke 734 00:33:41,410 --> 00:33:44,850 menunjukkan kepada Anda bagaimana fakta bahwa, di akhir hari, semua hal ini adalah 735 00:33:44,850 --> 00:33:45,350 nol dan satu. 736 00:33:45,350 --> 00:33:48,170 Dan itu hanya bagaimana Anda memilih untuk menafsirkannya. 737 00:33:48,170 --> 00:33:50,770 >> Dan jika Anda benar-benar melihat pada gambar ini - 738 00:33:50,770 --> 00:33:52,930 mari kita memperbesar sedikit. 739 00:33:52,930 --> 00:33:53,720 Dapatkah semua orang melihatnya? 740 00:33:53,720 --> 00:33:57,570 Anda akan melihat di sini, ada beberapa noda aneh. 741 00:33:57,570 --> 00:34:00,130 742 00:34:00,130 --> 00:34:02,290 Mari kita pergi - ini adalah gambar asli. 743 00:34:02,290 --> 00:34:04,540 Anda akan melihat di sini tidak ada noda. 744 00:34:04,540 --> 00:34:08,420 Itu adalah kode untuk fungsi sum, adalah bahwa sedikit noda di sana. 745 00:34:08,420 --> 00:34:13,449 >> Dan sebenarnya, sekali lagi, jika Anda belajar lebih banyak tentang hal ini, Anda akan menyadari bahwa ini 746 00:34:13,449 --> 00:34:18,270 Hello Kitty, yang bahkan lebih besar noda, memiliki kode yang dapat mengambil alih 747 00:34:18,270 --> 00:34:21,800 komputer jika tidak dilindungi tepat. 748 00:34:21,800 --> 00:34:23,920 Jadi Anda benar-benar dapat menjalankan ini. 749 00:34:23,920 --> 00:34:25,380 Aku tidak akan menjalankannya sekarang. 750 00:34:25,380 --> 00:34:30,600 Tapi Anda bisa menjalankan ini Hello Kitty gambar, dan dapat 751 00:34:30,600 --> 00:34:32,429 mengambil alih komputer Anda. 752 00:34:32,429 --> 00:34:35,159 >> Jadi itu saja untuk demo. 753 00:34:35,159 --> 00:34:38,560 Apakah Ada yang punya pertanyaan, komentar, kekhawatiran? 754 00:34:38,560 --> 00:34:39,515 Saya pikir hal ini adalah menarik. 755 00:34:39,515 --> 00:34:41,500 Ini mengilhami saya untuk belajar lebih banyak. 756 00:34:41,500 --> 00:34:44,980 Saya sangat merekomendasikan, jika Anda tertarik sama sekali pada CS, bicara padaku. 757 00:34:44,980 --> 00:34:50,250 Meskipun aku Ilmu Sosial Concentrator, aku CS, sekunder, sehingga 758 00:34:50,250 --> 00:34:52,340 Aku masih tahu sedikit. 759 00:34:52,340 --> 00:34:53,810 Tapi aku pasti tahu apa kelas yang harus Anda ambil. 760 00:34:53,810 --> 00:34:57,940 Saya pikir itu semua benar-benar menarik, dan saya mendorong Anda, tentu, untuk 761 00:34:57,940 --> 00:35:00,330 mempelajari lebih lanjut jika Anda tertarik. 762 00:35:00,330 --> 00:35:02,090 >> OK, saya memiliki satu hal terakhir. 763 00:35:02,090 --> 00:35:05,530 764 00:35:05,530 --> 00:35:05,870 Maaf. 765 00:35:05,870 --> 00:35:06,460 Ada pertanyaan? 766 00:35:06,460 --> 00:35:10,010 Aku tidak berhenti untuk menunggu jika ada yang memiliki pertanyaan tentang hal itu. 767 00:35:10,010 --> 00:35:13,220 768 00:35:13,220 --> 00:35:16,900 >> Apakah ada orang akan CS Concentrator? 769 00:35:16,900 --> 00:35:18,580 Atau berpikir tentang hal itu? 770 00:35:18,580 --> 00:35:20,730 Satu, dua, tiga, empat. 771 00:35:20,730 --> 00:35:21,620 Satu - satunya. 772 00:35:21,620 --> 00:35:24,680 Anna adalah satu-satunya tangan yang mengangkat otoritatif. 773 00:35:24,680 --> 00:35:27,640 774 00:35:27,640 --> 00:35:29,390 OK, itu keren. 775 00:35:29,390 --> 00:35:30,110 Assam, apa yang akan Anda lakukan? 776 00:35:30,110 --> 00:35:33,220 >> AUDIENCE: [Tak terdengar]. 777 00:35:33,220 --> 00:35:33,910 >> SPEAKER: Constantine? 778 00:35:33,910 --> 00:35:34,990 >> AUDIENCE: Fisika. 779 00:35:34,990 --> 00:35:36,720 >> SPEAKER: Whoa, itu cepat. 780 00:35:36,720 --> 00:35:40,770 Anda memiliki pengalaman buruk dalam CS50? 781 00:35:40,770 --> 00:35:42,015 [Tak terdengar], apa yang akan Anda lakukan? 782 00:35:42,015 --> 00:35:42,980 >> AUDIENCE: Saya tidak tahu. 783 00:35:42,980 --> 00:35:43,924 >> SPEAKER: Curt? 784 00:35:43,924 --> 00:35:45,900 >> AUDIENCE: Econ atau CS. 785 00:35:45,900 --> 00:35:46,910 >> SPEAKER: Econ atau CS. 786 00:35:46,910 --> 00:35:47,840 Tom? 787 00:35:47,840 --> 00:35:48,385 >> AUDIENCE: Aku melakukan Stat. 788 00:35:48,385 --> 00:35:48,950 >> SPEAKER: Stat? 789 00:35:48,950 --> 00:35:50,100 OK. 790 00:35:50,100 --> 00:35:51,000 Apa yang kamu? 791 00:35:51,000 --> 00:35:51,310 >> AUDIENCE: Me? 792 00:35:51,310 --> 00:35:51,750 >> SPEAKER: Ya. 793 00:35:51,750 --> 00:35:52,190 >> AUDIENCE: Stat. 794 00:35:52,190 --> 00:35:52,520 >> SPEAKER: Stat. 795 00:35:52,520 --> 00:35:53,500 Oh, di sana Anda pergi. 796 00:35:53,500 --> 00:35:55,200 Tom, berbicara dengan Alden. 797 00:35:55,200 --> 00:35:56,932 Emily, apa yang Anda? 798 00:35:56,932 --> 00:35:57,396 >> AUDIENCE: Biomedis - 799 00:35:57,396 --> 00:36:00,178 >> SPEAKER: Apakah Anda di bagian ini? 800 00:36:00,178 --> 00:36:03,040 >> AUDIENCE: No 801 00:36:03,040 --> 00:36:04,530 >> SPEAKER: OK, itu Emily. 802 00:36:04,530 --> 00:36:05,670 Dia teman saya. 803 00:36:05,670 --> 00:36:10,080 Jelas tidak baik dari teman, karena dia memberi saya waktu yang sulit. 804 00:36:10,080 --> 00:36:13,223 Anda bisa menjadi lebih baik untuk saya di depan semua orang, mahasiswa saya - 805 00:36:13,223 --> 00:36:14,580 >> AUDIENCE: Aku melakukan panduan Q Anda. 806 00:36:14,580 --> 00:36:14,870 >> SPEAKER: Benarkah? 807 00:36:14,870 --> 00:36:15,510 Uh oh. 808 00:36:15,510 --> 00:36:17,224 OK, kau menakjubkan. 809 00:36:17,224 --> 00:36:19,380 Aku sangat mencintaimu. 810 00:36:19,380 --> 00:36:20,600 Oh boy. 811 00:36:20,600 --> 00:36:28,320 >> Anyway, I, tadi malam, seperti segala sesuatu - 812 00:36:28,320 --> 00:36:32,220 Saya yakin semua orang tampaknya benar-benar menekankan sekarang. 813 00:36:32,220 --> 00:36:35,970 Saya tidak tahu, adalah mahasiswa - yang kalian merasa stres? 814 00:36:35,970 --> 00:36:36,855 Aku merasa stres. 815 00:36:36,855 --> 00:36:37,980 Rasanya seperti, Anda pulang untuk Thanksgiving. 816 00:36:37,980 --> 00:36:40,660 Kau seperti, aku akan melakukan semua hal ini. 817 00:36:40,660 --> 00:36:41,530 >> AUDIENCE: Ini sangat berbeda. 818 00:36:41,530 --> 00:36:42,560 >> SPEAKER: Ya, dan kau kembali. 819 00:36:42,560 --> 00:36:45,290 Jeff, Anda tidak merasa seperti itu? 820 00:36:45,290 --> 00:36:46,610 >> AUDIENCE: Saya hanya berpikir Saya akan melakukan sedikit. 821 00:36:46,610 --> 00:36:48,660 >> SPEAKER: OK, bagus. 822 00:36:48,660 --> 00:36:51,650 Jadi saya datang kembali, dan saya belum melakukan apa-apa. 823 00:36:51,650 --> 00:36:53,260 Dan itu semua super stres. 824 00:36:53,260 --> 00:36:55,640 Dan saya khawatir, benar-benar prihatin, tentang apakah atau tidak saya 825 00:36:55,640 --> 00:36:57,380 akan menyelesaikan segala sesuatu yang saya harus. 826 00:36:57,380 --> 00:37:01,750 Tapi tadi malam, saya tidak stres, Aku hanya sedikit sedih. 827 00:37:01,750 --> 00:37:04,520 Jadi saya menulis di jurnal saya tentang apa yang saya sedih tentang. 828 00:37:04,520 --> 00:37:08,020 Dan aku sedih tentang bagian ini di kelas ini akan segera berakhir. 829 00:37:08,020 --> 00:37:11,100 >> Jadi saya hanya akan membaca untuk kalian potongan kecil dari jurnal saya, 830 00:37:11,100 --> 00:37:12,950 dari tadi malam. 831 00:37:12,950 --> 00:37:17,400 Dapatkah saya mendapatkan beberapa serbet, beberapa jaringan dari Tom? 832 00:37:17,400 --> 00:37:18,040 Tidak, aku akan menangis. 833 00:37:18,040 --> 00:37:19,720 Aku tidak menangis. 834 00:37:19,720 --> 00:37:22,030 Bukan berarti Anda tidak bisa menangis, Aku hanya tidak menangis. 835 00:37:22,030 --> 00:37:24,040 Aku bahkan tidak tahu apakah air mata saya kelenjar bekerja - saluran air mata. 836 00:37:24,040 --> 00:37:25,630 Saya tak pernah menangis dalam waktu yang lama. 837 00:37:25,630 --> 00:37:26,510 >> AUDIENCE: [Tak terdengar]. 838 00:37:26,510 --> 00:37:28,920 >> SPEAKER: OK, terima kasih. 839 00:37:28,920 --> 00:37:30,070 OK, ada sedikit pengantar - 840 00:37:30,070 --> 00:37:32,480 ada beberapa bagian lain dari jurnal saya masuk, karena saya mencoba untuk jurnal setiap 841 00:37:32,480 --> 00:37:33,600 malam sebelum aku tidur. 842 00:37:33,600 --> 00:37:34,900 Saya sangat merekomendasikan journal. 843 00:37:34,900 --> 00:37:38,600 Ini membantu Anda memproses sesuatu, dan juga sangat menghargai hari Anda. 844 00:37:38,600 --> 00:37:43,063 Dan itu membuat lebih mudah untuk melihat kembali pada hari dan menyadari bahwa 845 00:37:43,063 --> 00:37:44,240 ada banyak yang baik hal-hal yang terjadi. 846 00:37:44,240 --> 00:37:47,240 Bahkan jika Anda merasa benar-benar stres pada malam hari atau benar-benar marah, atau 847 00:37:47,240 --> 00:37:49,022 benar-benar sedih atau lelah. 848 00:37:49,022 --> 00:37:50,272 >> Oh, my god. 849 00:37:50,272 --> 00:37:52,546 850 00:37:52,546 --> 00:37:54,400 Aku bahkan tidak tahu apakah itu tertulis bahwa baik karena saya tidak mengoreksi. 851 00:37:54,400 --> 00:37:55,780 Tapi kita akan membacanya. 852 00:37:55,780 --> 00:37:59,950 Saya biasanya tidak membaca saya jurnal, jelas. 853 00:37:59,950 --> 00:38:03,720 >> "Besok, aku akan mengajarkan terakhir saya Bagian CS50 tahun. 854 00:38:03,720 --> 00:38:05,860 Ini gila bagaimana waktu cepat berlalu. 855 00:38:05,860 --> 00:38:09,900 Namun, saya dikejutkan oleh betapa berbedanya pengalaman saya mengajar tahun ini adalah 856 00:38:09,900 --> 00:38:11,365 dibanding ketika saya masih mahasiswa tahun kedua. 857 00:38:11,365 --> 00:38:14,120 Sebagai permulaan, saya pasti tahu materi yang lebih baik. 858 00:38:14,120 --> 00:38:16,820 Tapi jangan bilang kohort pertama saya siswa yang. 859 00:38:16,820 --> 00:38:20,030 Lebih penting lagi, bagaimanapun, saya menyadari bahwa sukacita yang berasal dari berdiri 860 00:38:20,030 --> 00:38:23,160 di depan ruang apa dimulai sebagai orang asing, tetapi berakhir sebagai, di 861 00:38:23,160 --> 00:38:27,150 Paling tidak, teman-teman Facebook, adalah bukan kebetulan tahun pertama. 862 00:38:27,150 --> 00:38:29,970 Sebaliknya, itu dari mengetahui bahwa, dalam beberapa cara kecil, Anda membantu 863 00:38:29,970 --> 00:38:32,980 berbakat, bijaksana, menyenangkan, dan orang yang penuh gairah belajar sedikit lebih 864 00:38:32,980 --> 00:38:34,750 tentang ilmu komputer. 865 00:38:34,750 --> 00:38:37,480 >> Kau pergeseran bahwa bola lampu hanya bit dalam soketnya, sehingga itu dapat 866 00:38:37,480 --> 00:38:42,120 untuk bersinar lebih terang dari yang Anda, atau mereka, bisa membayangkan di semester awal. 867 00:38:42,120 --> 00:38:45,390 Kau membantu mengubah mereka mengerutkan kening terbalik turun dan menanyakan pertanyaan yang 868 00:38:45,390 --> 00:38:49,240 memberikan dukungan, tapi masih memungkinkan siswa untuk berdiri sendiri. 869 00:38:49,240 --> 00:38:52,190 >> Ini tentu tidak berlebihan untuk mengatakan bahwa bagian ini adalah favorit saya 870 00:38:52,190 --> 00:38:53,190 bagian dari seminggu. 871 00:38:53,190 --> 00:38:57,930 Atau bahkan bahwa saya ragu untuk mengatakan, itu semua, di 5:30 PM setiap minggu, mengetahui 872 00:38:57,930 --> 00:39:00,640 bahwa itu akan terlalu lama sampai kita bertemu lagi. 873 00:39:00,640 --> 00:39:02,740 >> Namun, aku sangat berterima kasih kepada semua orang yang memberi saya ini 874 00:39:02,740 --> 00:39:05,010 kesempatan untuk memberikan kembali kepada orang lain. 875 00:39:05,010 --> 00:39:07,340 Untuk David, atas kesabaran dan kepercayaannya. 876 00:39:07,340 --> 00:39:11,040 Untuk kru film dan produksi, untuk membuat saya terlihat agak terhormat. 877 00:39:11,040 --> 00:39:15,380 Dan, yang paling penting, untuk murid-murid saya, tanpa mereka aku tidak punya alasan untuk 878 00:39:15,380 --> 00:39:17,890 menghabiskan waktu 10 jam mencari tahu yang terbaik cara untuk menarik pointer, atau lay out 879 00:39:17,890 --> 00:39:20,330 tabel lumba-lumba, melalui JavaScript. 880 00:39:20,330 --> 00:39:22,620 Seperti biasa, itu menjadi berkat. " 881 00:39:22,620 --> 00:39:25,420 >> Maka dengan itu, terima kasih guys. 882 00:39:25,420 --> 00:39:29,000 Aku akan melihat Anda semua di pameran CS50, dan hackathon, jika Anda berada di sana. 883 00:39:29,000 --> 00:39:32,020 Dan jika Anda memiliki pertanyaan, aku akan tetap sekitar sampai tidak ada lagi. 884 00:39:32,020 --> 00:39:33,760 Tapi aku berterima kasih kepada kalian untuk tahun yang indah. 885 00:39:33,760 --> 00:39:37,290 >> [Tepuk Tangan] 886 00:39:37,290 --> 00:39:38,540 >> SPEAKER: Aku akan menangis. 887 00:39:38,540 --> 00:39:40,800