1 00:00:00,000 --> 00:00:05,530 2 00:00:05,530 --> 00:00:09,790 >> PROFESSOR: Jadi agenda untuk minggu ini, tidak banyak hal. 3 00:00:09,790 --> 00:00:12,801 Tapi mudah-mudahan, sangat membantu dan relevan untuk kalian minggu ini. 4 00:00:12,801 --> 00:00:15,550 Tapi kita akan menghabiskan mungkin 15, 20 menit hanya cepat berbicara 5 00:00:15,550 --> 00:00:17,370 tentang Daftar link. 6 00:00:17,370 --> 00:00:19,694 Daftar link yang akan akan dibahas pada kuis. 7 00:00:19,694 --> 00:00:22,610 Jadi mungkin itu akan sangat membantu untuk belajar sedikit tentang apa itu. 8 00:00:22,610 --> 00:00:25,210 >> Kita akan menghabiskan besar Mayoritas bagian hari ini 9 00:00:25,210 --> 00:00:27,640 akan lebih kuis nol masalah praktek. 10 00:00:27,640 --> 00:00:30,970 Dan kemudian kita akan menghemat mungkin 20, 30 menit pada akhir untuk setiap pertanyaan berlama-lama 11 00:00:30,970 --> 00:00:32,850 ada yang memiliki. 12 00:00:32,850 --> 00:00:34,610 >> Dan kemudian, yang terakhir lima menit, aku akan 13 00:00:34,610 --> 00:00:36,467 untuk memberikan pidato pompa untuk kuis. 14 00:00:36,467 --> 00:00:38,050 Kalian semua ingin berada di sini untuk itu. 15 00:00:38,050 --> 00:00:39,591 Karena itu akan menjadi waktu yang baik. 16 00:00:39,591 --> 00:00:42,650 17 00:00:42,650 --> 00:00:49,230 >> Baiklah, sehingga beberapa materi tentang Daftar link. 18 00:00:49,230 --> 00:00:52,620 Bagaimana mereka biasanya terstruktur adalah Anda memiliki apa yang disebut node, kan? 19 00:00:52,620 --> 00:00:54,870 Anda memiliki hal-hal ini disebut node, yang struct. 20 00:00:54,870 --> 00:00:57,360 Aku akan pergi ke cara membuat node di slide berikutnya. 21 00:00:57,360 --> 00:01:00,680 Tapi pada dasarnya semua terkait daftar adalah adalah data yang 22 00:01:00,680 --> 00:01:03,340 telah dirangkai melalui pointer. 23 00:01:03,340 --> 00:01:09,110 >> Dan keuntungan yang kita miliki menggunakan linked list lebih, 24 00:01:09,110 --> 00:01:11,280 mungkin, seperti array, adalah fakta bahwa dalam array 25 00:01:11,280 --> 00:01:15,000 Anda perlu satu blok berdekatan dari memori semua di tempat yang sama, salah satu 26 00:01:15,000 --> 00:01:16,870 demi satu, untuk dapat memiliki itu. 27 00:01:16,870 --> 00:01:20,200 Sedangkan linked list, Anda bisa memiliki potongan kecil acak memori 28 00:01:20,200 --> 00:01:23,020 seluruh komputer Anda dirangkai oleh pointer. 29 00:01:23,020 --> 00:01:26,270 >> Dan dengan cara ini Anda dapat mengakses informasi 30 00:01:26,270 --> 00:01:28,610 yang datang satu demi satu lainnya, setelah yang lain 31 00:01:28,610 --> 00:01:32,720 tanpa perlu hanya sepotong besar memori di komputer Anda di suatu tempat. 32 00:01:32,720 --> 00:01:35,910 Dan jadi ini adalah salah satu utama alasan mengapa kita menggunakan link list. 33 00:01:35,910 --> 00:01:40,300 >> Kedua, itu sangat mudah untuk secara dinamis mengubah ukuran daftar link yang karena dalam array, 34 00:01:40,300 --> 00:01:44,720 ketika Anda mendeklarasikan array, Anda memiliki nilai yang ditetapkan tertentu. 35 00:01:44,720 --> 00:01:47,340 Katakanlah saya ingin menciptakan array 10 bilangan bulat. 36 00:01:47,340 --> 00:01:49,970 Saya membuat sebuah array dari 10 bilangan bulat, dan hanya itu. 37 00:01:49,970 --> 00:01:50,580 Ini 10. 38 00:01:50,580 --> 00:01:52,038 Aku tidak tahu apa yang harus dilakukan setelah itu. 39 00:01:52,038 --> 00:01:53,680 Jika saya ingin membuat 11, tidak bisa melakukannya. 40 00:01:53,680 --> 00:01:55,710 Jika saya ingin membuatnya 9, tidak bisa melakukannya. 41 00:01:55,710 --> 00:01:59,910 >> Sedangkan dalam daftar link, anda dapat menambah dan menghapus dan menyisipkan mana pun Anda inginkan. 42 00:01:59,910 --> 00:02:04,940 Anda dinamis dapat mengubah ukuran Anda struktur di sini, struktur data Anda. 43 00:02:04,940 --> 00:02:08,370 Dan yang memberi kita banyak lebih banyak fleksibilitas ditambahkan 44 00:02:08,370 --> 00:02:11,320 bahwa kita tidak biasanya memiliki dengan array. 45 00:02:11,320 --> 00:02:15,210 >> Siapapun bingung pada dasar struktur cara daftar link 46 00:02:15,210 --> 00:02:17,930 atau mengapa kita harus menggunakan salah satu dari array? 47 00:02:17,930 --> 00:02:20,330 Ya, kita akan pergi lebih detail bagaimana untuk benar-benar membuat satu. 48 00:02:20,330 --> 00:02:24,121 Tapi ini hanya jenis arti umum sekarang. 49 00:02:24,121 --> 00:02:24,620 Keren. 50 00:02:24,620 --> 00:02:28,770 Dan array dirangkai dari hal-hal kecil yang indah ini 51 00:02:28,770 --> 00:02:29,960 disebut node. 52 00:02:29,960 --> 00:02:32,210 Semua node yang adalah jenis struct. 53 00:02:32,210 --> 00:02:36,090 Ingat, sebuah struct adalah jika Anda ingin untuk membuat jenis tertentu variabel 54 00:02:36,090 --> 00:02:39,850 dalam C yang sudah tidak ada, Anda, sebagai programmer, 55 00:02:39,850 --> 00:02:42,030 benar-benar dapat membuat yang sendiri. 56 00:02:42,030 --> 00:02:46,540 >> Dan jenis data struktur disebut node, 57 00:02:46,540 --> 00:02:50,770 sebenarnya telah dibuat oleh kami, bahwa tidak ada dalam C sendiri. 58 00:02:50,770 --> 00:02:53,150 Dan cara yang Anda membuat satu adalah Anda harus 59 00:02:53,150 --> 00:02:57,170 header dari typedef struct, yang memberitahu compiler saya 60 00:02:57,170 --> 00:02:59,640 sekitar untuk membuat struct. 61 00:02:59,640 --> 00:03:00,830 >> Kami akan nama itu "simpul." 62 00:03:00,830 --> 00:03:03,350 Dan di dalam kita akan untuk mendeklarasikan variabel dalam, 63 00:03:03,350 --> 00:03:05,060 yang akan menyimpan nilai. 64 00:03:05,060 --> 00:03:09,320 Dan kemudian kita juga akan telah pointer yang disebut "berikutnya" 65 00:03:09,320 --> 00:03:12,090 yang menunjuk ke depan node dalam link list. 66 00:03:12,090 --> 00:03:14,730 Dan kemudian Anda menyelesaikan itu dari dengan hanya mengulangi simpul lagi sehingga 67 00:03:14,730 --> 00:03:17,490 compiler tahu, OK itulah akhir dari struct saya. 68 00:03:17,490 --> 00:03:22,540 >> Dan dengan cara ini, kita baik menciptakan array kecil yang lucu 69 00:03:22,540 --> 00:03:25,450 semacam itu dengan nilai dan dengan pointer. 70 00:03:25,450 --> 00:03:27,757 Dan Anda dapat menghubungkan mereka semua bersama-sama dengan mereka pointer. 71 00:03:27,757 --> 00:03:30,090 Sehingga mereka semua dapat menjadi semacam dirangkai dalam rantai. 72 00:03:30,090 --> 00:03:32,920 73 00:03:32,920 --> 00:03:34,162 >> Keren. 74 00:03:34,162 --> 00:03:35,453 Dapatkah Anda mendengar bahwa sedikit lebih baik? 75 00:03:35,453 --> 00:03:36,140 >> AUDIENCE: Ya. 76 00:03:36,140 --> 00:03:38,540 >> PROFESSOR: Baiklah. 77 00:03:38,540 --> 00:03:44,280 Jadi cara itu, seperti kalian lihat, daftar link yang khas terstruktur 78 00:03:44,280 --> 00:03:45,500 adalah Anda memiliki kepala. 79 00:03:45,500 --> 00:03:49,460 Anda memiliki nilai kepala yang tidak yang ditunjukkan oleh setiap pointer lainnya. 80 00:03:49,460 --> 00:03:53,177 Tapi itu akan menunjuk, atau referensi, node lain. 81 00:03:53,177 --> 00:03:56,510 Simpul setelah akan referensi simpul setelah itu, dan seterusnya dan sebagainya 82 00:03:56,510 --> 00:03:59,170 sampai akhirnya Anda memukul akhir daftar link anda. 83 00:03:59,170 --> 00:04:00,980 Dan Anda tidak akan memiliki pointer ada. 84 00:04:00,980 --> 00:04:04,659 >> Dan sebagainya, berpikir seperti, rantai, atau bahkan jika ada dari kalian yang dibuat, saya tidak tahu, 85 00:04:04,659 --> 00:04:06,450 seperti dengan buah loop ketika Anda masih kecil. 86 00:04:06,450 --> 00:04:08,590 Anda akan string mereka bersama-sama dan memakainya di leher Anda. 87 00:04:08,590 --> 00:04:09,840 Pikir itu hal yang sama persis. 88 00:04:09,840 --> 00:04:12,964 Anda memiliki hal-hal kecil yang Anda bisa string bersama yang mengarah ke satu 89 00:04:12,964 --> 00:04:15,291 setelah itu, satu setelah itu, dan seterusnya dan sebagainya 90 00:04:15,291 --> 00:04:17,040 sampai Anda memiliki rantai dari struktur data 91 00:04:17,040 --> 00:04:21,190 Anda dapat menggunakan namun Anda suka. 92 00:04:21,190 --> 00:04:27,370 >> Jadi cara ini kita akan biasanya memasukkan atau menghapus 93 00:04:27,370 --> 00:04:30,020 setiap node dari link Daftar ini sangat berbeda 94 00:04:30,020 --> 00:04:31,970 tergantung di mana simpul yang. 95 00:04:31,970 --> 00:04:34,880 Jadi, misalnya, karena pointer selalu 96 00:04:34,880 --> 00:04:38,645 menunjuk nilai tertentu, ketika Anda menghapus atau menyisipkan node, 97 00:04:38,645 --> 00:04:41,770 Anda ingin memastikan bahwa pointer adalah semua menunjuk pada hal yang benar. 98 00:04:41,770 --> 00:04:46,200 >> Jadi jika Anda ingin memasukkan berpotensi node baru dengan nilai satu 99 00:04:46,200 --> 00:04:48,379 dalam link diurutkan daftar, kita semua tahu di sini 100 00:04:48,379 --> 00:04:51,170 dari gambar yang akan masuk antara kepala dan dua, kan? 101 00:04:51,170 --> 00:04:52,620 Karena salah satu cocok di sana. 102 00:04:52,620 --> 00:04:59,060 Namun cara di mana kita akan melakukan itu adalah dengan terlebih dahulu dereferencing pointer 103 00:04:59,060 --> 00:05:02,160 dari kepala dan mengirimkan bahwa untuk satu. 104 00:05:02,160 --> 00:05:05,040 >> Tapi kami datang ke masalah di sini. 105 00:05:05,040 --> 00:05:08,280 Dapatkah orang melihat apa masalahnya adalah jika kita dereference pertama 106 00:05:08,280 --> 00:05:10,090 pointer dari kepala ke satu? 107 00:05:10,090 --> 00:05:14,202 Masalah apa yang mungkin kita mengalami jika kita mencoba untuk menambahkan ini ke depan array kita? 108 00:05:14,202 --> 00:05:15,409 >> AUDIENCE: [tidak terdengar] 109 00:05:15,409 --> 00:05:16,200 PROFESSOR: Tepat. 110 00:05:16,200 --> 00:05:20,000 Jadi di sini kita memiliki pointer yang sekali menunjuk dari kepala ke dua. 111 00:05:20,000 --> 00:05:23,120 Tetapi jika Anda menyingkirkan yang pointer, Anda menunjuk ke satu, 112 00:05:23,120 --> 00:05:26,500 kita sekarang tidak tahu ke mana harus pergi untuk menemukan dua. 113 00:05:26,500 --> 00:05:29,850 Karena seperti yang saya katakan sebelumnya, Anda punya sepotong raksasa memori di komputer Anda. 114 00:05:29,850 --> 00:05:31,860 Semua node ini bisa secara acak diselingi 115 00:05:31,860 --> 00:05:33,350 di setiap tempat di komputer Anda. 116 00:05:33,350 --> 00:05:36,140 Dan Anda tidak tahu bagaimana untuk pergi tentang menemukan itu. 117 00:05:36,140 --> 00:05:40,420 >> Dan sehingga Anda harus memiliki pointer menunjuk ke semua node di akhir. 118 00:05:40,420 --> 00:05:42,420 Atau jika Anda secara tidak sengaja dereference satu 119 00:05:42,420 --> 00:05:44,485 tanpa menugaskan pertama nilai pertama, Anda 120 00:05:44,485 --> 00:05:47,410 hanya akan kehilangan semuanya setelah itu. 121 00:05:47,410 --> 00:05:49,720 >> Jadi apa yang kita akan lakukan adalah, Anda akan pertama 122 00:05:49,720 --> 00:05:53,270 ingin membuat pointer pada node Anda ingin memasukkan. 123 00:05:53,270 --> 00:05:55,270 Arahkan ke mana Anda ingin masukkan ke, 124 00:05:55,270 --> 00:05:59,410 dan kemudian setelah itu Anda bisa menunjukkan kepala kembali ke satu. 125 00:05:59,410 --> 00:06:02,800 >> Apakah itu masuk akal untuk semua orang di sini? 126 00:06:02,800 --> 00:06:03,346 Besar. 127 00:06:03,346 --> 00:06:04,720 Anggap saja sebagai seperti rantai. 128 00:06:04,720 --> 00:06:07,420 Jika Anda menambahkan rantai, itu semacam intuitif 129 00:06:07,420 --> 00:06:10,742 bagaimana Anda akan pergi tentang memasukkan itu. 130 00:06:10,742 --> 00:06:15,274 >> OK, sehingga sebenarnya banyak lebih pendek daripada yang saya pikir itu akan, 131 00:06:15,274 --> 00:06:16,690 lima menit omongan pada daftar link di. 132 00:06:16,690 --> 00:06:19,960 Hanya jadi kalian memiliki Ide dasar dari apa itu. 133 00:06:19,960 --> 00:06:23,580 >> Di sini kita memiliki agenda untuk kuis nol. 134 00:06:23,580 --> 00:06:24,895 Jangan biarkan ini mengintimidasi Anda. 135 00:06:24,895 --> 00:06:26,270 Aku tahu itu banyak informasi. 136 00:06:26,270 --> 00:06:27,580 Hal ini terlihat sangat menakutkan. 137 00:06:27,580 --> 00:06:33,130 Ini juga banyak, saya berpikir, CSC jenis hal. 138 00:06:33,130 --> 00:06:37,440 Hal-hal seperti string heksadesimal, pointer, alokasi memori dinamis 139 00:06:37,440 --> 00:06:40,120 adalah istilah terdengar sangat menakutkan. 140 00:06:40,120 --> 00:06:42,700 >> Tapi kita akan istirahat mereka down, melakukan beberapa latihan soal 141 00:06:42,700 --> 00:06:44,980 sehingga kalian semua siap untuk tes ini. 142 00:06:44,980 --> 00:06:47,104 Berapa banyak dari kalian memiliki sudah mulai belajar? 143 00:06:47,104 --> 00:06:50,040 144 00:06:50,040 --> 00:06:53,670 >> OK, kalian mungkin ingin untuk memulai memulai 145 00:06:53,670 --> 00:06:56,480 pada itu, karena kuis besok. 146 00:06:56,480 --> 00:06:58,739 Atau Kamis untuk sebagian dari Anda. 147 00:06:58,739 --> 00:07:01,030 Ya, jadi kita akan pergi atas beberapa masalah praktik. 148 00:07:01,030 --> 00:07:04,600 Jika kalian semua ingin mengambil keluar selembar kertas, pensil. 149 00:07:04,600 --> 00:07:07,310 Kita akan hanya menghabiskan Sebagian besar dari bagian hari ini 150 00:07:07,310 --> 00:07:11,590 akan lebih beberapa yang jadi kalian harus ide dari apa yang diharapkan pada kuis. 151 00:07:11,590 --> 00:07:14,957 152 00:07:14,957 --> 00:07:16,890 >> OKE. 153 00:07:16,890 --> 00:07:19,730 Beberapa logistik Rincian juga, bagi siapa pun 154 00:07:19,730 --> 00:07:25,120 yang belum pernah ke link yang ada, jika Anda pergi ke cs50.yale.edu, di bagian depan 155 00:07:25,120 --> 00:07:28,566 Halaman ini ada link yang mengatakan "Tentang Quiz Zero." 156 00:07:28,566 --> 00:07:29,440 Link membawa Anda ke sana. 157 00:07:29,440 --> 00:07:31,065 Jika Anda belum membacanya, silahkan baca itu. 158 00:07:31,065 --> 00:07:34,470 Karena memberitahu Anda benar-benar penting informasi mengenai kuis. 159 00:07:34,470 --> 00:07:37,410 >> Aku akan melakukan ini keluar dari bahwa hanya karena, secara fisik, 160 00:07:37,410 --> 00:07:40,200 jika kalian tidak tahu di mana untuk pergi, kita akan memiliki masalah. 161 00:07:40,200 --> 00:07:44,220 Dan jadi jika Anda terakhir dalam hal dengan A untuk N, pergi ke auditorium sekolah hukum. 162 00:07:44,220 --> 00:07:47,500 Dan jika dimulai terakhir Anda dengan P sampai Z, pergi ke Davies Auditorium. 163 00:07:47,500 --> 00:07:50,240 Dan ini hanya berlaku untuk orang di bagian Rabu. 164 00:07:50,240 --> 00:07:53,420 >> Jika Anda mengambil kuis di Kamis, Anda pergi ke SSS 114 165 00:07:53,420 --> 00:07:55,078 di mana kuliah Anda biasanya adalah. 166 00:07:55,078 --> 00:07:55,953 AUDIENCE: [tidak terdengar] 167 00:07:55,953 --> 00:07:59,316 168 00:07:59,316 --> 00:08:01,940 PROFESSOR: O ke Z, Anda akan untuk pergi ke auditorium Davies. 169 00:08:01,940 --> 00:08:03,273 Aku akan mengubah itu, kan? 170 00:08:03,273 --> 00:08:05,670 171 00:08:05,670 --> 00:08:09,698 >> Oh, ya, Anda hanya gagal secara otomatis. 172 00:08:09,698 --> 00:08:11,753 >> Oh ya, itu Anda Christa. 173 00:08:11,753 --> 00:08:15,190 174 00:08:15,190 --> 00:08:16,030 Ya, saya buruk. 175 00:08:16,030 --> 00:08:17,610 Yap, O ke Z, Anda akan untuk pergi ke Davies Auditorim. 176 00:08:17,610 --> 00:08:19,140 Aku akan memperbaiki ini setelah saya meng-upload. 177 00:08:19,140 --> 00:08:20,320 Ya. 178 00:08:20,320 --> 00:08:22,160 >> Dan kemudian juga sesuatu penting untuk diingat 179 00:08:22,160 --> 00:08:25,290 adalah bahwa Rabu, jika Anda resmi terdaftar di bagian Rabu, 180 00:08:25,290 --> 00:08:26,832 Anda harus mengambil kuis Anda pada hari Rabu. 181 00:08:26,832 --> 00:08:29,706 Dan jika Anda terdaftar di Kamis, Anda harus mengambil kuis Kamis. 182 00:08:29,706 --> 00:08:31,000 Dan itu selama waktu kelas. 183 00:08:31,000 --> 00:08:35,970 Mana, saya pikir itu seperti 1:00 untuk 02:15 pada hari Rabu dan 2:30-03:45 184 00:08:35,970 --> 00:08:37,220 pada hari Kamis. 185 00:08:37,220 --> 00:08:41,710 >> Jika Anda memiliki konflik yang tak terdamaikan, Alasan dekan adalah satu-satunya hal, 186 00:08:41,710 --> 00:08:43,030 sayangnya, kita bisa mengambil. 187 00:08:43,030 --> 00:08:45,560 Karena kita telah memiliki Sebagian besar permintaan 188 00:08:45,560 --> 00:08:47,970 untuk beralih dari Rabu sampai Kamis. 189 00:08:47,970 --> 00:08:51,265 Yang kita tidak bisa menghormati kecuali kami memiliki permintaan Dean. 190 00:08:51,265 --> 00:08:52,650 >> OKE. 191 00:08:52,650 --> 00:08:57,000 Jadi sebelum kita mulai pada beberapa masalah praktek, 192 00:08:57,000 --> 00:09:00,540 Aku hanya akan pergi ke Andy tips untuk sukses. 193 00:09:00,540 --> 00:09:04,140 Kalian, ketika Anda belajar, Anda benar-benar ingin berlatih menulis kode dengan tangan. 194 00:09:04,140 --> 00:09:07,050 Pertama kali saya pernah mengambil kuis CS, aku tidak 195 00:09:07,050 --> 00:09:09,960 praktek menulis kode dengan tangan sebelum dan itu sangat 196 00:09:09,960 --> 00:09:11,890 mengejutkan bagaimana sulitnya. 197 00:09:11,890 --> 00:09:16,125 >> Ketika kalian tidak masuk ke dalam kebiasaan mengetik segala sesuatu, 198 00:09:16,125 --> 00:09:20,260 datang sangat alami menjadi mampu telah autocompleted 199 00:09:20,260 --> 00:09:22,015 kurung dan titik koma sana. 200 00:09:22,015 --> 00:09:23,890 Ketika Anda menulis itu dengan tangan, kadang-kadang 201 00:09:23,890 --> 00:09:27,100 sangat, sangat mudah untuk melupakan titik koma, atau lupa untuk menutup braket, 202 00:09:27,100 --> 00:09:30,970 atau lupa untuk menutup titik dua, atau semacam itu. 203 00:09:30,970 --> 00:09:34,322 >> Jadi, ketika Anda menulis kode dengan tangan, itu merasa sangat berbeda. 204 00:09:34,322 --> 00:09:37,280 Jadi kalian, ketika Anda bekerja melalui beberapa masalah praktek, 205 00:09:37,280 --> 00:09:38,904 itu akan baik untuk benar-benar berlatih hari ini. 206 00:09:38,904 --> 00:09:41,770 Atau besok, saya kira, jika Anda mengambil kuis pada hari Kamis. 207 00:09:41,770 --> 00:09:45,280 >> Kedua, kita memiliki yang terakhir, seperti, senilai delapan tahun praktek 208 00:09:45,280 --> 00:09:47,070 kuis online. 209 00:09:47,070 --> 00:09:50,759 Kuis tahun ini mungkin akan sangat, sangat mirip dengan mereka semua. 210 00:09:50,759 --> 00:09:51,800 Mereka semua sangat mirip. 211 00:09:51,800 --> 00:09:54,220 Anda jenis masuk ke dalam gaya jenis pertanyaan 212 00:09:54,220 --> 00:09:57,250 yang kita minta, jenis fungsi yang kita akan menulis dalam, 213 00:09:57,250 --> 00:09:58,580 et cetera, et cetera. 214 00:09:58,580 --> 00:10:01,980 >> Jadi mengambil kuis praktek, terutama di bawah kendala waktu. 215 00:10:01,980 --> 00:10:05,390 75 menit untuk melakukan kuis ini tidak banyak jumlah waktu. 216 00:10:05,390 --> 00:10:07,254 Ini sangat, sangat lama. 217 00:10:07,254 --> 00:10:09,670 Dan sehingga kalian benar-benar ingin memastikan bahwa kalian 218 00:10:09,670 --> 00:10:11,990 dalam kebiasaan menulis kode dengan tangan cepat. 219 00:10:11,990 --> 00:10:15,070 Karena Anda tidak ingin pertama waktu untuk melihat kuis panjang yang 220 00:10:15,070 --> 00:10:16,560 berada di kuis Anda. 221 00:10:16,560 --> 00:10:20,540 Kalian benar-benar ingin memastikan Anda berlatih terlebih dahulu. 222 00:10:20,540 --> 00:10:24,550 >> Keempat, Anda ingin meninjau kuliah dan bagian slide. 223 00:10:24,550 --> 00:10:25,980 Anda tidak perlu menghafal hal. 224 00:10:25,980 --> 00:10:30,430 Sebenarnya, semua orang diperbolehkan satu lembar catatan kertas putih, 225 00:10:30,430 --> 00:10:31,090 depan dan belakang. 226 00:10:31,090 --> 00:10:32,920 Kalian dapat mengetik atau menulis. 227 00:10:32,920 --> 00:10:37,070 Jika Anda menemukan diri Anda perlu untuk menghafal apa-apa, meletakkannya pada lembar itu. 228 00:10:37,070 --> 00:10:40,810 >> Saya jamin, Anda tidak ingin terjebak di tengah-tengah kuis yang 229 00:10:40,810 --> 00:10:43,890 menjadi seperti, oh yeah, apa runtime semacam ini dibandingkan semacam itu. 230 00:10:43,890 --> 00:10:46,490 Hanya menaruhnya dan menyalinnya langsung dari lembar catatan Anda. 231 00:10:46,490 --> 00:10:50,420 Maka Anda benar-benar bisa hanya menggunakan Anda otak untuk berpikir tentang masalah-masalah 232 00:10:50,420 --> 00:10:52,190 daripada harus mengingat fakta. 233 00:10:52,190 --> 00:10:55,250 Dan benar-benar memanfaatkan dari rincian niche 234 00:10:55,250 --> 00:11:00,140 yang Anda pikir Anda perlu untuk menghafal, celepuk bawah pada lembar ulasan. 235 00:11:00,140 --> 00:11:02,680 >> OK, pertanyaan logistik tentang kuis 236 00:11:02,680 --> 00:11:05,510 sebelum kita mulai beberapa masalah kuis berlatih? 237 00:11:05,510 --> 00:11:06,416 Ya? 238 00:11:06,416 --> 00:11:10,040 >> AUDIENCE: Saya tidak punya kesempatan untuk melihat kuis [tidak terdengar] 239 00:11:10,040 --> 00:11:11,757 tapi itu akan menjadi aplikasi sebagian besar, 240 00:11:11,757 --> 00:11:14,090 atau ada juga akan menjadi, seperti, pertanyaan pengetahuan? 241 00:11:14,090 --> 00:11:14,940 >> PROFESSOR: Ini jauh. 242 00:11:14,940 --> 00:11:16,731 Jadi, cara yang saya akan dijelaskan kuis 243 00:11:16,731 --> 00:11:18,810 is-- saya mengumpulkan beberapa masalah praktek 244 00:11:18,810 --> 00:11:20,960 yang saya ditarik dari semua kuis. 245 00:11:20,960 --> 00:11:25,210 Tapi Anda akan melihat bahwa ada dua utama jenis pertanyaan kami akan meminta Anda. 246 00:11:25,210 --> 00:11:28,750 >> Satu adalah detail tingkat yang sangat rendah barang. 247 00:11:28,750 --> 00:11:31,720 Kami akan memberikan sepotong kecil kode dan mengatakan, ada kesalahan di sini? 248 00:11:31,720 --> 00:11:33,110 Apa yang akan mencetak sini? 249 00:11:33,110 --> 00:11:35,980 Apa yang akan kode ini menghasilkan, dan lain-lain. 250 00:11:35,980 --> 00:11:38,710 Jadi tingkat yang sangat rendah rincian informasi. 251 00:11:38,710 --> 00:11:42,700 >> Dan di sisi lain, kita harus sangat tingkat tinggi pertanyaan berbasis pengetahuan. 252 00:11:42,700 --> 00:11:45,190 Bisakah Anda menjelaskan apa yang perbedaan antara pencarian biner 253 00:11:45,190 --> 00:11:46,148 dan pencarian linear? 254 00:11:46,148 --> 00:11:48,500 Mengapa kita ingin menggunakan salah satu dari yang lain? 255 00:11:48,500 --> 00:11:49,960 Mungkin, apa yang GDB? 256 00:11:49,960 --> 00:11:51,560 Mengapa kita ingin menggunakan GDB? 257 00:11:51,560 --> 00:11:54,590 Tingkat yang lebih tinggi, lebih mendasar pertanyaan pemahaman. 258 00:11:54,590 --> 00:11:58,240 Jadi Anda akan melihat campuran dua dari mereka di kuis Anda. 259 00:11:58,240 --> 00:12:01,462 >> Ada lagi sebelum kita kepala langsung ke dalamnya? 260 00:12:01,462 --> 00:12:02,879 OKE. 261 00:12:02,879 --> 00:12:03,670 AUDIENCE: Satu lagi. 262 00:12:03,670 --> 00:12:04,030 PROFESSOR: Oh, satu lagi. 263 00:12:04,030 --> 00:12:04,340 Maaf. 264 00:12:04,340 --> 00:12:05,631 >> AUDIENCE: Ya, itu semua benar. 265 00:12:05,631 --> 00:12:10,140 Jadi kau mengatakan 75 menit adalah terlalu pendek, seperti itu tidak mungkin 266 00:12:10,140 --> 00:12:11,640 bahwa kita akan menyelesaikan? 267 00:12:11,640 --> 00:12:13,571 Atau, seperti, 75 menit adalah persis seperti banyak waktu 268 00:12:13,571 --> 00:12:15,700 seperti yang kita butuhkan jika kita tepat disiapkan? 269 00:12:15,700 --> 00:12:17,450 PROFESSOR: OK, jadi kuis menantang. 270 00:12:17,450 --> 00:12:19,550 Hal ini jelas menantang. 271 00:12:19,550 --> 00:12:21,092 Anda akan menemukan diri Anda pendek pada waktu. 272 00:12:21,092 --> 00:12:24,341 Anda mungkin akan memukul, seperti 10, 15 menit untuk pergi, dan menjadi seperti, kotoran. 273 00:12:24,341 --> 00:12:25,520 Saya telah begitu banyak tersisa untuk dilakukan. 274 00:12:25,520 --> 00:12:26,520 Dan itu benar-benar baik-baik saja. 275 00:12:26,520 --> 00:12:28,740 Semua orang akan merasakan hal yang sama. 276 00:12:28,740 --> 00:12:31,074 >> Hanya akan sangat menyadari berapa banyak waktu yang Anda miliki. 277 00:12:31,074 --> 00:12:33,490 Dan jadi itu sebabnya saya memberitahu Anda orang melakukan kuis praktek. 278 00:12:33,490 --> 00:12:36,672 Karena itu benar-benar memberikan rasa apa kuis akan menjadi seperti. 279 00:12:36,672 --> 00:12:39,130 Jadi jika Anda menemukan diri Anda menjadi mampu selesai praktek 280 00:12:39,130 --> 00:12:41,671 kuis dalam jumlah yang baik waktu, Anda dapat mengatur langkah Anda sendiri dengan baik, 281 00:12:41,671 --> 00:12:45,695 maka Anda tidak akan memiliki masalah Rabu atau Kamis. 282 00:12:45,695 --> 00:12:46,575 >> Keren. 283 00:12:46,575 --> 00:12:49,200 Jadi jika semua orang wants-- saya pikir kebanyakan orang memiliki lembar kertas 284 00:12:49,200 --> 00:12:49,810 keluar sudah. 285 00:12:49,810 --> 00:12:52,604 Aku akan dasarnya hanya memberikan contoh pertanyaan, 286 00:12:52,604 --> 00:12:54,520 memberikan kalian, seperti, beberapa menit untuk melakukannya. 287 00:12:54,520 --> 00:12:59,610 Dan kita akan pergi sebagai kelas apa jawaban mereka adalah. 288 00:12:59,610 --> 00:13:02,860 >> Jadi ini adalah sangat khas pertanyaan awal kita akan 289 00:13:02,860 --> 00:13:06,720 meminta Anda, hanya mengkonversi angka antara basis yang berbeda. 290 00:13:06,720 --> 00:13:09,070 Biner, seperti yang kalian bisa ingat, adalah basis dua. 291 00:13:09,070 --> 00:13:12,470 Desimal adalah basis 10, atau apa yang kita sebagai manusia biasanya menafsirkan. 292 00:13:12,470 --> 00:13:17,120 Heksadesimal adalah basis 16, yang adalah nol melalui sembilan serta A sampai F. 293 00:13:17,120 --> 00:13:19,990 >> Jadi ada empat nomor saya meminta kalian untuk mengkonversi sini. 294 00:13:19,990 --> 00:13:23,909 Saya akan memberikan Anda suka, tiga sampai empat menit untuk memikirkan bagaimana 295 00:13:23,909 --> 00:13:25,200 kami akan pergi untuk memecahkan ini. 296 00:13:25,200 --> 00:13:32,832 297 00:13:32,832 --> 00:13:35,710 >> AUDIENCE: Apakah kita diperbolehkan kalkulator? 298 00:13:35,710 --> 00:13:37,630 >> PROFESSOR: Anda tidak akan perlu kalkulator, ya. 299 00:13:37,630 --> 00:13:42,420 Saya pikir Selain itu dasar, saya pikir, adalah semua kalian akan diminta untuk melakukan. 300 00:13:42,420 --> 00:14:41,700 301 00:14:41,700 --> 00:14:45,070 >> Dan hanya jadi aku agak memiliki arti dari ketika semua orang dilakukan, mencari, 302 00:14:45,070 --> 00:14:47,429 gelombang, saya tidak tahu, tersenyum, terlihat senang jika Anda sudah selesai. 303 00:14:47,429 --> 00:14:47,929 Ya. 304 00:14:47,929 --> 00:17:21,680 305 00:17:21,680 --> 00:17:23,945 Mungkin beberapa menit lagi. 306 00:17:23,945 --> 00:18:28,080 307 00:18:28,080 --> 00:18:29,600 >> OK, mari kita membawanya dalam. 308 00:18:29,600 --> 00:18:31,580 Aku sengaja akan memberi kalian sedikit waktu 309 00:18:31,580 --> 00:18:33,760 dari Anda mungkin perlu melakukan beberapa masalah ini, 310 00:18:33,760 --> 00:18:37,124 hanya karena saya ingin memastikan bahwa kami melewati sekelompok masalah. 311 00:18:37,124 --> 00:18:39,290 Jadi jangan khawatir jika Anda tidak memiliki kesempatan untuk menyelesaikan. 312 00:18:39,290 --> 00:18:43,770 Benar-benar OK asalkan Anda memiliki ide tentang bagaimana untuk pergi tentang ini. 313 00:18:43,770 --> 00:18:45,850 Jadi mari kita pergi ke depan dan melakukan yang pertama. 314 00:18:45,850 --> 00:18:52,690 315 00:18:52,690 --> 00:18:57,870 >> Jadi pertama, apakah ada yang ingin memberitahu saya dalam biner, apa yang masing-masing digit ini 316 00:18:57,870 --> 00:19:00,484 mewakili dalam hal nilai-nilai mereka? 317 00:19:00,484 --> 00:19:01,250 Ya? 318 00:19:01,250 --> 00:19:03,349 >> AUDIENCE: Dua ke listrik nol, 2-1. 319 00:19:03,349 --> 00:19:04,140 PROFESSOR: Tepat. 320 00:19:04,140 --> 00:19:04,640 Begitu. 321 00:19:04,640 --> 00:19:13,430 322 00:19:13,430 --> 00:19:16,430 >> Tepat, sehingga biasanya ketika kita berada di dasar 10 323 00:19:16,430 --> 00:19:20,580 semua ini mewakili adalah, seperti, 10 ke dasar nol, kan? 324 00:19:20,580 --> 00:19:21,810 Itu tempat yang Anda. 325 00:19:21,810 --> 00:19:24,520 Semua tempat 10 ini Anda adalah 10 pangkat satu. 326 00:19:24,520 --> 00:19:26,600 Tempat Anda 100 adalah 10 dengan kekuatan dua. 327 00:19:26,600 --> 00:19:29,570 >> Apapun basis Anda berada di akan hubungannya dengan hal yang sama persis, 328 00:19:29,570 --> 00:19:31,480 hanya dengan basis yang berbeda. 329 00:19:31,480 --> 00:19:34,130 Jadi biner, semua yang adalah basis dua. 330 00:19:34,130 --> 00:19:37,110 Anda akan mengkonversi semua digit menjadi dua kekuasaan apapun 331 00:19:37,110 --> 00:19:38,190 dari digit itu. 332 00:19:38,190 --> 00:19:41,450 Dan dalam hal ini, kita dapat memiliki cara yang lebih mudah 333 00:19:41,450 --> 00:19:43,800 mampu menambah atau jumlah semua angka dalam rangka 334 00:19:43,800 --> 00:19:46,010 untuk diubah menjadi basis 10. 335 00:19:46,010 --> 00:19:50,362 >> Jadi tidak ada yang ingin memberitahu saya apa yang jawaban yang pertama adalah di dasar sepuluh? 336 00:19:50,362 --> 00:19:51,674 >> AUDIENCE: Dua, [tidak terdengar] 337 00:19:51,674 --> 00:19:52,340 PROFESSOR: Ya. 338 00:19:52,340 --> 00:19:53,230 AUDIENCE: 42. 339 00:19:53,230 --> 00:19:56,560 PROFESSOR: 42, di sana Anda pergi. 340 00:19:56,560 --> 00:20:00,660 Jadi cara kita mendapat jawaban ini adalah dengan melakukan dua yang pertama, yang merupakan dua. 341 00:20:00,660 --> 00:20:02,760 Ditambah dua ketiga, yang delapan. 342 00:20:02,760 --> 00:20:07,590 Ditambah dua sampai kelima, yang adalah apa pun yang tersisa. 343 00:20:07,590 --> 00:20:09,390 Anda jumlah mereka dan itu 42. 344 00:20:09,390 --> 00:20:12,000 >> Apakah ada yang bingung tentang bagaimana kita punya itu? 345 00:20:12,000 --> 00:20:15,630 Selain itu begitu mendasar, seperti Aku berkata, Anda harus OK. 346 00:20:15,630 --> 00:20:17,410 Jika tidak, baik, kita dapat berlatih itu juga. 347 00:20:17,410 --> 00:20:18,720 Tapi itu benar semua. 348 00:20:18,720 --> 00:20:20,560 Keren. 349 00:20:20,560 --> 00:20:25,570 >> Apakah ada yang ingin memberi saya menjawab yang kedua juga? 350 00:20:25,570 --> 00:20:26,860 >> 50? 351 00:20:26,860 --> 00:20:27,600 Baik. 352 00:20:27,600 --> 00:20:30,044 Siapapun bingung tentang bagaimana kita punya yang baik? 353 00:20:30,044 --> 00:20:31,960 Keren, aku akan memiliki jawaban pada slide berikutnya. 354 00:20:31,960 --> 00:20:34,440 Jadi jangan khawatir jika Anda perlu mencatatnya. 355 00:20:34,440 --> 00:20:38,860 >> OK, jadi heksadesimal adalah sedikit lebih sulit. 356 00:20:38,860 --> 00:20:41,840 tapi aku akan menunjukkan kalian jalan pintas untuk bagaimana melakukannya. 357 00:20:41,840 --> 00:20:44,800 Jadi heksadesimal, seperti yang Anda ingat, semua itu adalah menjadi 16. 358 00:20:44,800 --> 00:20:48,920 Dan karena kita sebagai manusia tidak benar-benar memiliki 16 angka untuk menyatakan bahwa, 359 00:20:48,920 --> 00:20:56,940 kita pergi dari nol sampai sembilan, yang pertama kami 10 nilai-nilai, dan kemudian kita melakukan A sampai F, 360 00:20:56,940 --> 00:20:58,630 yang enam nilai berikutnya. 361 00:20:58,630 --> 00:21:03,040 >> Dan cara termudah untuk pergi dari setiap bilangan biner ke heksadesimal 362 00:21:03,040 --> 00:21:05,350 adalah untuk istirahat mereka menjadi dua bagian. 363 00:21:05,350 --> 00:21:10,042 Dan sehingga setiap bilangan biner kami akan memberikan Anda mungkin akan memiliki delapan digit. 364 00:21:10,042 --> 00:21:11,750 Anda hanya dapat mematahkan mereka di tengah. 365 00:21:11,750 --> 00:21:17,460 >> Jadi yang pertama satu-- satu satu, satu satu, satu, satu, satu satu. 366 00:21:17,460 --> 00:21:21,340 Jenis berpikir itu, Anda tahu, menggambar slash atau koma di antara mereka. 367 00:21:21,340 --> 00:21:23,800 Dan Anda hanya dapat mengkonversi langsung apa pun 368 00:21:23,800 --> 00:21:26,670 ini adalah untuk pertama jumlah heksadesimal, 369 00:21:26,670 --> 00:21:29,880 dan apa pun di sini adalah untuk kedua dari heksadesimal. 370 00:21:29,880 --> 00:21:37,584 >> Jadi ingat dari notasi umum, apa nilai heksadesimal mulai dengan? 371 00:21:37,584 --> 00:21:38,460 >> AUDIENCE: Zero. 372 00:21:38,460 --> 00:21:39,270 >> PROFESSOR: 0x. 373 00:21:39,270 --> 00:21:45,210 Jadi kita tahu bahwa setiap kali kami meminta Anda untuk mengkonversi jumlah apapun untuk heksadesimal, 374 00:21:45,210 --> 00:21:48,230 atau setiap kali Anda melihat nomor yang dimulai dengan 0x, 375 00:21:48,230 --> 00:21:50,230 Anda tahu bahwa itu adalah nilai heksadesimal. 376 00:21:50,230 --> 00:21:54,160 >> Dan kemudian Anda akan diminta untuk menentukan apa dua digit ini. 377 00:21:54,160 --> 00:21:59,690 Dan cara Anda melakukannya, menghitung-hitung bahwa setengah dan menghitung-hitung setengah itu. 378 00:21:59,690 --> 00:22:02,870 Jadi, dalam contoh ini, apa yang akan satu, satu, satu, satu itu? 379 00:22:02,870 --> 00:22:04,890 Apa nilai itu? 380 00:22:04,890 --> 00:22:06,040 Itu akan F, kan? 381 00:22:06,040 --> 00:22:08,050 Itu akan 15. 382 00:22:08,050 --> 00:22:11,780 >> Jadi ini akan menjadi F. Satu, satu, satu, satu di sini juga 383 00:22:11,780 --> 00:22:21,270 F. Jadi satu, satu, satu, satu, satu, satu, satu, satu dalam heksadesimal, semua itu adalah 0xFF. 384 00:22:21,270 --> 00:22:25,350 Karena setengah ini diwakili F, nilai 15, 385 00:22:25,350 --> 00:22:27,331 setengah ini diwakili F, nilai 15. 386 00:22:27,331 --> 00:22:29,456 Karena ingat, kami menghitung dari nol sampai sembilan. 387 00:22:29,456 --> 00:22:35,290 Adalah seperti 10, B adalah seperti 11, F adalah 15. 388 00:22:35,290 --> 00:22:41,690 >> Apakah itu masuk akal untuk semua orang bagaimana kami dapatkan dari biner ke hexadesimal? 389 00:22:41,690 --> 00:22:44,595 >> AUDIENCE: Dan bagaimana kita mendapatkan 15 dari satu, satu, satu, satu? 390 00:22:44,595 --> 00:22:46,220 PROFESSOR: Ya, ini adalah biner, kan? 391 00:22:46,220 --> 00:22:48,090 Bayangkan ini hanya bilangan biner. 392 00:22:48,090 --> 00:22:50,792 Jadi Anda memiliki dua ke zeroth, yang merupakan salah satu. 393 00:22:50,792 --> 00:22:51,500 AUDIENCE: Oh, OK. 394 00:22:51,500 --> 00:22:51,670 Jadi Anda hanya total itu keluar. 395 00:22:51,670 --> 00:22:52,670 >> PROFESSOR: Ya, dan kemudian Anda hanya berjumlah bahwa keluar. 396 00:22:52,670 --> 00:22:53,380 Itu semua itu. 397 00:22:53,380 --> 00:22:54,890 >> AUDIENCE: OK. 398 00:22:54,890 --> 00:22:55,830 >> PROFESSOR: OK. 399 00:22:55,830 --> 00:23:00,740 >> AUDIENCE: Jadi Anda pergi dari biner ke desimal ke heksadesimal? 400 00:23:00,740 --> 00:23:04,590 >> PROFESSOR: Itulah Cara termudah untuk melakukannya, ya. 401 00:23:04,590 --> 00:23:11,390 Anda tidak akan ke desimal karena desimal hanya memiliki nol sampai sembilan. 402 00:23:11,390 --> 00:23:13,410 Kami hanya jenis membelah ini menjadi dua. 403 00:23:13,410 --> 00:23:15,201 >> AUDIENCE: [tidak terdengar] menggunakan desimal untuk menemukan 404 00:23:15,201 --> 00:23:17,809 apa itu cocok untuk di heksadesimal. 405 00:23:17,809 --> 00:23:20,100 PROFESSOR: Maksudku, kau menghitung-hitung menggunakan matematika dasar. 406 00:23:20,100 --> 00:23:20,725 AUDIENCE: Ya. 407 00:23:20,725 --> 00:23:22,300 PROFESSOR: Ya, cukup banyak. 408 00:23:22,300 --> 00:23:23,630 Hal ini sedikit membingungkan. 409 00:23:23,630 --> 00:23:26,410 Tapi hanya tahu bahwa Anda dapat membagi apa pun 410 00:23:26,410 --> 00:23:28,160 nilai ini menjadi hanya bagian. 411 00:23:28,160 --> 00:23:29,570 Lihat, apa ini dalam biner? 412 00:23:29,570 --> 00:23:30,610 Apa jumlah itu? 413 00:23:30,610 --> 00:23:33,270 Ini akan menjadi sesuatu dari nol sampai F. 414 00:23:33,270 --> 00:23:35,722 >> Berikut juga akan menjadi sesuatu dari nol sampai F. 415 00:23:35,722 --> 00:23:37,722 Dan kemudian Anda dapat menempatkan dua di sana. 416 00:23:37,722 --> 00:23:38,263 >> AUDIENCE: OK. 417 00:23:38,263 --> 00:23:38,910 PROFESSOR: Yep. 418 00:23:38,910 --> 00:23:39,410 OKE. 419 00:23:39,410 --> 00:23:42,320 Jadi kalian ingin coba yang berikutnya kemudian? 420 00:23:42,320 --> 00:23:49,601 Nol, satu, nol satu, satu, nol, satu nol. 421 00:23:49,601 --> 00:23:52,350 Saya akan memberikan orang-orang seperti 30 detik, karena Anda mungkin tidak tahu 422 00:23:52,350 --> 00:23:53,850 trik untuk bagaimana melakukan ini sebelumnya. 423 00:23:53,850 --> 00:24:24,950 424 00:24:24,950 --> 00:24:27,381 >> OK, orang ingin mendapatkan satu ini tembakan? 425 00:24:27,381 --> 00:24:28,774 >> 0x5A. 426 00:24:28,774 --> 00:24:29,440 PROFESSOR: 0x5A. 427 00:24:29,440 --> 00:24:30,470 5a. 428 00:24:30,470 --> 00:24:31,340 Baik. 429 00:24:31,340 --> 00:24:37,050 Jadi ini di sini akan be-- Anda ingin untuk memberitahu kami bagaimana Anda punya itu? 430 00:24:37,050 --> 00:24:38,920 Pertama, bagaimana Anda mendapatkan lima? 431 00:24:38,920 --> 00:24:42,030 >> AUDIENCE: Karena nol, satu, nol, satu adalah lima. 432 00:24:42,030 --> 00:24:45,170 >> PROFESSOR: Apakah semua orang mengerti mengapa nol, satu, nol, satu adalah lima? 433 00:24:45,170 --> 00:24:46,260 Anda punya satu di sini. 434 00:24:46,260 --> 00:24:48,010 Anda tidak dalam dua yang pertama. 435 00:24:48,010 --> 00:24:50,300 Dalam dua sampai kedua, Anda memiliki satu, yaitu empat. 436 00:24:50,300 --> 00:24:52,600 Jadi Anda menambahkan empat ditambah satu, Anda memiliki lima. 437 00:24:52,600 --> 00:24:53,600 Semua orang baik? 438 00:24:53,600 --> 00:24:54,100 OKE. 439 00:24:54,100 --> 00:24:56,570 Dan kemudian apa ini dan mengapa? 440 00:24:56,570 --> 00:24:58,350 Apa nomor yang A sesuai dengan? 441 00:24:58,350 --> 00:24:59,350 >> AUDIENCE: 10. 442 00:24:59,350 --> 00:25:00,976 >> PROFESSOR: Dan apa ini dalam basis dua? 443 00:25:00,976 --> 00:25:01,850 AUDIENCE: [tidak terdengar] 444 00:25:01,850 --> 00:25:03,010 PROFESSOR: Tepat. 445 00:25:03,010 --> 00:25:06,370 Jadi nilai ini kedua di sini akan 0x5A. 446 00:25:06,370 --> 00:25:08,410 >> Semua orang yang baik tentang bagaimana mengkonversi? 447 00:25:08,410 --> 00:25:10,770 Ini jauh lebih sederhana dari yang Anda pikirkan. 448 00:25:10,770 --> 00:25:13,330 Aku hanya ingin memastikan Anda tahu tips-tips 449 00:25:13,330 --> 00:25:14,950 dan trik untuk bagaimana melakukan hal itu. 450 00:25:14,950 --> 00:25:18,432 >> AUDIENCE: Mengapa Anda hanya membagi itu di tengah-tengah seperti itu? 451 00:25:18,432 --> 00:25:21,390 Hanya seperti, OK, aku hanya akan peduli ini pertama [tidak terdengar]? 452 00:25:21,390 --> 00:25:24,240 >> PROFESSOR: Karena itulah sebenarnya cara nilai-nilai heksadesimal diwakili. 453 00:25:24,240 --> 00:25:26,890 0x, yang benar-benar berarti apa-apa selain memberitahu Anda 454 00:25:26,890 --> 00:25:28,710 bahwa itu angka heksadesimal. 455 00:25:28,710 --> 00:25:31,580 Dan ini selalu merupakan empat digit pertama. 456 00:25:31,580 --> 00:25:34,330 Dan ini selalu merupakan empat digit terakhir. 457 00:25:34,330 --> 00:25:37,835 Dan dua digit hanya sesuai dengan bit yang berbeda. 458 00:25:37,835 --> 00:25:39,200 >> AUDIENCE: Jadi kita akan always-- 459 00:25:39,200 --> 00:25:41,830 >> PROFESSOR: Kau selalu akan mendapatkan delapan bit nilai. 460 00:25:41,830 --> 00:25:44,580 >> AUDIENCE: Apakah itu hanya ingin sesuatu di sini atau bahwa hal seluruh? 461 00:25:44,580 --> 00:25:46,883 PROFESSOR: Itu hanya hal di komputer, ya. 462 00:25:46,883 --> 00:25:47,424 AUDIENCE: OK. 463 00:25:47,424 --> 00:25:48,240 Mengagumkan. 464 00:25:48,240 --> 00:25:51,290 >> PROFESSOR: Juga, sehingga dalam contoh ini kita dikonversi dari biner ke desimal, 465 00:25:51,290 --> 00:25:53,290 dan dari biner ke heksadesimal. 466 00:25:53,290 --> 00:25:56,610 Kalian ingin memastikan Anda juga berlatih akan sebaliknya. 467 00:25:56,610 --> 00:26:03,370 Jadi jika saya memberi Anda 0xFF, Anda bisa menarik bahwa dalam biner, kan? 468 00:26:03,370 --> 00:26:06,820 >> Anda mengkonversi F ke biner, yang merupakan salah satu, satu, satu, satu, 469 00:26:06,820 --> 00:26:09,380 mengkonversi F ke biner, yang adalah salah satu, satu, satu, satu. 470 00:26:09,380 --> 00:26:11,310 >> Jadi kami akan meminta Anda untuk melakukan sebaliknya. 471 00:26:11,310 --> 00:26:14,817 Jadi desimal ke biner, atau heksadesimal ke biner. 472 00:26:14,817 --> 00:26:16,650 Jadi, Anda ingin membuat Pastikan Anda tahu kedua cara. 473 00:26:16,650 --> 00:26:19,371 Kami mungkin akan meminta Anda kombinasi dari keduanya. 474 00:26:19,371 --> 00:26:20,660 >> Ya, Anda punya pertanyaan? 475 00:26:20,660 --> 00:26:22,724 Saya dapat see-- Anda baik? 476 00:26:22,724 --> 00:26:23,348 AUDIENCE: Ya. 477 00:26:23,348 --> 00:26:24,560 PROFESSOR: OK. 478 00:26:24,560 --> 00:26:26,101 Apakah saya baik untuk menghapus ini? 479 00:26:26,101 --> 00:26:26,600 Besar. 480 00:26:26,600 --> 00:26:33,965 481 00:26:33,965 --> 00:26:40,437 >> Baiklah, jadi jawaban di sini jika ada penasaran nanti dan bingung. 482 00:26:40,437 --> 00:26:41,844 OKE. 483 00:26:41,844 --> 00:26:46,070 >> AUDIENCE: Apakah itu penting jika kita menempatkan surat-surat kami di gedung DPR atau huruf kecil? 484 00:26:46,070 --> 00:26:50,360 >> PROFESSOR: Itu, karena dalam heksadesimal, dengan konvensi, 485 00:26:50,360 --> 00:26:52,840 semua karakter huruf besar. 486 00:26:52,840 --> 00:26:54,650 Jadi A sampai F adalah akan menjadi huruf besar. 487 00:26:54,650 --> 00:26:58,660 Jika Anda menempatkan huruf kecil, saya tidak tahu jika kita tentu akan menandai salah. 488 00:26:58,660 --> 00:27:00,679 Tapi secara teoritis, itu tidak secara teknis 489 00:27:00,679 --> 00:27:01,970 bagaimana Anda seharusnya untuk memilikinya. 490 00:27:01,970 --> 00:27:03,303 Jadi mereka semua harus huruf besar. 491 00:27:03,303 --> 00:27:05,910 Ya, pertanyaan yang bagus. 492 00:27:05,910 --> 00:27:07,780 >> OKE. 493 00:27:07,780 --> 00:27:08,790 Pertanyaan kedua. 494 00:27:08,790 --> 00:27:12,750 Pertimbangkan program ini indah di sini. 495 00:27:12,750 --> 00:27:15,180 Saya akan mengajukan pertanyaan, Aku akan datang kembali ini. 496 00:27:15,180 --> 00:27:23,170 >> Jadi, pertama, apa yang ada di dalam standar io.h yang menarik bagi program? 497 00:27:23,170 --> 00:27:26,640 Kedua, apa batal menandakan sejalan tiga? 498 00:27:26,640 --> 00:27:30,572 Dan ketiga, apakah kembali nol dari utama, sebagai jalur enam, umumnya menandakan? 499 00:27:30,572 --> 00:27:33,280 Jika kalian ingin menulis mereka down, karena saya harus beralih kembali 500 00:27:33,280 --> 00:27:36,810 untuk slide hanya sehingga Anda dapat melihat kode. 501 00:27:36,810 --> 00:27:40,400 Ini adalah contoh dari, seperti, mungkin pertanyaan tingkat yang lebih tinggi di mana kami meminta Anda 502 00:27:40,400 --> 00:27:42,435 apa hal-hal berarti dalam sebuah program. 503 00:27:42,435 --> 00:27:47,290 504 00:27:47,290 --> 00:27:49,215 >> Semua orang yang baik bagi saya untuk kembali ke slide? 505 00:27:49,215 --> 00:27:53,400 506 00:27:53,400 --> 00:27:54,361 OK keren. 507 00:27:54,361 --> 00:27:57,610 Jadi saya akan memberikan kalian seperti mungkin tiga menit untuk melihat satu cepat nyata ini. 508 00:27:57,610 --> 00:28:41,330 509 00:28:41,330 --> 00:28:44,140 >> OK, jadi ini satu seperti cukup mudah, konseptual. 510 00:28:44,140 --> 00:28:49,280 Apakah ada yang ingin memberitahu saya apa pertama dalam oleh hash termasuk 511 00:28:49,280 --> 00:28:52,630 file library io.h kami standar? 512 00:28:52,630 --> 00:28:55,510 Mengapa kita perlu perpustakaan yang termasuk untuk program ini? 513 00:28:55,510 --> 00:28:56,930 Apa di sini yang kita butuhkan untuk? 514 00:28:56,930 --> 00:28:56,980 >> Ya? 515 00:28:56,980 --> 00:28:58,340 >> AUDIENCE: Apakah bahwa ketika Anda menempatkan printf itu? 516 00:28:58,340 --> 00:28:59,131 >> PROFESSOR: Tepat. 517 00:28:59,131 --> 00:29:01,780 Jadi printf, setiap kali Anda mengambil input dari user 518 00:29:01,780 --> 00:29:04,140 dan mencetak sesuatu ke layar, yang 519 00:29:04,140 --> 00:29:05,600 standar input, perpustakaan output. 520 00:29:05,600 --> 00:29:07,170 Anggap saja bahwa way-- input, output. 521 00:29:07,170 --> 00:29:08,430 >> Apakah saya memiliki output? 522 00:29:08,430 --> 00:29:09,207 Ya. 523 00:29:09,207 --> 00:29:12,040 Jadi saya tahu bahwa saya akan selalu perlu perpustakaan standarisasi i.o. 524 00:29:12,040 --> 00:29:16,400 >> Jadi printf adalah fungsi yang kita butuhkan untuk mengakses 525 00:29:16,400 --> 00:29:19,370 dan hashtag termasuk perpustakaan i.o standar. 526 00:29:19,370 --> 00:29:20,280 OKE. 527 00:29:20,280 --> 00:29:22,660 >> Kedua, apa batal menandakan? 528 00:29:22,660 --> 00:29:26,970 Kami memiliki int main (void), apa membatalkan sini berarti di sini pada baris ketiga? 529 00:29:26,970 --> 00:29:28,080 Ya, di belakang. 530 00:29:28,080 --> 00:29:29,020 >> AUDIENCE: [tidak terdengar] 531 00:29:29,020 --> 00:29:29,920 >> PROFESSOR: Tepat. 532 00:29:29,920 --> 00:29:33,320 Jadi ingat, kita telah belajar dimulai dengan pset kami 533 00:29:33,320 --> 00:29:35,360 bahwa Anda benar-benar bisa tentukan baris perintah 534 00:29:35,360 --> 00:29:39,010 argumen bahwa program Anda, bahwa Anda Fungsi utama, mengambil sebagai Anda, pengguna, 535 00:29:39,010 --> 00:29:39,650 menyebutnya. 536 00:29:39,650 --> 00:29:42,650 Jika kita memiliki kekosongan, itu berarti bahwa Anda hanya bisa menjalankan program secara langsung 537 00:29:42,650 --> 00:29:44,680 tanpa argumen baris perintah. 538 00:29:44,680 --> 00:29:46,160 Semua orang yang jelas tentang itu? 539 00:29:46,160 --> 00:29:46,660 OKE. 540 00:29:46,660 --> 00:29:52,850 >> Dan terakhir mengapa kita repot-repot melakukan ini hal pengembalian nol di sini? 541 00:29:52,850 --> 00:29:54,740 Mengapa kita bahkan memiliki int main? 542 00:29:54,740 --> 00:29:57,330 Mengapa kita tidak bisa hanya memiliki kekosongan void main? 543 00:29:57,330 --> 00:29:59,216 Ya? 544 00:29:59,216 --> 00:30:01,590 AUDIENCE: Hanya sehingga kita bisa pastikan bahwa program ini 545 00:30:01,590 --> 00:30:04,247 keluar berhasil, sebagai menentang jika itu bernomor. 546 00:30:04,247 --> 00:30:06,580 Dan kita akan tahu bahwa itu yang berbeda kesalahan. 547 00:30:06,580 --> 00:30:07,621 >> PROFESSOR: Ya, persis. 548 00:30:07,621 --> 00:30:10,670 Ini hanya sangat Hal konvensional yang kita lakukan, 549 00:30:10,670 --> 00:30:13,840 adalah bahwa hanya pada akhir program Anda, hanya untuk memastikan 550 00:30:13,840 --> 00:30:15,830 bahwa fungsi utama Anda berjalan dengan benar, 551 00:30:15,830 --> 00:30:17,940 kita selalu ingin melakukan kembali nol. 552 00:30:17,940 --> 00:30:21,160 Meskipun kita mungkin harus tidak melihat bahwa dicetak di mana saja. 553 00:30:21,160 --> 00:30:25,092 >> Karena sebagai programmer, Anda tahu, jika Anda memiliki banyak baris yang berbeda dari kode 554 00:30:25,092 --> 00:30:27,050 dan Anda tidak tahu di mana ini akan salah, 555 00:30:27,050 --> 00:30:30,240 dan jika kesalahan terjadi, Anda ingin pastikan bahwa Anda mendapatkan kesalahan itu. 556 00:30:30,240 --> 00:30:33,240 Dan biasanya jika terjadi salah kita akan memiliki kembalinya satu hanya 557 00:30:33,240 --> 00:30:34,669 untuk memastikan kita tahu bahwa itu adalah. 558 00:30:34,669 --> 00:30:36,460 Jadi jika Anda melihat kembali sebuah nol, yang biasanya 559 00:30:36,460 --> 00:30:38,293 berarti program anda adalah dieksekusi dengan sukses. 560 00:30:38,293 --> 00:30:40,490 561 00:30:40,490 --> 00:30:40,990 Baik? 562 00:30:40,990 --> 00:30:45,180 563 00:30:45,180 --> 00:30:45,680 Keren. 564 00:30:45,680 --> 00:30:48,710 565 00:30:48,710 --> 00:30:52,680 >> OK, program kedua di sini. 566 00:30:52,680 --> 00:30:54,827 Pertimbangkan bahwa. 567 00:30:54,827 --> 00:30:56,910 Dan jika kalian melihat mengapung, kalian mungkin bisa 568 00:30:56,910 --> 00:31:00,810 memiliki ide yang baik dari apa yang Saya akan meminta Anda. 569 00:31:00,810 --> 00:31:05,200 >> Jadi, ketika program ini mengeksekusi, seperti yang Anda lihat, 570 00:31:05,200 --> 00:31:09,330 Saya menyatakan pelampung dalam fungsi utama saya. 571 00:31:09,330 --> 00:31:13,470 Saya penamaan itu "menjawab," dan aku pengaturan yang sama dengan satu dibagi dengan 10. 572 00:31:13,470 --> 00:31:17,860 Saya mencetak, untuk satu desimal, float itu. 573 00:31:17,860 --> 00:31:19,880 Dan kemudian aku kembali nol. 574 00:31:19,880 --> 00:31:24,470 >> Jadi ketika menjalankan program, berpikir kembali ke serakah sekarang, 575 00:31:24,470 --> 00:31:26,550 Program ini mencetak 0,0. 576 00:31:26,550 --> 00:31:29,993 Seperti kita semua tahu, mudah-mudahan kita semua tahu, satu dibagi dengan 10 bukanlah 0.00, 577 00:31:29,993 --> 00:31:32,350 itu 0,1. 578 00:31:32,350 --> 00:31:37,810 Tapi menjelaskan mengapa program ini berpikir yang 1 dibagi dengan 10 cetakan ke 0,1 lain 579 00:31:37,810 --> 00:31:39,504 dari 0,1? 580 00:31:39,504 --> 00:31:42,545 Saya akan memberikan kalian mungkin seperti 30 detik hanya cepat berpikir tentang itu 581 00:31:42,545 --> 00:31:43,878 dan aku akan kembali ke program. 582 00:31:43,878 --> 00:32:17,800 583 00:32:17,800 --> 00:32:20,290 >> OKE. 584 00:32:20,290 --> 00:32:22,205 Siapapun ingin mencobanya? 585 00:32:22,205 --> 00:32:24,330 Dalam tiga kalimat atau kurang, karena biasanya kami 586 00:32:24,330 --> 00:32:27,650 akan membatasi semua jawaban untuk tiga kalimat atau kurang 587 00:32:27,650 --> 00:32:31,130 sehingga Anda tidak hanya memuntahkan hal-hal acak ke kuis Anda. 588 00:32:31,130 --> 00:32:32,740 >> Ya, mengambil tembakan. 589 00:32:32,740 --> 00:32:36,390 >> AUDIENCE: Jadi saya pikir ada ini hal yang disebut, seperti, [tidak terdengar] 590 00:32:36,390 --> 00:32:42,320 Jadi mungkin ada, misalnya, mungkin ada, seperti, 0,09, 591 00:32:42,320 --> 00:32:47,250 yang mana Anda mencetak pertama digit, itu akan 0.0? 592 00:32:47,250 --> 00:32:49,100 >> PROFESSOR: Tutup, tidak cukup. 593 00:32:49,100 --> 00:32:49,810 Christabell? 594 00:32:49,810 --> 00:32:51,770 >> AUDIENCE: Kau membagi satu dan 10, dan mereka berdua bilangan bulat. 595 00:32:51,770 --> 00:32:54,610 Dan cara bahwa itu akan untuk menyimpannya sebagai integer. 596 00:32:54,610 --> 00:32:56,480 Dan integer terdekat akan 0,0. 597 00:32:56,480 --> 00:32:57,471 Dan jadi itu 0,1. 598 00:32:57,471 --> 00:32:58,970 PROFESSOR: Ya, itu benar-benar baik. 599 00:32:58,970 --> 00:33:00,040 Itulah jawaban yang benar. 600 00:33:00,040 --> 00:33:03,597 Jadi ini adalah sangat membingungkan Konsep untuk banyak anak-anak. 601 00:33:03,597 --> 00:33:06,680 Dan aku benar-benar ingin memastikan bahwa ini diperkuat di kepala semua orang. 602 00:33:06,680 --> 00:33:10,090 >> Jadi apa yang kita sebut mengambang titik ketidaktepatan, 603 00:33:10,090 --> 00:33:12,800 di mana alasan mengapa banyak program Anda di serakah 604 00:33:12,800 --> 00:33:17,010 tidak bekerja pada awalnya adalah karena Anda lupa untuk membuang variabel Anda. 605 00:33:17,010 --> 00:33:19,370 Jadi apa yang dikatakan Christabell adalah sepenuhnya benar. 606 00:33:19,370 --> 00:33:21,990 >> Sebuah float secara inheren tidak tepat. 607 00:33:21,990 --> 00:33:26,400 Karena dalam komputer, tepat, kita harus jumlah terbatas bit memori 608 00:33:26,400 --> 00:33:28,480 bisa kita gunakan untuk mewakili angka. 609 00:33:28,480 --> 00:33:33,480 Jadi, misalnya, ID CS50 ini is-- Saya pikir itu adalah komputer 64-bit. 610 00:33:33,480 --> 00:33:37,520 >> Sebuah float hanya dapat diwakili dengan jumlah yang terbatas dari mereka bit. 611 00:33:37,520 --> 00:33:42,260 Dan 0,1 dengan nol yang tak terbatas, yang adalah 0,1, kan? 612 00:33:42,260 --> 00:33:45,450 Tapi kita tidak bisa benar-benar menyimpan nomor di komputer kita. 613 00:33:45,450 --> 00:33:47,810 Kami hanya tidak memiliki memori yang cukup untuk melakukannya. 614 00:33:47,810 --> 00:33:52,340 >> Dan pendekatan terdekat dari apa yang disimpan dalam memori sebenarnya 615 00:33:52,340 --> 00:33:55,390 sesuatu seperti 0.000 sesuatu, sesuatu, sesuatu, sesuatu. 616 00:33:55,390 --> 00:34:01,240 Yang, setelah Anda memotong itu, putaran ke 0.0. 617 00:34:01,240 --> 00:34:05,640 >> Dan jadi contoh ini adalah salah satu yang menunjukkan banyak masalah 618 00:34:05,640 --> 00:34:08,469 kita memiliki setiap kali kita berada mencoba salah melakukan matematika 619 00:34:08,469 --> 00:34:11,000 tanpa casting sebagai bilangan bulat yang berbeda. 620 00:34:11,000 --> 00:34:14,870 Jadi hanya berhati-hati dari hal ini terjadi. 621 00:34:14,870 --> 00:34:18,239 >> Pada kuis, jika kita memberikan blok kode dan itu seperti, 622 00:34:18,239 --> 00:34:19,510 apa yang mencetak di akhir? 623 00:34:19,510 --> 00:34:24,096 Dan jika itu beberapa nilai acak Anda orang harus tahu mengapa itu terjadi. 624 00:34:24,096 --> 00:34:24,909 Ya? 625 00:34:24,909 --> 00:34:27,926 >> AUDIENCE: Batas adalah menyingkirkan semuanya setelah titik tertentu? 626 00:34:27,926 --> 00:34:28,513 [Tidak terdengar] 627 00:34:28,513 --> 00:34:30,929 PROFESSOR: Ya, jadi sebenarnya ini adalah contoh yang sangat buruk, 628 00:34:30,929 --> 00:34:37,870 karena 0.100 apapun sebenarnya akan memotong ke 0,1. 629 00:34:37,870 --> 00:34:41,389 Tetapi jika Anda adalah untuk menjalankan itu-- aku tidak ingat, karena tahun lalu mereka 630 00:34:41,389 --> 00:34:42,830 berlari pada program yang berbeda. 631 00:34:42,830 --> 00:34:45,300 Mereka berlari di sesuatu yang disebut yang CS50 Appliance, yang 632 00:34:45,300 --> 00:34:46,389 berbeda dari ID. 633 00:34:46,389 --> 00:34:48,520 Itu adalah sistem 32-bit, saya pikir. 634 00:34:48,520 --> 00:34:50,290 Dan jadi ada nomor yang berbeda. 635 00:34:50,290 --> 00:34:53,330 >> Tapi pada dasarnya, hanya tahu bahwa seluruh konsep pemotongan 636 00:34:53,330 --> 00:34:54,815 dan bagaimana itu hanya memotong hal off. 637 00:34:54,815 --> 00:34:55,690 Dan jadi jika rounds-- 638 00:34:55,690 --> 00:34:56,300 >> AUDIENCE: Tanpa pembulatan. 639 00:34:56,300 --> 00:34:57,370 >> PROFESSOR: Tepat. 640 00:34:57,370 --> 00:34:57,870 Ya. 641 00:34:57,870 --> 00:35:02,330 642 00:35:02,330 --> 00:35:04,380 Keren. 643 00:35:04,380 --> 00:35:05,250 >> Hi, di belakang. 644 00:35:05,250 --> 00:35:07,634 Kami hanya akan membahas beberapa Ulasan kuis pertanyaan. 645 00:35:07,634 --> 00:35:08,430 >> Baiklah. 646 00:35:08,430 --> 00:35:10,150 Jadi mempertimbangkan program yang berbeda di sini. 647 00:35:10,150 --> 00:35:12,797 648 00:35:12,797 --> 00:35:15,380 Aku akan memberikan kalian sebuah beberapa menit untuk membaca lebih ini. 649 00:35:15,380 --> 00:35:18,588 Ini adalah sesuatu yang sangat untuk baru-baru ini yang saya pikir meniup banyak dari Anda 650 00:35:18,588 --> 00:35:19,142 pikiran orang itu. 651 00:35:19,142 --> 00:35:21,100 Tapi kami akan berbicara melalui ini lagi hanya 652 00:35:21,100 --> 00:35:24,152 untuk memastikan Anda memahaminya sepenuhnya. 653 00:35:24,152 --> 00:35:24,652 OKE. 654 00:35:24,652 --> 00:35:41,280 655 00:35:41,280 --> 00:35:41,780 OKE. 656 00:35:41,780 --> 00:35:44,342 Siapapun membutuhkan lebih banyak waktu untuk membaca kode ini? 657 00:35:44,342 --> 00:35:45,650 OKE. 658 00:35:45,650 --> 00:35:50,630 >> Jadi menurut saya yang dalam program ini saya 659 00:35:50,630 --> 00:35:53,460 menciptakan dua string dengan menggunakan GetString. 660 00:35:53,460 --> 00:35:55,180 Satu disebut dan satu disebut t. 661 00:35:55,180 --> 00:35:58,680 Dan jika mereka sama sama satu sama lain, 662 00:35:58,680 --> 00:36:00,880 harus mencetak "Anda ketik hal yang sama. " 663 00:36:00,880 --> 00:36:04,170 >> Tapi elsewise, itu akan mencetak, "Anda diketik hal yang berbeda, "benar? 664 00:36:04,170 --> 00:36:05,990 Tampaknya sangat, sangat sederhana. 665 00:36:05,990 --> 00:36:08,720 Tapi, bagaimanapun, jika saya benar-benar mencoba untuk menulis program ini, 666 00:36:08,720 --> 00:36:12,230 tampaknya bahwa bahkan ketika saya input string yang sama persis, 667 00:36:12,230 --> 00:36:15,490 masih mencetak, "Anda diketik hal yang berbeda! " 668 00:36:15,490 --> 00:36:18,020 Apakah ada yang ingin mengambil menembak mengapa program ini selalu 669 00:36:18,020 --> 00:36:20,370 menjawab bahwa input berbeda, bahkan 670 00:36:20,370 --> 00:36:22,090 ketika kata-kata sendiri sama? 671 00:36:22,090 --> 00:36:24,870 672 00:36:24,870 --> 00:36:29,170 >> Jadi jika saya harus input-- David cinta menggunakan contoh seperti ibu, kan? 673 00:36:29,170 --> 00:36:37,890 Huruf kecil M-O-M untuk S, T sama dengan huruf kecil M-O-M. 674 00:36:37,890 --> 00:36:40,340 Jika aku berlari melalui kode itu, mengapa hal itu 675 00:36:40,340 --> 00:36:44,180 mencetak "Anda mengetik hal yang berbeda?" 676 00:36:44,180 --> 00:36:46,336 >> Apakah ada yang membutuhkan lebih banyak waktu untuk berpikir tentang hal ini? 677 00:36:46,336 --> 00:36:47,294 OK, saya pikir kita baik. 678 00:36:47,294 --> 00:36:48,716 Ya? 679 00:36:48,716 --> 00:36:53,930 >> AUDIENCE: OK, jadi itu sesuatu tentang di mana itu disimpan dalam memori, kan? 680 00:36:53,930 --> 00:36:54,890 >> PROFESSOR: Yep. 681 00:36:54,890 --> 00:37:00,400 >> AUDIENCE: Dimana itu seperti, apakah ini string s disimpan di memori spot-- 682 00:37:00,400 --> 00:37:01,689 Aku menciptakan this-- adalah nol. 683 00:37:01,689 --> 00:37:02,355 PROFESSOR: Tentu. 684 00:37:02,355 --> 00:37:05,290 AUDIENCE: Dan tali t disimpan di tempat memori, 685 00:37:05,290 --> 00:37:11,000 seperti, 167, dan kemudian nol tidak sama 167. 686 00:37:11,000 --> 00:37:12,610 >> PROFESSOR: Tepat. 687 00:37:12,610 --> 00:37:18,350 OK, jadi ingatlah ini luar biasa wahyu kami menjelaskan kepada kalian 688 00:37:18,350 --> 00:37:21,530 minggu terakhir ini, bahwa string tidak benar-benar ada? 689 00:37:21,530 --> 00:37:25,380 Ketika kita membuat sesuatu yang disebut tali kami, pada kenyataannya, 690 00:37:25,380 --> 00:37:29,330 menciptakan sesuatu yang disebut bintang arang. 691 00:37:29,330 --> 00:37:34,470 Yang semua itu adalah pointer ke string atau array karakter. 692 00:37:34,470 --> 00:37:39,480 >> Dan dalam contoh ini, jika saya adalah untuk masukan M-O-M jalan 693 00:37:39,480 --> 00:37:49,350 bahwa komputer saya akan menyimpannya adalah dalam memori backslash nol, kan? 694 00:37:49,350 --> 00:37:53,180 Empat karakter, karakter, akan disimpan di suatu tempat. 695 00:37:53,180 --> 00:37:59,290 >> Dan kemudian keempat karakter, backslash nol, 696 00:37:59,290 --> 00:38:01,275 disimpan di tempat lain, kan? 697 00:38:01,275 --> 00:38:04,685 Saya tidak tahu di mana alamat adalah, mereka di suatu tempat di komputer saya. 698 00:38:04,685 --> 00:38:07,080 Tapi aku tidak tahu persis di mana mereka berada. 699 00:38:07,080 --> 00:38:10,170 >> Ketika saya membuat sebuah string s, semua yang benar-benar 700 00:38:10,170 --> 00:38:15,550 adalah pointer ke mulai dari string ini. 701 00:38:15,550 --> 00:38:21,130 Dan ketika saya menciptakan nilai t ini, semua itu adalah pointer ke sini. 702 00:38:21,130 --> 00:38:23,980 Dan ketika Anda mencoba untuk menyamakan dan memeriksa 703 00:38:23,980 --> 00:38:27,710 untuk melihat apakah s adalah sama dengan sama dengan t, komputer 704 00:38:27,710 --> 00:38:31,635 benar-benar hanya kembali ke Anda alamat m ini 705 00:38:31,635 --> 00:38:33,390 dan alamat m itu. 706 00:38:33,390 --> 00:38:36,230 Dan karena mereka dua bagian yang terpisah dari data yang 707 00:38:36,230 --> 00:38:38,750 yang disimpan dalam dua berbeda alamat di komputer Anda, 708 00:38:38,750 --> 00:38:41,750 komputer Anda tidak akan pernah mengenali mereka sebagai sama. 709 00:38:41,750 --> 00:38:43,500 Apakah ada yang ingin memberikan tembakan pada apa yang kita 710 00:38:43,500 --> 00:38:46,900 harus dilakukan jika kita ingin memperbaiki ini dan memiliki program berjalan yang benar 711 00:38:46,900 --> 00:38:49,360 sebagai gantinya? 712 00:38:49,360 --> 00:38:52,070 Pikirkan tentang hal itu selama beberapa detik. 713 00:38:52,070 --> 00:38:54,929 Apa yang kita butuhkan untuk mengubah ke mendapatkan fungsi program ini 714 00:38:54,929 --> 00:38:56,220 cara kita inginkan berfungsi? 715 00:38:56,220 --> 00:39:17,260 716 00:39:17,260 --> 00:39:18,918 >> Ya, ingin mengambil bacokan di itu? 717 00:39:18,918 --> 00:39:24,082 >> AUDIENCE: Bisakah kita mencoba untuk dereference pointer dan periksa melalui array? 718 00:39:24,082 --> 00:39:25,540 PROFESSOR: Itu salah satu cara untuk melakukannya. 719 00:39:25,540 --> 00:39:27,880 Jadi, siapa namamu lagi? 720 00:39:27,880 --> 00:39:29,010 Maaf, mengingatkan saya. 721 00:39:29,010 --> 00:39:29,589 >> Zee: Zee. 722 00:39:29,589 --> 00:39:32,130 PROFESSOR: Ya, jadi apa Zee disarankan akan benar-benar bekerja. 723 00:39:32,130 --> 00:39:32,629 Kanan? 724 00:39:32,629 --> 00:39:35,730 Kita bisa dereference pointer dan benar-benar pergi dan akses 725 00:39:35,730 --> 00:39:38,460 data fisik dalam sini. 726 00:39:38,460 --> 00:39:40,300 Dan kami hanya bisa membandingkan seluruh layar. 727 00:39:40,300 --> 00:39:43,670 >> Kita dapat mengatakan, OK, pointer, memberikan apa yang ada di dalamnya sini. 728 00:39:43,670 --> 00:39:44,960 Ini akan mengembalikan m. 729 00:39:44,960 --> 00:39:47,168 Dan aku akan mengatakan, pointer, memberikan apa yang ada di dalamnya sini. 730 00:39:47,168 --> 00:39:47,750 Mengembalikan m. 731 00:39:47,750 --> 00:39:48,410 Apakah pertandingan mereka? 732 00:39:48,410 --> 00:39:49,410 Iya nih. 733 00:39:49,410 --> 00:39:50,340 Kemudian kita lanjutkan. 734 00:39:50,340 --> 00:39:54,240 >> Kami terus memeriksa seluruh dua string sepanjang jalan sampai akhir 735 00:39:54,240 --> 00:39:56,635 dan melihat apakah mereka adalah sama, jika semua nilai-nilai yang sama. 736 00:39:56,635 --> 00:39:59,680 Dan jika semua nilai-nilai yang sama, maka kita tahu string adalah benar. 737 00:39:59,680 --> 00:40:01,600 Benar-benar, itu bagaimana kita akan melakukannya? 738 00:40:01,600 --> 00:40:03,930 >> Apakah ada yang bingung tentang semua ini? 739 00:40:03,930 --> 00:40:06,970 Seluruh konsep bagaimana string benar-benar hanya pointer, 740 00:40:06,970 --> 00:40:08,440 dan bagaimana mereka tidak benar-benar ada? 741 00:40:08,440 --> 00:40:10,480 Dan mengapa kita mendapatkan error seperti cara kita mendapatkannya? 742 00:40:10,480 --> 00:40:15,070 Karena saya jamin kalian, pointer dan alokasi tali dan memori 743 00:40:15,070 --> 00:40:16,470 akan datang. 744 00:40:16,470 --> 00:40:17,410 >> Ya? 745 00:40:17,410 --> 00:40:21,072 >> AUDIENCE: [tidak terdengar] dereference itu, Anda hanya menempatkan bintang [tidak terdengar] 746 00:40:21,072 --> 00:40:21,780 PROFESSOR: Benar. 747 00:40:21,780 --> 00:40:28,430 Jadi untuk derererence pointer sarana untuk pergi ke alamat dari pointer 748 00:40:28,430 --> 00:40:30,390 dan memperoleh data, nilai ada. 749 00:40:30,390 --> 00:40:32,700 Dan cara untuk melakukannya adalah pointer bintang. 750 00:40:32,700 --> 00:40:34,262 Jangan bingung itu. 751 00:40:34,262 --> 00:40:35,186 >> AUDIENCE: [tidak terdengar]. 752 00:40:35,186 --> 00:40:35,852 >> PROFESSOR: Ya. 753 00:40:35,852 --> 00:40:39,750 AUDIENCE: Jadi Anda hanya bisa menulis jika bintang s sama t bintang sederajat. 754 00:40:39,750 --> 00:40:40,630 >> PROFESSOR: Yah, tidak. 755 00:40:40,630 --> 00:40:40,960 Tidak. 756 00:40:40,960 --> 00:40:41,640 >> AUDIENCE: Itu tidak cukup baik, kan? 757 00:40:41,640 --> 00:40:43,760 >> PROFESSOR: Ini bukan, karena kau hanya memeriksa huruf pertama. 758 00:40:43,760 --> 00:40:46,010 Anda mungkin akan perlu semacam lingkaran yang 759 00:40:46,010 --> 00:40:49,055 beriterasi setiap satu karakter di kedua string. 760 00:40:49,055 --> 00:40:49,837 Ya. 761 00:40:49,837 --> 00:40:52,920 Jadi jika Anda ingin hanya memeriksa untuk melihat jika mereka mulai dengan hal yang sama, 762 00:40:52,920 --> 00:40:58,220 Anda bisa lakukan jika, bintang s adalah sama dengan bintang t. 763 00:40:58,220 --> 00:41:01,300 Maka Anda tahu bahwa setidaknya mereka dimulai dengan karakter yang sama. 764 00:41:01,300 --> 00:41:01,952 >> Ya? 765 00:41:01,952 --> 00:41:04,056 >> AUDIENCE: Jadi jalan Anda yang akan 766 00:41:04,056 --> 00:41:06,064 seperti tertanam untuk loop atau pointer? 767 00:41:06,064 --> 00:41:06,730 PROFESSOR: Ya. 768 00:41:06,730 --> 00:41:08,170 Cukup banyak hanya untuk loop. 769 00:41:08,170 --> 00:41:12,430 Ingat, David di kelas disebutkan gula sintaksis gratis? 770 00:41:12,430 --> 00:41:17,690 Dan dia ini sangat Hal membingungkan bintang t 771 00:41:17,690 --> 00:41:22,030 ditambah satu, di mana ia akan mengintegrasikan melalui dan memindahkan pointer? 772 00:41:22,030 --> 00:41:29,910 Cara yang lebih mudah untuk melakukan ini hanya t i. 773 00:41:29,910 --> 00:41:31,090 >> Jadi itu hanya sebuah array. 774 00:41:31,090 --> 00:41:34,630 Cara yang Anda akan memiliki untuk loop yang berlari dari nol sampai i, di mana 775 00:41:34,630 --> 00:41:36,580 i adalah panjang tali, Anda bisa saja 776 00:41:36,580 --> 00:41:39,510 menulis bahwa alih-alih melakukan Seluruh pointer, hal referensi. 777 00:41:39,510 --> 00:41:43,510 Jadi hal-hal ini persis setara dalam komputer Anda. 778 00:41:43,510 --> 00:41:45,905 >> Kalian mungkin tidak akan perlu tahu bahwa, 779 00:41:45,905 --> 00:41:48,280 tapi itu baik untuk hanya jenis ada di belakang pikiran Anda. 780 00:41:48,280 --> 00:41:52,630 Hanya tahu bahwa komputer mengakui blok yang berbeda dari kode 781 00:41:52,630 --> 00:41:53,890 sebagai hal yang sama. 782 00:41:53,890 --> 00:41:57,510 Karena ini hanya jauh lebih user ramah bagi kita untuk hadir seperti itu 783 00:41:57,510 --> 00:41:58,150 array. 784 00:41:58,150 --> 00:42:00,990 Itu hanya lebih mudah. 785 00:42:00,990 --> 00:42:02,719 >> AUDIENCE: Jadi gunakan strlen seperti, get-- 786 00:42:02,719 --> 00:42:03,385 PROFESSOR: Ya. 787 00:42:03,385 --> 00:42:03,926 AUDIENCE: OK. 788 00:42:03,926 --> 00:42:05,940 PROFESSOR: Anda bisa menggunakan strlen atau, jika Anda 789 00:42:05,940 --> 00:42:10,420 tidak memiliki strlen Anda hanya dapat melakukan up sampai Anda menekan backslash nol untuk keduanya. 790 00:42:10,420 --> 00:42:11,568 Entah akan bekerja. 791 00:42:11,568 --> 00:42:12,068 Ya. 792 00:42:12,068 --> 00:42:14,871 793 00:42:14,871 --> 00:42:17,996 AUDIENCE: Jadi untuk dereference setiap karakter tunggal jika kita benar-benar 794 00:42:17,996 --> 00:42:21,044 menulis kode ini, kita hanya bisa melakukan t kurung i 795 00:42:21,044 --> 00:42:22,460 suka dengan bintang di depannya? 796 00:42:22,460 --> 00:42:27,700 >> PROFESSOR: Ya, sama sederajat s braket i, dan kemudian terus bergerak i 797 00:42:27,700 --> 00:42:29,790 bawah sampai anda menekan akhir. 798 00:42:29,790 --> 00:42:31,286 Ya, itulah yang akan Anda lakukan. 799 00:42:31,286 --> 00:42:33,660 Dan aku benar-benar akan memiliki berikutnya contoh ketika kita benar-benar 800 00:42:33,660 --> 00:42:36,740 menulis strlen sehingga kalian akan jenis dari bisa bermain-main dengan itu sedikit. 801 00:42:36,740 --> 00:42:43,567 >> Jadi semua orang jelas hanya pada memori, string, pointer, alamat kualitas? 802 00:42:43,567 --> 00:42:46,650 Beberapa konsep tingkat yang lebih tinggi yang Anda kehendak untuk kebutuhan pasti tahu pada kuis 803 00:42:46,650 --> 00:42:48,928 besok. 804 00:42:48,928 --> 00:42:49,904 >> Baiklah. 805 00:42:49,904 --> 00:42:50,404 Baik. 806 00:42:50,404 --> 00:42:54,824 807 00:42:54,824 --> 00:42:55,324 Ya. 808 00:42:55,324 --> 00:42:58,770 809 00:42:58,770 --> 00:43:04,180 OK, jadi satu hal yang kita akan juga meminta Anda, seperti yang kita lakukan setiap tahun pada kuis, adalah, 810 00:43:04,180 --> 00:43:08,340 anggaplah bahwa Anda sudah lupa (yang kita tampaknya lupa untuk melakukan setiap tahunnya) 811 00:43:08,340 --> 00:43:10,810 di mana file header strlen dinyatakan. 812 00:43:10,810 --> 00:43:13,860 Dan jadi kita harus menulis ulang diri kita sendiri. 813 00:43:13,860 --> 00:43:16,350 >> Berikut adalah daftar pedoman bahwa kita dapat hadir Anda 814 00:43:16,350 --> 00:43:20,660 orang di mana Anda bisa berasumsi bahwa s string tidak akan null. 815 00:43:20,660 --> 00:43:23,830 Anda dapat mengasumsikan bahwa s akan diakhiri dengan garis miring terbalik nol. 816 00:43:23,830 --> 00:43:26,670 Jadi, Anda tahu itu apa itu akan berakhir dengan. 817 00:43:26,670 --> 00:43:29,500 >> Dan, misalnya, bahwa panjang halo akan menjadi lima. 818 00:43:29,500 --> 00:43:32,890 Sehingga Anda dapat mengasumsikan bahwa halo akan lima, H-E-L-L-O. 819 00:43:32,890 --> 00:43:35,890 Anda tidak harus mengasumsikan bahwa Backside nol account untuk panjang. 820 00:43:35,890 --> 00:43:39,720 821 00:43:39,720 --> 00:43:42,300 >> Hal ini terakhir di sini, tidak khawatir integer overflow. 822 00:43:42,300 --> 00:43:45,270 Apakah ada yang ingat apa integer overflow adalah? 823 00:43:45,270 --> 00:43:48,041 >> AUDIENCE: Goes luar Panjang [tak terdengar]. 824 00:43:48,041 --> 00:43:50,740 >> PROFESSOR: Ya, bisa Anda jelaskan sedikit, apa artinya? 825 00:43:50,740 --> 00:43:55,330 >> AUDIENCE: Jadi, saya kira itu akan kembali untuk contoh truncating sebelumnya. 826 00:43:55,330 --> 00:43:58,380 Tapi jika Anda memiliki begitu banyak nomor yang melampaui jumlah bit 827 00:43:58,380 --> 00:44:01,409 bahwa Anda benar-benar dapat menetapkan bahwa itu akan hanya semacam terputus. 828 00:44:01,409 --> 00:44:04,242 PROFESSOR: Ya, seterusnya khas komputer, berapa banyak bit yang kita miliki? 829 00:44:04,242 --> 00:44:05,306 AUDIENCE: 32? 830 00:44:05,306 --> 00:44:06,430 PROFESSOR: Ya, 32, benar. 831 00:44:06,430 --> 00:44:10,030 Dan jadi itulah, apa, empat miliar, dua miliar? 832 00:44:10,030 --> 00:44:13,579 Empat miliar, hingga empat miliar bilangan bulat positif, kan? 833 00:44:13,579 --> 00:44:15,370 Dua miliar negatif, dua miliar positif, 834 00:44:15,370 --> 00:44:16,900 tergantung pada bagaimana Anda ingin melakukannya. 835 00:44:16,900 --> 00:44:21,470 >> Dan jadi pada dasarnya kita dapat memiliki cukup bilangan bulat yang bisa naik 836 00:44:21,470 --> 00:44:25,800 untuk dua sampai 31 minus 1, kan? 837 00:44:25,800 --> 00:44:27,980 Karena sekali kita memukul dua untuk ke-32, kita tidak 838 00:44:27,980 --> 00:44:30,040 memiliki banyak memori di komputer kita. 839 00:44:30,040 --> 00:44:32,310 >> Dan, secara teoritis, saya bisa datang dengan nomor 840 00:44:32,310 --> 00:44:34,560 yaitu, seperti, dua sampai 46 orang. 841 00:44:34,560 --> 00:44:38,040 Ini sejumlah besar-ass, tetapi secara teoritis Anda bisa. 842 00:44:38,040 --> 00:44:42,730 Dan meluap sehingga bilangan bulat adalah jika Anda mencoba untuk membuat integer yang melampaui apa yang 843 00:44:42,730 --> 00:44:44,790 komputer Anda mampu menyimpan. 844 00:44:44,790 --> 00:44:46,590 >> Dan kalian untuk contoh ini tidak memiliki 845 00:44:46,590 --> 00:44:51,330 khawatir tentang kami memberikan Anda raksasa string yang dua dengan karakter 32 846 00:44:51,330 --> 00:44:51,830 panjang. 847 00:44:51,830 --> 00:44:54,010 Yang akan benar-benar berarti. 848 00:44:54,010 --> 00:44:59,430 >> Baiklah, jadi aku hanya akan memberikan kalian struktur dasar ini. 849 00:44:59,430 --> 00:45:02,020 Anda akan membuat fungsi yang disebut int strlen mana 850 00:45:02,020 --> 00:45:08,436 lulus dalam, bintang char, atau tali, pointer ke string disebut s. 851 00:45:08,436 --> 00:45:10,820 >> Baiklah, setiap orang menyalin yang turun. 852 00:45:10,820 --> 00:45:13,550 853 00:45:13,550 --> 00:45:14,850 Keren. 854 00:45:14,850 --> 00:45:17,020 Oops-- cara lain. 855 00:45:17,020 --> 00:45:21,360 >> Jadi ini adalah jenis seperti sepotong sulit masalah, 856 00:45:21,360 --> 00:45:25,320 jadi saya akan memberikan kalian mungkin lima sampai enam menit untuk jenis brainstorming 857 00:45:25,320 --> 00:45:27,478 dan menulis fungsi ini. 858 00:45:27,478 --> 00:45:29,710 >> AUDIENCE: Kami tidak melakukan akun untuk [tidak terdengar], 859 00:45:29,710 --> 00:45:30,200 kita tidak harus menggunakan bilangan bulat? 860 00:45:30,200 --> 00:45:31,241 >> PROFESSOR: Tidak, Anda tidak. 861 00:45:31,241 --> 00:48:05,847 862 00:48:05,847 --> 00:48:06,930 Saya akan memberikan kalian petunjuk. 863 00:48:06,930 --> 00:48:12,325 Sebuah loop sementara mungkin sangat berguna di sini. 864 00:48:12,325 --> 00:48:12,825 Ya. 865 00:48:12,825 --> 00:48:44,995 866 00:48:44,995 --> 00:48:45,495 Berikut 867 00:48:45,495 --> 00:48:45,995 permen. 868 00:48:45,995 --> 00:48:49,980 869 00:48:49,980 --> 00:48:53,410 Permen juga akan tersedia untuk kuis, saya pikir. 870 00:48:53,410 --> 00:48:55,315 Jadi kalian akan semua bergula besok. 871 00:48:55,315 --> 00:49:01,110 872 00:49:01,110 --> 00:49:02,962 Dapat Aku-- Anda mendapatkannya. 873 00:49:02,962 --> 00:49:03,718 >> AUDIENCE: OK. 874 00:49:03,718 --> 00:49:04,384 PROFESSOR: Ya. 875 00:49:04,384 --> 00:49:10,550 876 00:49:10,550 --> 00:49:11,870 >> Mungkin 30 detik lebih atau lebih. 877 00:49:11,870 --> 00:50:02,220 878 00:50:02,220 --> 00:50:07,340 >> Baiklah, jika Anda tidak dilakukan, tidak ada kekhawatiran. 879 00:50:07,340 --> 00:50:08,810 Kami akan bergerak melalui ini bersama-sama. 880 00:50:08,810 --> 00:50:09,310 OKE. 881 00:50:09,310 --> 00:50:13,800 Jadi aku akan hanya tata letak yang struktur dasar untuk fungsi ini di sini. 882 00:50:13,800 --> 00:50:17,255 Int strlen. 883 00:50:17,255 --> 00:50:20,040 884 00:50:20,040 --> 00:50:23,460 Pertama, apakah ada yang ingin memberitahu apa menandakan bahwa int? 885 00:50:23,460 --> 00:50:25,160 Kita perlu memiliki fungsi ini. 886 00:50:25,160 --> 00:50:26,709 >> AUDIENCE: Strlen [tak terdengar]. 887 00:50:26,709 --> 00:50:27,500 PROFESSOR: Tepat. 888 00:50:27,500 --> 00:50:31,140 Jadi apapun yang terjadi di sini, kita perlu kembali integer. 889 00:50:31,140 --> 00:50:36,367 Dan seperti yang ditentukan dalam spec, kami ingin return-- 890 00:50:36,367 --> 00:50:37,700 Pergi untuk itu guys, hanya terus. 891 00:50:37,700 --> 00:50:40,480 Itu semua baik. 892 00:50:40,480 --> 00:50:42,960 Makan semua jadi saya tidak memiliki untuk mengambil kembali, benar-benar. 893 00:50:42,960 --> 00:50:46,022 894 00:50:46,022 --> 00:50:48,855 Int hanya menandakan bahwa Anda akan kembali integer. 895 00:50:48,855 --> 00:50:55,350 896 00:50:55,350 --> 00:50:57,106 >> Apa arang ini bintang s? 897 00:50:57,106 --> 00:50:58,640 Maksudnya itu apa? 898 00:50:58,640 --> 00:51:00,879 >> AUDIENCE: Seperti, apa yang menjadi masukan dalam. 899 00:51:00,879 --> 00:51:01,670 PROFESSOR: Tepat. 900 00:51:01,670 --> 00:51:04,142 Dan apa yang hampir hal yang sama seperti bintang arang? 901 00:51:04,142 --> 00:51:04,850 AUDIENCE: String? 902 00:51:04,850 --> 00:51:05,641 PROFESSOR: Tepat. 903 00:51:05,641 --> 00:51:09,080 Jadi semua yang kita lakukan adalah memberikan ini pointer ke string. 904 00:51:09,080 --> 00:51:09,580 OKE. 905 00:51:09,580 --> 00:51:12,860 906 00:51:12,860 --> 00:51:13,360 Keren. 907 00:51:13,360 --> 00:51:16,650 >> Juga, jangan lupa, jika kita lupa untuk memberikan tanda kurung ini, 908 00:51:16,650 --> 00:51:18,330 jangan lupa untuk menulis mereka sendiri. 909 00:51:18,330 --> 00:51:20,720 Karena secara teoritis, kode Anda salah jika Anda lupa untuk menulis mereka. 910 00:51:20,720 --> 00:51:21,803 Hanya selalu memperhatikan. 911 00:51:21,803 --> 00:51:23,750 Seperti, hal-hal kecil bahwa Anda tidak melihat 912 00:51:23,750 --> 00:51:26,917 ketika Anda pemrograman pada laptop Anda, karena laptop Anda melakukannya untuk Anda? 913 00:51:26,917 --> 00:51:28,624 Jangan lupa saat Anda sedang menulis dengan tangan. 914 00:51:28,624 --> 00:51:29,170 Ya? 915 00:51:29,170 --> 00:51:30,954 >> AUDIENCE: Tapi bagaimana salah? 916 00:51:30,954 --> 00:51:33,190 Seperti, kita mendapatkan seluruh masalah yang salah? 917 00:51:33,190 --> 00:51:34,190 >> PROFESSOR: Tidak, tidak. 918 00:51:34,190 --> 00:51:34,860 Jangan khawatir. 919 00:51:34,860 --> 00:51:39,270 Ini sebenarnya secara teoritis mungkin bagi Anda untuk mendapatkan poin penuh pada pertanyaan 920 00:51:39,270 --> 00:51:41,980 bahkan jika kode Anda akan tidak pernah berjalan di kehidupan nyata. 921 00:51:41,980 --> 00:51:46,052 Saya sarankan Anda tidak mencoba untuk membuat itu terjadi. 922 00:51:46,052 --> 00:51:48,260 Sebagai contoh, seperti jika semuanya yang ada di sini adalah benar, 923 00:51:48,260 --> 00:51:51,850 tapi Anda lupa usus atau braket, kode Anda tidak akan benar-benar menjalankan. 924 00:51:51,850 --> 00:51:53,740 Tapi kita mungkin penuh belas kasihan. 925 00:51:53,740 --> 00:51:54,394 >> Ya? 926 00:51:54,394 --> 00:51:56,050 >> AUDIENCE: Apakah Anda harus mengomentari tulisan tangan kita? 927 00:51:56,050 --> 00:51:57,758 >> PROFESSOR: Tidak, tidak, tidak kekhawatiran tentang itu. 928 00:51:57,758 --> 00:51:58,440 Tidak ada komentar. 929 00:51:58,440 --> 00:51:59,400 Gaya harus baik. 930 00:51:59,400 --> 00:52:01,470 Seperti, tidak Smush semuanya pada satu baris. 931 00:52:01,470 --> 00:52:04,580 Kami tidak akan bahagia dengan Anda jika Anda melakukan itu. 932 00:52:04,580 --> 00:52:07,250 >> Apakah ada yang ingin memberikan baris pertama? 933 00:52:07,250 --> 00:52:08,633 Petunjuk, itu sangat mudah. 934 00:52:08,633 --> 00:52:09,320 >> Ya? 935 00:52:09,320 --> 00:52:11,920 >> AUDIENCE: Int, n sama dengan nol. 936 00:52:11,920 --> 00:52:13,734 Hanya mengatur counter. 937 00:52:13,734 --> 00:52:15,900 PROFESSOR: Jadi kita ingin beberapa semacam counter, kan? 938 00:52:15,900 --> 00:52:19,780 Aku hanya akan nama itu "menghitung" untuk memudahkan pembacaan. 939 00:52:19,780 --> 00:52:21,265 Apa yang kita ingin mengatur itu sama dengan? 940 00:52:21,265 --> 00:52:21,890 >> AUDIENCE: Zero. 941 00:52:21,890 --> 00:52:23,840 PROFESSOR: Yep. 942 00:52:23,840 --> 00:52:24,340 Titik koma. 943 00:52:24,340 --> 00:52:26,250 Ini juga titik koma gambar yang sangat aneh. 944 00:52:26,250 --> 00:52:28,870 Hanya berlatih melakukan hal itu. 945 00:52:28,870 --> 00:52:31,990 >> Jadi kami ingin pertama memiliki counter tipe int. 946 00:52:31,990 --> 00:52:35,360 Karena kita ingin menghitung berapa banyak karakter atau huruf yang 947 00:52:35,360 --> 00:52:36,780 dalam string ini, kan? 948 00:52:36,780 --> 00:52:38,330 Sangat mudah langkah pertama. 949 00:52:38,330 --> 00:52:42,140 >> OK, mungkin sedikit lebih kompleks sekarang, bagaimana yang akan kita melakukannya? 950 00:52:42,140 --> 00:52:45,400 Apakah ada yang ingin memberi saya baris kode 951 00:52:45,400 --> 00:52:48,450 yang mungkin dapat membantu lingkaran melalui apa pun ini? 952 00:52:48,450 --> 00:52:54,540 953 00:52:54,540 --> 00:52:56,900 >> Ya, jiwa berani di belakang? 954 00:52:56,900 --> 00:53:06,832 >> AUDIENCE: OK, maka sementara titik tanda bintang, yang yeah, bintang s, 955 00:53:06,832 --> 00:53:09,465 tidak sama dengan nol, kemudian melakukan sesuatu? 956 00:53:09,465 --> 00:53:11,090 PROFESSOR: Itu benar-benar, benar-benar dekat. 957 00:53:11,090 --> 00:53:11,835 Benar-benar dekat. 958 00:53:11,835 --> 00:53:13,710 Jadi aku akan mengatasi dua hal dengan itu. 959 00:53:13,710 --> 00:53:18,240 Pertama-tama, itu bukan nol. 960 00:53:18,240 --> 00:53:20,110 Apa itu? 961 00:53:20,110 --> 00:53:22,550 Ini null terminator, yang backslash nol. 962 00:53:22,550 --> 00:53:24,960 Jadi mereka berbeda dalam hal bagaimana mereka disimpan. 963 00:53:24,960 --> 00:53:26,270 Jadi kau benar-benar dekat. 964 00:53:26,270 --> 00:53:30,330 >> Dan kedua, kita tidak ingin hanya memindahkan pointer. 965 00:53:30,330 --> 00:53:32,320 Kami ingin benar-benar mengakses nilai-nilai, kan? 966 00:53:32,320 --> 00:53:34,050 Dan bagaimana kita melakukannya? 967 00:53:34,050 --> 00:53:34,550 Sangat mudah. 968 00:53:34,550 --> 00:53:36,841 Jangan berpikir tentang pointer, tidak berpikir tentang kenangan. 969 00:53:36,841 --> 00:53:38,525 Kembali ke seminggu dua kursus ini. 970 00:53:38,525 --> 00:53:39,555 >> AUDIENCE: [tidak terdengar]. 971 00:53:39,555 --> 00:53:40,680 PROFESSOR: Sampai, ingat? 972 00:53:40,680 --> 00:53:41,400 Apa string? 973 00:53:41,400 --> 00:53:42,650 Bagaimana mereka disimpan dalam memori? 974 00:53:42,650 --> 00:53:43,300 >> AUDIENCE: Mereka mengangkat. 975 00:53:43,300 --> 00:53:43,810 >> PROFESSOR: Mereka dibangkitkan. 976 00:53:43,810 --> 00:53:45,550 Jadi bagaimana kita mengakses masing-masing karakter di dalam? 977 00:53:45,550 --> 00:53:46,466 >> AUDIENCE: [tidak terdengar]. 978 00:53:46,466 --> 00:53:47,530 PROFESSOR: Tepat. 979 00:53:47,530 --> 00:53:53,195 Jadi while-- apa yang terjadi di dalam sini? 980 00:53:53,195 --> 00:53:54,940 S dari - 981 00:53:54,940 --> 00:53:55,920 >> AUDIENCE: I. 982 00:53:55,920 --> 00:53:58,216 >> PROFESSOR: Oh, saya tidak ada, apakah itu? 983 00:53:58,216 --> 00:53:59,620 >> AUDIENCE: Oh, hitung? 984 00:53:59,620 --> 00:54:01,640 >> PROFESSOR: Kami hanya bisa menggunakan count, kita tidak bisa? 985 00:54:01,640 --> 00:54:03,050 >> AUDIENCE: Maaf, saya menyebutnya saya. 986 00:54:03,050 --> 00:54:04,341 >> PROFESSOR: Ya, itu semua baik. 987 00:54:04,341 --> 00:54:06,710 988 00:54:06,710 --> 00:54:10,760 Kami memiliki variabel di sini yang sudah dinyatakan sebagai counter kami. 989 00:54:10,760 --> 00:54:13,650 Jadi kenapa tidak kita hanya menggunakan bergerak melalui loop sementara? 990 00:54:13,650 --> 00:54:15,230 Apakah itu masuk akal? 991 00:54:15,230 --> 00:54:20,864 >> Jadi sementara s dari count-- tidak ada yang ingin untuk memberikan apa yang terjadi setelah di sini? 992 00:54:20,864 --> 00:54:22,030 AUDIENCE: Ini tidak sama. 993 00:54:22,030 --> 00:54:23,405 PROFESSOR: Apakah tidak sama, kan? 994 00:54:23,405 --> 00:54:26,200 Ini bang sama, tanda seru sama, 995 00:54:26,200 --> 00:54:28,500 apapun kalian ingin menyebutnya tidak equal-- 996 00:54:28,500 --> 00:54:29,496 >> AUDIENCE: [tidak terdengar]. 997 00:54:29,496 --> 00:54:30,990 >> PROFESSOR: Ya. 998 00:54:30,990 --> 00:54:37,110 Ingat kutipan tunggal untuk char, tanda kutip ganda adalah untuk string. 999 00:54:37,110 --> 00:54:38,630 Hati-hati saat menggunakan mereka. 1000 00:54:38,630 --> 00:54:42,430 Jadi ketika kita melihat melalui array, karakter terakhir, 1001 00:54:42,430 --> 00:54:46,420 kita tahu kita tidak ingin untuk menjadi backslash nol. 1002 00:54:46,420 --> 00:54:47,340 >> Jadi sementara. 1003 00:54:47,340 --> 00:54:48,840 Kami tidak di akhir string. 1004 00:54:48,840 --> 00:54:52,335 Apa yang ingin kita lakukan di dalam? 1005 00:54:52,335 --> 00:54:55,269 >> AUDIENCE: Kami ingin menambah counter sehingga itu penting plus plus? 1006 00:54:55,269 --> 00:54:56,060 PROFESSOR: Tepat. 1007 00:54:56,060 --> 00:55:03,064 Jadi di sini kita akan melakukan menghitung, menghitung plus plus. 1008 00:55:03,064 --> 00:55:03,980 Hilang satu baris lagi. 1009 00:55:03,980 --> 00:55:05,090 Kita sudah hampir sampai. 1010 00:55:05,090 --> 00:55:07,398 Apa yang kita lupa lakukan? 1011 00:55:07,398 --> 00:55:08,770 >> AUDIENCE: Kembali nol? 1012 00:55:08,770 --> 00:55:10,820 >> PROFESSOR: Anda ingin kembali nol? 1013 00:55:10,820 --> 00:55:12,962 >> AUDIENCE: Tidak, kembali ke strlen. 1014 00:55:12,962 --> 00:55:13,511 Tunggu. 1015 00:55:13,511 --> 00:55:14,760 PROFESSOR: Yang disimpan dalam? 1016 00:55:14,760 --> 00:55:15,090 AUDIENCE: Hitung. 1017 00:55:15,090 --> 00:55:15,589 Menghitung. 1018 00:55:15,589 --> 00:55:17,150 PROFESSOR: Tepat. 1019 00:55:17,150 --> 00:55:20,760 Jadi di sini kita akan kembali menghitung. 1020 00:55:20,760 --> 00:55:23,450 1021 00:55:23,450 --> 00:55:25,380 >> Karena apa yang kita lakukan di sini ultimately-- 1022 00:55:25,380 --> 00:55:29,780 kita memiliki variabel counter yang akan kenaikan melalui string kita. 1023 00:55:29,780 --> 00:55:33,050 Kita akan terus, terus pergi, sekitar dan di dalam lingkaran ini. 1024 00:55:33,050 --> 00:55:37,700 Dan sementara kita tidak di akhir ini string, yang merupakan null terminator. 1025 00:55:37,700 --> 00:55:40,410 >> Dan setiap kali kita pergi melalui itu, kita menambah counter kami. 1026 00:55:40,410 --> 00:55:42,640 Dan kita akan lanjut bersama dalam array ini. 1027 00:55:42,640 --> 00:55:44,880 Dan pada akhirnya, setelah kami memukul null terminator, 1028 00:55:44,880 --> 00:55:48,469 kita tahu, oh, kita bisa istirahat, kembali menghitung. 1029 00:55:48,469 --> 00:55:49,260 Kami memiliki strlen kami. 1030 00:55:49,260 --> 00:55:52,280 1031 00:55:52,280 --> 00:55:56,400 >> Apakah semua orang mengerti bagaimana ini dilaksanakan? 1032 00:55:56,400 --> 00:55:58,830 Sementara loops-- Aku tahu kita belum dilakukan terlalu banyak dengan mereka, 1033 00:55:58,830 --> 00:56:01,240 tapi mereka biasanya sangat, sangat berguna jika Anda 1034 00:56:01,240 --> 00:56:05,390 tidak tahu apa yang Anda berhenti Kondisi tentu harus. 1035 00:56:05,390 --> 00:56:06,220 >> Pertanyaan? 1036 00:56:06,220 --> 00:56:10,080 >> AUDIENCE: Dapatkah kita menulis nol pada kondisi sementara? 1037 00:56:10,080 --> 00:56:10,940 >> PROFESSOR: Sementara? 1038 00:56:10,940 --> 00:56:15,304 Ya, jadi dalam masalah ini saya harus Anda orang menganggap bahwa s tidak akan null. 1039 00:56:15,304 --> 00:56:17,220 Karena ingat, secara teoritis, jika saya memberi Anda 1040 00:56:17,220 --> 00:56:21,180 pointer yang terlalu besar memori, itu akan memberi Anda nol, kan? 1041 00:56:21,180 --> 00:56:23,770 Itulah yang operasi Sistem akan melakukan. 1042 00:56:23,770 --> 00:56:26,960 >> Jadi jika saya tidak memberitahu Anda untuk mengasumsikan s akan null, Anda perlu memeriksa. 1043 00:56:26,960 --> 00:56:32,050 Jadi di sini, Anda akan lakukan, jika s sama sama nol, kembali satu. 1044 00:56:32,050 --> 00:56:33,028 Sesuatu seperti itu. 1045 00:56:33,028 --> 00:56:34,153 AUDIENCE: [tidak terdengar] nol. 1046 00:56:34,153 --> 00:56:37,287 1047 00:56:37,287 --> 00:56:39,370 PROFESSOR: OK, saya akan memberitahu Anda mengapa kita tidak bisa melakukan itu. 1048 00:56:39,370 --> 00:56:43,357 Karena ingat di memori, kanan, di sini. 1049 00:56:43,357 --> 00:56:43,940 Kami akan pergi ke sini. 1050 00:56:43,940 --> 00:56:49,940 1051 00:56:49,940 --> 00:56:54,090 >> Anda punya blok raksasa memori semua dengan grid 1052 00:56:54,090 --> 00:56:56,680 bahwa toko nilai yang berbeda, kan? 1053 00:56:56,680 --> 00:57:00,110 Dan sehingga semua string is-- untuk Misalnya, jika kita ingin masukan halo, 1054 00:57:00,110 --> 00:57:05,490 itu akan menjadi H-E-L-L-O backslash nol, kan? 1055 00:57:05,490 --> 00:57:09,570 Dan kemudian siapa tahu, seperti acak hal-hal yang di sini setelah itu. 1056 00:57:09,570 --> 00:57:11,220 >> Kami tidak benar-benar tahu apa yang ada. 1057 00:57:11,220 --> 00:57:13,350 Dan jika Anda adalah untuk melakukan bukannya backslash nol, 1058 00:57:13,350 --> 00:57:15,590 null, hal itu mungkin tidak null. 1059 00:57:15,590 --> 00:57:17,680 Karena itu hanya mungkin berarti beberapa acak hal-hal lain 1060 00:57:17,680 --> 00:57:19,270 yang tidak termasuk dalam string Anda. 1061 00:57:19,270 --> 00:57:23,219 Dan cara yang kita selalu tahu bahwa string berakhir adalah dengan backslash nol. 1062 00:57:23,219 --> 00:57:25,760 Dan sehingga selalu bagaimana kita memeriksa untuk melihat akhir dari string. 1063 00:57:25,760 --> 00:57:30,820 >> Null, segala cara yaitu jika Anda memiliki pointer tidak ada, pertama-tama, 1064 00:57:30,820 --> 00:57:36,160 atau jika memori Anda hanya begitu besar yang Anda tidak dapat mengembalikannya, maka itu akan menjadi nol. 1065 00:57:36,160 --> 00:57:40,150 Jadi berhati-hati ketika membedakan perbedaan antara nol 1066 00:57:40,150 --> 00:57:42,130 dan backslash nol. 1067 00:57:42,130 --> 00:57:43,670 Ya. 1068 00:57:43,670 --> 00:57:46,886 >> Semua orang OK dengan ini? 1069 00:57:46,886 --> 00:57:48,150 OKE. 1070 00:57:48,150 --> 00:57:50,440 >> Jadi saya harus kalian menuliskan strlen. 1071 00:57:50,440 --> 00:57:53,790 Feasibly kami juga bisa meminta Anda menulis keluar A ke saya, ingat bahwa "Atwoa" 1072 00:57:53,790 --> 00:57:55,400 atau apa pun kalian ingin menyebutnya? 1073 00:57:55,400 --> 00:57:58,010 Fungsi yang di Vigenere dan Caesar, yang 1074 00:57:58,010 --> 00:58:00,900 mengkonversi nilai Ascii ke integer? 1075 00:58:00,900 --> 00:58:04,360 Yang juga telah datang di kuis masa lalu fungsi kami sudah meminta Anda untuk menulis. 1076 00:58:04,360 --> 00:58:08,280 >> Hampir semua fungsi bahwa Anda telah digunakan dan 1077 00:58:08,280 --> 00:58:11,660 sangat mudah untuk menulis sendiri, sensor seperti lebih rendah, 1078 00:58:11,660 --> 00:58:14,620 adalah atas, untuk menurunkan, untuk bagian atas. 1079 00:58:14,620 --> 00:58:17,964 Fungsi yang akan mengkonversi string dari huruf kecil ke huruf besar. 1080 00:58:17,964 --> 00:58:19,380 Kita semua tahu bagaimana melakukan itu, kan? 1081 00:58:19,380 --> 00:58:21,100 Ini cukup mudah. 1082 00:58:21,100 --> 00:58:24,770 Hanya ingin memastikan bahwa Anda can-- itu proses berpikir yang sama. 1083 00:58:24,770 --> 00:58:26,940 Anda hanya iterate melalui dan Anda mengubah hal. 1084 00:58:26,940 --> 00:58:30,190 Anda baik menghitung atau ketika Anda mengubah hal-hal yang berbeda. 1085 00:58:30,190 --> 00:58:32,280 >> Saya akan suggest-- saya tidak tahu apakah kita akan 1086 00:58:32,280 --> 00:58:39,080 meminta Anda untuk menghafal apa modal A atau Z modal, atau huruf kecil atau huruf kecil A 1087 00:58:39,080 --> 00:58:42,640 z berada di Ascii, tapi saya akan menyarankan mungkin menulis yang turun dalam kasus 1088 00:58:42,640 --> 00:58:44,124 kita lakukan. 1089 00:58:44,124 --> 00:58:45,540 Hanya sehingga kalian punya referensi. 1090 00:58:45,540 --> 00:58:47,180 Seperti huruf A, apa, 197? 1091 00:58:47,180 --> 00:58:51,320 Dan kemudian huruf kecil seperti 50 sesuatu. 1092 00:58:51,320 --> 00:58:52,492 65, yeah, di sana Anda pergi. 1093 00:58:52,492 --> 00:58:54,950 Jadi hanya cukup banyak tahu Perbedaan antara mereka adalah 32. 1094 00:58:54,950 --> 00:58:57,670 Itu cukup penting. 1095 00:58:57,670 --> 00:58:58,170 Ya. 1096 00:58:58,170 --> 00:59:01,445 Apakah saya yang baik ini? 1097 00:59:01,445 --> 00:59:01,945 OKE. 1098 00:59:01,945 --> 00:59:03,109 >> AUDIENCE: Kita bisa teoritis menulis beberapa 1099 00:59:03,109 --> 00:59:04,410 ini turun juga di little-- kami 1100 00:59:04,410 --> 00:59:07,035 >> PROFESSOR: Anda secara teoritis hanya bisa menyalin fungsi turun. 1101 00:59:07,035 --> 00:59:08,482 Itu benar. 1102 00:59:08,482 --> 00:59:11,080 >> AUDIENCE: Tidak [tidak terdengar]. 1103 00:59:11,080 --> 00:59:12,720 >> PROFESSOR: Kalian memiliki lembar. 1104 00:59:12,720 --> 00:59:14,194 Kalian memiliki lembar catatan. 1105 00:59:14,194 --> 00:59:14,860 Anda dapat mengetik itu. 1106 00:59:14,860 --> 00:59:15,490 Anda dapat menulis. 1107 00:59:15,490 --> 00:59:17,031 Anda dapat melakukan apapun yang Anda inginkan dengan itu. 1108 00:59:17,031 --> 00:59:18,530 Ya. 1109 00:59:18,530 --> 00:59:21,406 Jadi secara teoritis, jika Anda ingin, pergi untuk. 1110 00:59:21,406 --> 00:59:23,338 >> AUDIENCE: [tidak terdengar] tapi kami tidak benar-benar 1111 00:59:23,338 --> 00:59:25,994 tentu perlu ingat nilai, kita bisa hanya 1112 00:59:25,994 --> 00:59:28,914 menggunakan untuk atas atau ke Fungsi yang lebih rendah, kan? 1113 00:59:28,914 --> 00:59:29,580 PROFESSOR: Ya. 1114 00:59:29,580 --> 00:59:32,740 Tetapi jika kita memberi Anda sebuah pertanyaan yang mengatakan menulis ke atas, 1115 00:59:32,740 --> 00:59:34,350 maka Anda akan perlu untuk menuliskannya. 1116 00:59:34,350 --> 00:59:38,150 Jadi kalian bisa berasumsi bahwa Anda orang memiliki akses ke semua fungsi, 1117 00:59:38,150 --> 00:59:41,523 tetapi jika Anda ingin menggunakan untuk atas atau ke rendah, apa yang Anda juga harus lakukan? 1118 00:59:41,523 --> 00:59:43,840 >> AUDIENCE: [tidak terdengar] menggunakan CS50 [tidak terdengar] 1119 00:59:43,840 --> 00:59:44,840 >> PROFESSOR: Apakah CS50.h? 1120 00:59:44,840 --> 00:59:47,320 1121 00:59:47,320 --> 00:59:48,310 Hati-hati disana. 1122 00:59:48,310 --> 00:59:50,640 >> Jadi untuk bagian atas, untuk menurunkan, adalah atas, lebih rendah, 1123 00:59:50,640 --> 00:59:52,990 fungsi yang melibatkan manipulasi string yang 1124 00:59:52,990 --> 00:59:55,490 semua dalam baik Ascii yang atau dalam perpustakaan matematika 1125 00:59:55,490 --> 00:59:57,350 atau dalam perpustakaan tali. 1126 00:59:57,350 --> 01:00:00,290 Jadi, jika kalian menggunakan mereka fungsi, hati-hati untuk mengingat 1127 01:00:00,290 --> 01:00:01,451 untuk menyertakan header yang. 1128 01:00:01,451 --> 01:00:03,950 Jadi mungkin juga sesuatu yang Anda ingin memasukkan dalam lembar Anda, 1129 01:00:03,950 --> 01:00:04,892 apa header? 1130 01:00:04,892 --> 01:00:06,600 Apa perpustakaan Anda telah menggunakan? 1131 01:00:06,600 --> 01:00:08,550 Fungsi apa dalam perpustakaan tersebut? 1132 01:00:08,550 --> 01:00:09,230 Ini penting. 1133 01:00:09,230 --> 01:00:10,420 >> Ya? 1134 01:00:10,420 --> 01:00:12,570 >> AUDIENCE: Bisakah kita hanya polisi keluar dan melakukan hashtag 1135 01:00:12,570 --> 01:00:14,955 melalui benar-benar setiap surat yang pernah kita 1136 01:00:14,955 --> 01:00:17,340 terlihat seperti pada semua pertanyaan? 1137 01:00:17,340 --> 01:00:18,320 >> PROFESSOR: Anda bisa. 1138 01:00:18,320 --> 01:00:20,361 Saya tidak tahu bagaimana bahagia kita akan menjadi ke kelas 1139 01:00:20,361 --> 01:00:25,090 kuis bahwa ketika setiap bagian dari kode adalah dua kali lebih lama karena perlu. 1140 01:00:25,090 --> 01:00:27,200 Saya tidak tahu, kita mungkin melepas titik untuk gaya. 1141 01:00:27,200 --> 01:00:28,790 Tapi secara teoritis Anda Kode akan benar. 1142 01:00:28,790 --> 01:00:30,915 Kalian bisa polisi dan hanya meliputi segala sesuatu. 1143 01:00:30,915 --> 01:00:32,044 Itu bagus juga, ya. 1144 01:00:32,044 --> 01:00:32,960 AUDIENCE: [tidak terdengar]. 1145 01:00:32,960 --> 01:00:33,270 PROFESSOR: Ya. 1146 01:00:33,270 --> 01:00:34,900 Saya akan menyarankan tidak melakukan hal itu sekalipun. 1147 01:00:34,900 --> 01:00:35,505 Ya. 1148 01:00:35,505 --> 01:00:36,130 AUDIENCE: Cool. 1149 01:00:36,130 --> 01:00:36,620 PROFESSOR: Pertanyaan yang bagus. 1150 01:00:36,620 --> 01:00:37,480 AUDIENCE: Jadi, skenario terburuk. 1151 01:00:37,480 --> 01:00:38,563 PROFESSOR: Kasus terburuk. 1152 01:00:38,563 --> 01:00:40,350 Jika Anda benar-benar lupa, Anda bisa melakukan itu. 1153 01:00:40,350 --> 01:00:40,850 Ya. 1154 01:00:40,850 --> 01:00:43,870 1155 01:00:43,870 --> 01:00:45,400 >> Yep, kode ada di sana. 1156 01:00:45,400 --> 01:00:49,176 Saya menggunakan n bukan hitungan tetapi, Anda tahu, apa pun mengapung perahu Anda. 1157 01:00:49,176 --> 01:00:51,092 AUDIENCE: Tunggu, jadi kami tidak perlu hashtag 1158 01:00:51,092 --> 01:00:53,460 termasuk karena kita mulai int? 1159 01:00:53,460 --> 01:00:56,150 1160 01:00:56,150 --> 01:00:59,924 >> PROFESSOR: Ya, saya hanya menduga bahwa kami diminta untuk menulis fungsi. 1161 01:00:59,924 --> 01:01:02,340 Jika Anda ingin menjadi aman, Anda mungkin bisa menaruhnya di sana. 1162 01:01:02,340 --> 01:01:05,650 Tapi aku hanya tidak repot-repot, ya. 1163 01:01:05,650 --> 01:01:09,919 >> Aku bahkan tidak tahu jika Anda membutuhkan perpustakaan untuk ini. 1164 01:01:09,919 --> 01:01:12,710 Karena Anda tidak benar-benar mencetak apa-apa atau apa, kan? 1165 01:01:12,710 --> 01:01:16,500 1166 01:01:16,500 --> 01:01:19,568 Ya, saya tidak tahu apakah Anda perlu perpustakaan. 1167 01:01:19,568 --> 01:01:22,400 >> OKE. 1168 01:01:22,400 --> 01:01:26,020 Ini juga sedikit lebih bersama garis manipulasi memori. 1169 01:01:26,020 --> 01:01:27,400 Semacam ini sedikit rumit. 1170 01:01:27,400 --> 01:01:28,960 Pikirkan ini. 1171 01:01:28,960 --> 01:01:30,580 Anda memiliki fungsi yang disebut func. 1172 01:01:30,580 --> 01:01:33,570 Aku bisa menamakannya apapun, tapi saya memilih untuk nama itu func. 1173 01:01:33,570 --> 01:01:36,000 Saya memilikinya di atas utama saya. 1174 01:01:36,000 --> 01:01:39,790 Ingat, Anda ingin memiliki fungsi setelah utama Anda, 1175 01:01:39,790 --> 01:01:42,370 Anda ingin memastikan Anda termasuk prototipe atas. 1176 01:01:42,370 --> 01:01:45,750 >> Tapi dalam kasus ini itu begitu singkat bahwa saya merasa bahwa saya bisa saja 1177 01:01:45,750 --> 01:01:47,260 memasukkannya di atas utama. 1178 01:01:47,260 --> 01:01:51,170 Saya tidak perlu memiliki prototipe, karena itu sudah tertulis di atas. 1179 01:01:51,170 --> 01:01:55,430 Jadi semua yang saya lakukan dalam fungsi utama saya adalah menciptakan bilangan bulat x sama dengan 10. 1180 01:01:55,430 --> 01:02:00,490 Saya memanggil fungsi func saya, dan kemudian mencetak sesuatu. 1181 01:02:00,490 --> 01:02:02,840 >> Dan kemudian itu benar-benar apa func lakukan. 1182 01:02:02,840 --> 01:02:04,340 Kalian ingin memikirkan ini. 1183 01:02:04,340 --> 01:02:05,423 Karena itu sedikit rumit. 1184 01:02:05,423 --> 01:02:07,220 Ini sangat, sangat sulit, sebenarnya. 1185 01:02:07,220 --> 01:02:09,549 Memikirkan apa ini Program akan keluaran. 1186 01:02:09,549 --> 01:02:10,840 Saya akan memberikan kalian dua menit. 1187 01:02:10,840 --> 01:03:36,660 1188 01:03:36,660 --> 01:03:37,891 >> Baik diskusi? 1189 01:03:37,891 --> 01:03:38,853 >> AUDIENCE: Ya. 1190 01:03:38,853 --> 01:03:39,815 >> PROFESSOR: Ya. 1191 01:03:39,815 --> 01:03:42,220 Baiklah, jadi ini adalah rumit karena suatu alasan. 1192 01:03:42,220 --> 01:03:44,845 Dan ini adalah mengapa saya ingin membawa ini untuk perhatian semua orang. 1193 01:03:44,845 --> 01:03:47,870 1194 01:03:47,870 --> 01:03:51,147 Apakah ada yang ingin memberikan saya saran, upaya? 1195 01:03:51,147 --> 01:03:52,230 Apa yang akan mencetak ini? 1196 01:03:52,230 --> 01:03:53,930 Benar-benar baik-baik saja jika Anda salah. 1197 01:03:53,930 --> 01:03:55,619 Ya? 1198 01:03:55,619 --> 01:03:59,483 >> AUDIENCE: Saya pikir itu 100 dan kemudian 10 pada dua baris terpisah. 1199 01:03:59,483 --> 01:04:00,940 >> PROFESSOR: Dan 10? 1200 01:04:00,940 --> 01:04:03,154 Apakah ada yang punya tebakan lain? 1201 01:04:03,154 --> 01:04:04,150 Ya? 1202 01:04:04,150 --> 01:04:09,040 >> AUDIENCE: Mungkin hanya 10 karena func tidak kembali apa-apa? 1203 01:04:09,040 --> 01:04:11,610 >> PROFESSOR: OK, jadi kami memiliki menebak nomor satu 1204 01:04:11,610 --> 01:04:14,990 adalah bahwa menebak nomor dua adalah hanya akan mencetak 10. 1205 01:04:14,990 --> 01:04:17,623 Apakah ada yang punya tebakan lain? 1206 01:04:17,623 --> 01:04:19,654 OKE. 1207 01:04:19,654 --> 01:04:21,070 Jadi mari kita berjalan melalui ini, kan? 1208 01:04:21,070 --> 01:04:23,903 Setiap kali Anda mendapatkan bagian dari kode, tidak hanya melihat itu dan menjadi seperti, 1209 01:04:23,903 --> 01:04:25,060 ah, itu begitu banyak hal! 1210 01:04:25,060 --> 01:04:26,460 Aku begitu bingung! 1211 01:04:26,460 --> 01:04:28,220 Seperti, menenangkan diri. 1212 01:04:28,220 --> 01:04:31,602 Hanya tahu bahwa Anda hanya bisa melihat melalui baris demi baris kode. 1213 01:04:31,602 --> 01:04:32,310 Itu semua itu. 1214 01:04:32,310 --> 01:04:33,840 Ini seperti membaca buku. 1215 01:04:33,840 --> 01:04:38,000 >> Jadi dengan fungsi apapun, kita selalu mulai main. 1216 01:04:38,000 --> 01:04:40,860 Jadi kita akan mulai int void main, 1217 01:04:40,860 --> 01:04:43,010 bahkan program sudah lari ke bawah, kan? 1218 01:04:43,010 --> 01:04:45,070 Mulai di void main. 1219 01:04:45,070 --> 01:04:48,030 Int x sama dengan 10. 1220 01:04:48,030 --> 01:04:50,400 >> Jadi aku akan menghapus ini. 1221 01:04:50,400 --> 01:04:55,179 1222 01:04:55,179 --> 01:04:58,470 Aku akan menarik memori hanya begitu Anda orang dapat jenis melihat apa yang terjadi. 1223 01:04:58,470 --> 01:05:02,190 >> Ingat di sini kita memiliki setumpuk kita? 1224 01:05:02,190 --> 01:05:05,810 Sampai di sini kita memiliki kami menimbun suatu tempat di sini. 1225 01:05:05,810 --> 01:05:07,470 Stack tumbuh, kan? 1226 01:05:07,470 --> 01:05:10,150 Dan dalam stack, Anda memiliki listrik berfungsi serta 1227 01:05:10,150 --> 01:05:12,230 semua variabel lokal induk. 1228 01:05:12,230 --> 01:05:14,310 >> Jadi di sini, int x sama 10. 1229 01:05:14,310 --> 01:05:17,670 Dalam fungsi utama kami kami menciptakan sebuah variabel yang disebut x. 1230 01:05:17,670 --> 01:05:20,590 Kami sedang menyiapkan yang sama dengan 10. 1231 01:05:20,590 --> 01:05:24,200 Di sini Anda punya beberapa x, dan Anda pengaturan yang sama dengan 10, kanan, 1232 01:05:24,200 --> 01:05:25,400 dalam utama. 1233 01:05:25,400 --> 01:05:27,430 Semua orang baik? 1234 01:05:27,430 --> 01:05:28,070 >> Fungsi. 1235 01:05:28,070 --> 01:05:30,330 Jadi sekarang, dalam utama kami fungsi, kami memanggil 1236 01:05:30,330 --> 01:05:31,810 fungsi kita sudah tertulis di atas. 1237 01:05:31,810 --> 01:05:34,550 Jadi kita sekarang sedang memasuki fungsi kedua. 1238 01:05:34,550 --> 01:05:40,120 Kita akan membuat lain variabel int x sama dengan 100. 1239 01:05:40,120 --> 01:05:42,410 Apa yang terjadi di sini di stack? 1240 01:05:42,410 --> 01:05:46,980 Apa yang terjadi ketika Anda memanggil Fungsi yang menciptakan variabel baru? 1241 01:05:46,980 --> 01:05:50,038 Apa yang terjadi di sini di stack? 1242 01:05:50,038 --> 01:05:52,134 >> AUDIENCE: [tidak terdengar] tumpukan di atas? 1243 01:05:52,134 --> 01:05:52,800 PROFESSOR: Ya. 1244 01:05:52,800 --> 01:05:54,050 Sehingga benar-benar menciptakan salinan. 1245 01:05:54,050 --> 01:05:56,560 1246 01:05:56,560 --> 01:05:57,740 Dan jenis tumpukan di atas. 1247 01:05:57,740 --> 01:06:00,700 Pikirkan stack-- stack buku, tumpukan apa-apa. 1248 01:06:00,700 --> 01:06:06,520 Tumpukan di atas, pertama di terakhir keluar, bertahan, keluar pertama. 1249 01:06:06,520 --> 01:06:08,471 >> Jadi itu akan membuat x sini. 1250 01:06:08,471 --> 01:06:12,080 1251 01:06:12,080 --> 01:06:14,450 >> Itu akan memiliki semua funcs variabel. 1252 01:06:14,450 --> 01:06:14,950 Besar. 1253 01:06:14,950 --> 01:06:20,980 Jadi sekarang kita memiliki dua yang berbeda x yang merupakan dua hal yang sangat berbeda. 1254 01:06:20,980 --> 01:06:24,470 Kemudian kita akan mencetak keluar integer dari x. 1255 01:06:24,470 --> 01:06:26,430 Jadi mari kita mencetak 100, kan? 1256 01:06:26,430 --> 01:06:29,389 Karena di sini itu 100. 1257 01:06:29,389 --> 01:06:31,680 Jadi itulah hal pertama bahwa itu akan mencetak. 1258 01:06:31,680 --> 01:06:35,710 Karena ini kembali fungsi apa-apa, sekarang fungsi itu, bahwa garis di utama 1259 01:06:35,710 --> 01:06:37,070 dilakukan. 1260 01:06:37,070 --> 01:06:39,160 Semua orang baik dengan saya sejauh ini? 1261 01:06:39,160 --> 01:06:43,034 >> Jadi kita sekarang melalui dua dari tiga baris fungsi utama kami. 1262 01:06:43,034 --> 01:06:44,450 Sekarang kita akan baris ketiga. 1263 01:06:44,450 --> 01:06:46,350 Kita akan printf. 1264 01:06:46,350 --> 01:06:48,222 Apa x ini dalam utama? 1265 01:06:48,222 --> 01:06:49,263 Apa yang mewakili? 1266 01:06:49,263 --> 01:06:52,720 1267 01:06:52,720 --> 01:06:54,280 >> Apa nilai adalah x sekarang? 1268 01:06:54,280 --> 01:06:55,220 >> AUDIENCE: 100. 1269 01:06:55,220 --> 01:06:56,799 >> PROFESSOR: Ini 100? 1270 01:06:56,799 --> 01:06:57,590 AUDIENCE: Masih 10. 1271 01:06:57,590 --> 01:06:58,878 PROFESSOR: Masih 10. 1272 01:06:58,878 --> 01:07:00,870 Ya. 1273 01:07:00,870 --> 01:07:06,810 Karena ingat, dalam func kami, x sama dengan 100. 1274 01:07:06,810 --> 01:07:09,690 Tetapi jika kita kembali fungsi utama kami, 1275 01:07:09,690 --> 01:07:12,440 variabel yang disimpan dalam tempat yang berbeda di stack kami. 1276 01:07:12,440 --> 01:07:16,250 >> Jadi sekarang kita perlu kembali ke tumpukan utama, induk variabel lokal. 1277 01:07:16,250 --> 01:07:18,460 Dan di sini x sama dengan 10. 1278 01:07:18,460 --> 01:07:20,300 Dan kita akan mencetak 10. 1279 01:07:20,300 --> 01:07:22,530 >> Jadi dia benar-benar tepat. 1280 01:07:22,530 --> 01:07:25,053 Kita akan memiliki output 100 dan 10. 1281 01:07:25,053 --> 01:07:25,553 Ya? 1282 01:07:25,553 --> 01:07:28,700 AUDIENCE: Bila Anda malloc, apakah itu tumpukan atau tumpukan yang [tidak terdengar]? 1283 01:07:28,700 --> 01:07:31,950 PROFESSOR: Bila Anda malloc, Anda mengambil memori dari tumpukan 1284 01:07:31,950 --> 01:07:32,830 dan mengalokasikan itu. 1285 01:07:32,830 --> 01:07:34,950 Sehingga Anda tidak memiliki main dengan semua ini. 1286 01:07:34,950 --> 01:07:38,100 Jadi saya kira takeaway lebih besar di sini adalah sesuatu yang disebut ruang lingkup. 1287 01:07:38,100 --> 01:07:39,650 >> Bagi Anda yang berada di review sesi tadi malam, 1288 01:07:39,650 --> 01:07:41,080 kita berbicara sebentar tentang hal ini. 1289 01:07:41,080 --> 01:07:45,380 Lingkup mendefinisikan bagaimana dan ketika variabel Anda ada. 1290 01:07:45,380 --> 01:07:48,050 Atau dalam apa frame lakukan variabel Anda ada. 1291 01:07:48,050 --> 01:07:51,690 >> Cukup banyak aturan praktis umumnya adalah, variables-- Anda jika Anda membuat mereka 1292 01:07:51,690 --> 01:07:56,660 dalam braces-- keriting mereka ada hanya di dalam orang-orang kurung kurawal. 1293 01:07:56,660 --> 01:08:00,312 >> Jadi misalnya dalam fungsi kami func, Anda melihat dua kawat gigi. 1294 01:08:00,312 --> 01:08:02,020 Jika Anda membuat apa di dalamnya, 1295 01:08:02,020 --> 01:08:06,500 kemungkinan semua yang Anda lakukan adalah menciptakan tumpukan dan menyimpan yang ada. 1296 01:08:06,500 --> 01:08:07,430 Hal yang sama di utama. 1297 01:08:07,430 --> 01:08:09,950 Itu hanya disimpan dalam utama. 1298 01:08:09,950 --> 01:08:13,560 >> Juga Anda ingin menjadi sangat, sangat berhati-hati di sini. 1299 01:08:13,560 --> 01:08:18,310 Karena lingkup juga meminjamkan sendiri untuk contoh yang berbeda. 1300 01:08:18,310 --> 01:08:25,950 Jadi misalnya untuk lingkaran, untuk int i sama dengan 0. 1301 01:08:25,950 --> 01:08:28,460 Saya kurang dari, saya tidak tahu, 10. 1302 01:08:28,460 --> 01:08:32,111 Saya plus plus. 1303 01:08:32,111 --> 01:08:34,560 Dan Anda punya kode di dalamnya, kan? 1304 01:08:34,560 --> 01:08:38,830 >> Dimana variabel ini, i, sebenarnya hanya ada? 1305 01:08:38,830 --> 01:08:40,510 Hanya dalam untuk Anda lingkaran. 1306 01:08:40,510 --> 01:08:43,640 Jadi saya yakin banyak dari kalian memiliki mungkin mengalami kesalahan ini saat 1307 01:08:43,640 --> 01:08:45,930 Anda melakukan program di psets Anda. 1308 01:08:45,930 --> 01:08:49,990 Berapa banyak dari kalian telah mencoba menggunakan i luar untuk loop dan memiliki kesalahan? 1309 01:08:49,990 --> 01:08:53,310 Seperti bilangan bulat Rintisan atau semacam itu? 1310 01:08:53,310 --> 01:08:56,069 >> Alasan mengapa itu terjadi adalah karena di sini Anda 1311 01:08:56,069 --> 01:08:59,109 menciptakan sesuatu yang hanya ada dalam lingkaran untuk Anda. 1312 01:08:59,109 --> 01:09:01,972 Dan jika Anda mencoba untuk menggunakannya, saya tidak benar-benar ada di luar itu. 1313 01:09:01,972 --> 01:09:04,930 Jadi pada dasarnya komputer mengatakan, saya tidak tahu apa yang Anda bicarakan. 1314 01:09:04,930 --> 01:09:08,689 Yang aku tahu adalah bahwa saya di sini, tapi sekarang tidak lagi. 1315 01:09:08,689 --> 01:09:12,580 >> Jadi jika saya harus membuat untuk loop di dalam, kan? 1316 01:09:12,580 --> 01:09:19,080 Dan aku akan membuat yang lain, seperti int j, dan memilikinya melakukan apa pun. 1317 01:09:19,080 --> 01:09:23,689 Dan Anda memiliki kode dalam loop yang, j hanya ada di sini. 1318 01:09:23,689 --> 01:09:26,029 Tapi itu juga ada dalam i. 1319 01:09:26,029 --> 01:09:29,310 Dan j hanya ada dalam hal ini untuk loop, 1320 01:09:29,310 --> 01:09:33,850 sedangkan saya ada di seluruh hal. 1321 01:09:33,850 --> 01:09:34,500 >> Semua orang yang jelas? 1322 01:09:34,500 --> 01:09:37,416 Hal yang sama dengan pernyataan bersyarat jika Anda ingin menciptakan sesuatu. 1323 01:09:37,416 --> 01:09:40,390 Hal yang sama dengan loop sementara jika Anda ingin menciptakan sesuatu. 1324 01:09:40,390 --> 01:09:42,390 Itu sesuatu yang harus sangat, sangat berhati-hati. 1325 01:09:42,390 --> 01:09:45,681 Jadi ini adalah masalah yang benar-benar baik di merasakan bahwa itu menunjukkan dua hal. 1326 01:09:45,681 --> 01:09:47,160 Ini menunjukkan pertama, lingkup. 1327 01:09:47,160 --> 01:09:49,550 Dan itu menunjukkan juga alokasi memori. 1328 01:09:49,550 --> 01:09:54,130 Karena kalian harus tahu bahwa fungsi tumbuh ke atas di tumpukan. 1329 01:09:54,130 --> 01:09:56,710 Dan bahwa ketika Anda menelepon fungsi, Anda sedang menciptakan 1330 01:09:56,710 --> 01:09:59,060 dasarnya tumpukan baru memori. 1331 01:09:59,060 --> 01:10:02,100 Yang sangat berbeda dari apa memori utama Anda adalah. 1332 01:10:02,100 --> 01:10:03,300 Ya. 1333 01:10:03,300 --> 01:10:03,800 Wah! 1334 01:10:03,800 --> 01:10:05,470 Semua orang OK itu? 1335 01:10:05,470 --> 01:10:06,750 Itu membingungkan. 1336 01:10:06,750 --> 01:10:09,380 Topik yang sangat baik untuk pergi lebih, karena Anda mungkin 1337 01:10:09,380 --> 01:10:12,255 akan mendapatkan beberapa rumit hal-hal seperti itu pada kuis. 1338 01:10:12,255 --> 01:10:13,350 Ya. 1339 01:10:13,350 --> 01:10:13,850 Keren. 1340 01:10:13,850 --> 01:10:16,014 1341 01:10:16,014 --> 01:10:18,430 Aku akan menempatkan Anda mendapatkan 100 pada satu line dan kemudian 10 di sisi lain. 1342 01:10:18,430 --> 01:10:21,468 Ya, sangat baik. 1343 01:10:21,468 --> 01:10:26,350 >> OK, sekarang kalian akan mendapatkan kesempatan untuk menjadi TA. 1344 01:10:26,350 --> 01:10:30,600 Anda bisa menjawab semua indah email yang kadang-kadang saya mendapatkan. 1345 01:10:30,600 --> 01:10:34,290 >> Jadi, Dear Andi, saya melihat saya pikir ada sesuatu yang beres dengan compiler saya. 1346 01:10:34,290 --> 01:10:37,910 Saya yakin bahwa kode saya benar, tapi saya terus mendapatkan kesalahan segmentasi 1347 01:10:37,910 --> 01:10:39,074 setiap kali saya menjalankan. 1348 01:10:39,074 --> 01:10:39,740 Apa yang sedang terjadi? 1349 01:10:39,740 --> 01:10:42,844 Tolong bantu, banyak cinta. 1350 01:10:42,844 --> 01:10:45,740 1351 01:10:45,740 --> 01:10:49,410 >> Jika kalian punya sesuatu seperti bahwa bagaimana Anda akan merespon? 1352 01:10:49,410 --> 01:10:51,860 Ini sebenarnya sangat umum pertanyaan kami akan meminta Anda. 1353 01:10:51,860 --> 01:10:54,090 Apakah jika, kami akan memberi Anda skenario, kami akan memberi kita 1354 01:10:54,090 --> 01:10:56,350 tebakan terbaik Anda pada apa yang terjadi. 1355 01:10:56,350 --> 01:11:00,710 Ada yang punya menusuk apa yang terjadi? 1356 01:11:00,710 --> 01:11:02,654 Ya? 1357 01:11:02,654 --> 01:11:06,056 >> AUDIENCE: Mungkin dereferenced yang null, sesuatu seperti pointer 1358 01:11:06,056 --> 01:11:08,924 menunjuk pada sesuatu null. 1359 01:11:08,924 --> 01:11:11,590 PROFESSOR: Ya, itu akan menjadi contoh ketika itu akan terjadi. 1360 01:11:11,590 --> 01:11:14,467 Tapi apa gambar yang lebih besar apa yang terjadi di sini? 1361 01:11:14,467 --> 01:11:17,050 AUDIENCE: Apakah Anda mencoba untuk mengakses memori yang Anda tidak 1362 01:11:17,050 --> 01:11:18,175 seharusnya memiliki akses ke? 1363 01:11:18,175 --> 01:11:19,200 PROFESSOR: Tepat. 1364 01:11:19,200 --> 01:11:24,800 Jadi pikirkan kesalahan seg, off batas, area terbatas di memori 1365 01:11:24,800 --> 01:11:27,780 bahwa Anda tidak harus menyentuh. 1366 01:11:27,780 --> 01:11:31,670 >> Jadi cukup banyak ketika Anda mencoba untuk index-- seperti misalnya, 1367 01:11:31,670 --> 01:11:34,110 Anda telah mengumumkan Array dari nol sampai sembilan. 1368 01:11:34,110 --> 01:11:37,360 Tetapi Anda mencoba untuk menyentuh 10 yang nilai, Anda tidak memiliki akses ke. 1369 01:11:37,360 --> 01:11:38,694 Karena Anda belum menyatakan. 1370 01:11:38,694 --> 01:11:40,943 Dan sehingga komputer Anda akan untuk melihat bahwa menjadi seperti, 1371 01:11:40,943 --> 01:11:43,440 uh oh, Anda mencoba untuk pergi luar batas indeks. 1372 01:11:43,440 --> 01:11:45,270 Aku akan memberikan Anda kesalahan segmentasi. 1373 01:11:45,270 --> 01:11:46,590 >> Pikirkan sebagai segmen, kan? 1374 01:11:46,590 --> 01:11:49,665 Segmen ekstra, kesalahan adalah ketika Anda mencoba untuk melanggar sesuatu 1375 01:11:49,665 --> 01:11:50,790 dan Anda tidak harus ada. 1376 01:11:50,790 --> 01:11:53,660 Segmentation fault adalah kapan Anda mencoba untuk menyentuh hal-hal 1377 01:11:53,660 --> 01:11:54,970 bahwa Anda tidak harus menyentuh. 1378 01:11:54,970 --> 01:11:56,815 >> Contoh begitu umum adalah indeks. 1379 01:11:56,815 --> 01:11:58,940 Tentu saja, jika Anda mencoba menyentuh itu nol, 1380 01:11:58,940 --> 01:12:00,220 yang juga akan bekerja dengan baik. 1381 01:12:00,220 --> 01:12:02,300 Jika pointer Anda mencoba untuk menyentuh hal-hal yang seharusnya tidak menyentuh, 1382 01:12:02,300 --> 01:12:03,730 yang juga bisa bekerja dengan baik. 1383 01:12:03,730 --> 01:12:07,120 Kebanyakan biasanya Anda akan melihat hal ini dalam sebuah array. 1384 01:12:07,120 --> 01:12:07,740 Semua orang baik? 1385 01:12:07,740 --> 01:12:10,374 >> AUDIENCE: Jadi jika Anda ingin untuk mengakses titik 10 1386 01:12:10,374 --> 01:12:12,290 dan hanya ada batas sembilan atau sesuatu. 1387 01:12:12,290 --> 01:12:13,160 >> PROFESSOR: Ya, persis. 1388 01:12:13,160 --> 01:12:13,660 Cukup banyak. 1389 01:12:13,660 --> 01:12:15,930 1390 01:12:15,930 --> 01:12:16,430 Keren. 1391 01:12:16,430 --> 01:12:19,070 1392 01:12:19,070 --> 01:12:19,920 >> Sayang Andi. 1393 01:12:19,920 --> 01:12:23,440 Jadi kita punya ini indah hal yang disebut macam. 1394 01:12:23,440 --> 01:12:25,472 Jika Gabung sort-- seperti yang kita saw dalam contoh ketika 1395 01:12:25,472 --> 01:12:27,180 David melakukan seluruh Hal di class-- mengapa, 1396 01:12:27,180 --> 01:12:29,760 jika itu jauh lebih cepat daripada salah satu jenis lain, 1397 01:12:29,760 --> 01:12:33,310 mengapa kita repot-repot mengetahui salah satu jenis lain? 1398 01:12:33,310 --> 01:12:35,100 >> Apa pertanyaan ini benar-benar meminta Anda? 1399 01:12:35,100 --> 01:12:36,659 Apa tiga word-- 1400 01:12:36,659 --> 01:12:37,950 AUDIENCE: Apa trade-off? 1401 01:12:37,950 --> 01:12:38,530 PROFESSOR: Tepat. 1402 01:12:38,530 --> 01:12:39,946 Itulah pertanyaan apa yang bertanya. 1403 01:12:39,946 --> 01:12:43,682 Apa trade-off antara Menggabungkan semacam ayat setiap jenis lain? 1404 01:12:43,682 --> 01:12:45,850 >> AUDIENCE: Membawa memori, kan? 1405 01:12:45,850 --> 01:12:47,720 >> PROFESSOR: Apakah Anda menjelaskan bahwa sedikit lebih? 1406 01:12:47,720 --> 01:12:49,490 Pertama mari kita menjelaskan toko Gabung. 1407 01:12:49,490 --> 01:12:50,970 Bagaimana Merge sort bekerja? 1408 01:12:50,970 --> 01:12:55,220 >> AUDIENCE: Jadi bekerja dengan membagi segala sesuatu menjadi setengah 1409 01:12:55,220 --> 01:13:00,660 dan kemudian menempatkan bersama-sama dan realokasi itu dalam rangka, 1410 01:13:00,660 --> 01:13:02,862 seperti setiap kali Anda menggabungkan set. 1411 01:13:02,862 --> 01:13:03,820 PROFESSOR: Cukup banyak. 1412 01:13:03,820 --> 01:13:06,861 Jadi aku bisa menggambar hal ini, tapi itu akan membawa saya lima menit untuk menarik keluar. 1413 01:13:06,861 --> 01:13:10,220 Lihat kembali ke slide bagian di mana kita tertutup Gabung semacam. 1414 01:13:10,220 --> 01:13:10,790 Persis. 1415 01:13:10,790 --> 01:13:13,406 >> Jadi cara Gabung semacam karya itu membagi hal-hal di setengah, 1416 01:13:13,406 --> 01:13:15,780 dan kemudian itu hanya terlihat di nilai pertama dari semua itu 1417 01:13:15,780 --> 01:13:17,000 dan hanya yang macam. 1418 01:13:17,000 --> 01:13:20,364 Terus menciptakan array baru dan menempatkan hal-hal yang lebih dan lebih dalam rangka. 1419 01:13:20,364 --> 01:13:23,030 Dan sementara itu benar-benar, benar-benar cepat karena it's-- Anda tahu, 1420 01:13:23,030 --> 01:13:25,380 pencarian biner adalah n log n. 1421 01:13:25,380 --> 01:13:27,880 Anda sedang menciptakan begitu banyak array yang berbeda bahwa Anda 1422 01:13:27,880 --> 01:13:29,700 menggunakan sejumlah besar memori. 1423 01:13:29,700 --> 01:13:33,080 Dan sementara itu lebih cepat, trade off di sini adalah bahwa Anda menggunakan lebih banyak memori. 1424 01:13:33,080 --> 01:13:38,490 >> Dan sebagainya, petunjuk, macam dan pencarian ditutupi lebih banyak tahun ini 1425 01:13:38,490 --> 01:13:41,610 dari mereka telah di tahun-tahun sebelumnya. 1426 01:13:41,610 --> 01:13:45,100 Kalian harus melihat bahwa tercermin sesuai pada kuis. 1427 01:13:45,100 --> 01:13:49,160 Saya pasti akan menghabiskan waktu akan atas apa semua jenis yang berbeda 1428 01:13:49,160 --> 01:13:52,320 adalah, bagaimana pencarian biner, bagaimana linear kerja pencarian. 1429 01:13:52,320 --> 01:13:54,750 Bagaimana mungkin pseudocode kode yang keluar. 1430 01:13:54,750 --> 01:13:55,950 Apa kali berjalan? 1431 01:13:55,950 --> 01:13:59,210 Sesuatu seperti kali berjalan sangat mudah untuk menyalin ke lembar catatan, 1432 01:13:59,210 --> 01:13:59,710 kanan? 1433 01:13:59,710 --> 01:14:01,420 >> Ini sangat sulit ketika Anda di tengah-tengah ujian 1434 01:14:01,420 --> 01:14:02,390 dan Anda harus mencari tahu. 1435 01:14:02,390 --> 01:14:03,160 Mencatatnya. 1436 01:14:03,160 --> 01:14:05,550 Saya jamin Anda Anda akan perlu tahu itu. 1437 01:14:05,550 --> 01:14:06,860 Apa trade-off? 1438 01:14:06,860 --> 01:14:10,064 Kasus terburuk, skenario kasus terbaik untuk mereka semua, sangat mengenal. 1439 01:14:10,064 --> 01:14:10,564 Ya? 1440 01:14:10,564 --> 01:14:12,730 >> AUDIENCE: Apakah kita perlu tahu bagaimana kode Gabung semacam? 1441 01:14:12,730 --> 01:14:15,470 Seperti, kita perlu ingat rekursif itu? 1442 01:14:15,470 --> 01:14:18,950 >> PROFESSOR: Saya sangat meragukan itu, hanya karena itu seperti yang cukup rumit. 1443 01:14:18,950 --> 01:14:22,282 Tapi itu mungkin tidak tidak layak jika kita meminta Anda untuk menggunakan pseudocode itu. 1444 01:14:22,282 --> 01:14:22,781 Ya. 1445 01:14:22,781 --> 01:14:25,470 1446 01:14:25,470 --> 01:14:29,170 >> Yap, OK, satu lagi. 1447 01:14:29,170 --> 01:14:31,387 Ini mungkin telah datang di Anda bagian terakhir dalam sedikit. 1448 01:14:31,387 --> 01:14:42,101 1449 01:14:42,101 --> 01:14:43,090 Ya? 1450 01:14:43,090 --> 01:14:44,930 Apakah semua orang dengar itu? 1451 01:14:44,930 --> 01:14:48,360 >> OK, jadi cukup banyak pertama semua, apa jenis program 1452 01:14:48,360 --> 01:14:51,000 akan memberikan Anda sebuah output seperti ini? 1453 01:14:51,000 --> 01:14:54,350 Ingat kami meminta Anda untuk belajar tentang jenis baru dari alat debugging? 1454 01:14:54,350 --> 01:14:57,340 Apa nama itu? 1455 01:14:57,340 --> 01:14:59,460 Valgrind, tepat 1456 01:14:59,460 --> 01:15:02,600 >> Itu adalah program di mana Anda bisa menelepon yang bisa 1457 01:15:02,600 --> 01:15:05,940 melacak semua memori Anda menggunakan program dan yang sedang terjadi. 1458 01:15:05,940 --> 01:15:11,090 Jadi jika Anda punya sesuatu, seperti, pasti hilang, 40 byte dalam satu blok. 1459 01:15:11,090 --> 01:15:14,870 Mungkin Anda tidak mengingat untuk membebaskan itu. 1460 01:15:14,870 --> 01:15:18,710 Karena jika Anda menggunakan byte memori, itu berarti Anda sudah diakses bahwa memori, 1461 01:15:18,710 --> 01:15:20,240 tetapi Anda belum bisa membebaskan. 1462 01:15:20,240 --> 01:15:21,948 Jadi, Anda ingin membuat Pastikan bahwa Anda juga 1463 01:15:21,948 --> 01:15:31,420 menggunakan free-- itu adalah function-- untuk membebaskan semua 1464 01:15:31,420 --> 01:15:34,930 dari memori dialokasikan oleh malloc. 1465 01:15:34,930 --> 01:15:35,500 >> Keren. 1466 01:15:35,500 --> 01:15:37,140 Jadi slide ini, saya akan memiliki itu. 1467 01:15:37,140 --> 01:15:41,050 Ini di mana-mana di banyak kuliah, di banyak bagian slide. 1468 01:15:41,050 --> 01:15:44,254 Anda benar-benar ingin memastikan Anda hanya tahu semua ini. 1469 01:15:44,254 --> 01:15:47,170 Baik dalam lembar catatan Anda atau jika Anda ingin menghafal itu, merasa bebas untuk. 1470 01:15:47,170 --> 01:15:48,836 Itu benar-benar, benar-benar, benar-benar penting. 1471 01:15:48,836 --> 01:15:53,200 1472 01:15:53,200 --> 01:15:56,890 >> Juga sangat baik pertanyaan yang kita mungkin bertanya. 1473 01:15:56,890 --> 01:16:00,320 Mengapa Seleksi sort-- melihat Seleksi sort-- semua runtimes 1474 01:16:00,320 --> 01:16:02,060 yang n kuadrat. 1475 01:16:02,060 --> 01:16:06,714 Terlepas dari bagaimana daftar datang ke Anda sebagai, jadi mengapa Seleksi sort-- 1476 01:16:06,714 --> 01:16:08,630 Saya akan memberikan kalian 30 kedua berpikir tentang hal ini. 1477 01:16:08,630 --> 01:16:10,700 Karena itu agak membingungkan. 1478 01:16:10,700 --> 01:16:12,710 Ini melibatkan beberapa pemikiran konseptual. 1479 01:16:12,710 --> 01:16:16,470 Mengapa kali run akan sama di kedua skenario kasus terburuk dan terbaik? 1480 01:16:16,470 --> 01:16:28,850 1481 01:16:28,850 --> 01:16:30,000 >> Ya? 1482 01:16:30,000 --> 01:16:38,084 >> AUDIENCE: Karena Seleksi semacam setiap posisi atau ruang dalam array kecil ini 1483 01:16:38,084 --> 01:16:40,350 Hal atau apa pun. 1484 01:16:40,350 --> 01:16:44,430 Jadi, bahkan dalam skenario kasus terbaik, bahkan jika itu sempurna diurutkan, 1485 01:16:44,430 --> 01:16:47,380 masih harus menjadi seperti, OK, satu. 1486 01:16:47,380 --> 01:16:49,000 Di tempat pertama saya, saya memiliki satu. 1487 01:16:49,000 --> 01:16:50,250 Dan pergi melalui semua dari mereka. 1488 01:16:50,250 --> 01:16:51,249 OK, satu adalah yang terkecil. 1489 01:16:51,249 --> 01:16:53,053 Dan kemudian ia pergi lagi dan seperti, OK, dua 1490 01:16:53,053 --> 01:16:54,594 adalah yang terkecil dari semua hal. 1491 01:16:54,594 --> 01:16:56,804 Tapi itu masih harus memeriksa setiap satu. 1492 01:16:56,804 --> 01:16:57,470 PROFESSOR: Ya. 1493 01:16:57,470 --> 01:17:00,490 Jadi misalnya, katakan saja kami telah daftar, sudah diurutkan, 1494 01:17:00,490 --> 01:17:03,390 array 1-5. 1495 01:17:03,390 --> 01:17:07,100 Cara Seleksi macam adalah bahwa ia pergi melalui, cek kedua. 1496 01:17:07,100 --> 01:17:08,234 Kemudian memeriksa dua. 1497 01:17:08,234 --> 01:17:09,650 Dan kemudian memeriksa, dan memeriksa. 1498 01:17:09,650 --> 01:17:13,285 Itu terus memeriksa semua dari mereka, terlepas dari apakah atau tidak 1499 01:17:13,285 --> 01:17:14,160 itu benar-benar diurutkan. 1500 01:17:14,160 --> 01:17:16,450 Karena itu hanya cara semacam bekerja. 1501 01:17:16,450 --> 01:17:19,530 >> Dan pertanyaan ini adalah jenis seperti pertanyaan konseptual kami akan meminta. 1502 01:17:19,530 --> 01:17:21,430 Di mana pertama, Anda tahu seperti apa Seleksi 1503 01:17:21,430 --> 01:17:23,304 adalah, tepat, untuk dapat untuk menjawab pertanyaan itu. 1504 01:17:23,304 --> 01:17:26,200 Anda harus dapat memahami konseptual apa yang terjadi. 1505 01:17:26,200 --> 01:17:30,760 Dan kemudian Anda dapat menerapkannya dan berpikir, OK mari kita bayangkan skenario terburuk. 1506 01:17:30,760 --> 01:17:32,230 Mereka semua dalam urutan. 1507 01:17:32,230 --> 01:17:33,290 Bagaimana yang akan mempengaruhi itu? 1508 01:17:33,290 --> 01:17:34,650 >> Bagaimana jika itu urutan menaik? 1509 01:17:34,650 --> 01:17:35,640 Jika itu sudah diurutkan? 1510 01:17:35,640 --> 01:17:37,240 Bagaimana yang akan mempengaruhi runtimes? 1511 01:17:37,240 --> 01:17:40,270 Dan kemudian Seleksi semacam, Anda akan melihat bahwa itu tidak benar-benar peduli. 1512 01:17:40,270 --> 01:17:43,500 Karena Anda sedang memeriksa semua nilai terlepas dari apa yang terjadi. 1513 01:17:43,500 --> 01:17:45,810 >> Dan hal yang baik untuk diingat. 1514 01:17:45,810 --> 01:17:50,290 Mengapa beberapa macam berbeda dari orang lain dan bagaimana cara terbaik dan skenario kasus terburuk 1515 01:17:50,290 --> 01:17:52,740 akan mempengaruhi semua dari mereka. 1516 01:17:52,740 --> 01:17:56,700 >> Aku akan benar-benar memukul di macam karena yang akan di kuis. 1517 01:17:56,700 --> 01:17:57,199 Ya. 1518 01:17:57,199 --> 01:18:00,820 1519 01:18:00,820 --> 01:18:01,320 OKE. 1520 01:18:01,320 --> 01:18:05,590 Ada enam menit tersisa. 1521 01:18:05,590 --> 01:18:09,880 Saya dapat mengambil tiga menit dari pertanyaan. 1522 01:18:09,880 --> 01:18:12,290 Saya juga bisa menggantung sekitar untuk seperti 20 menit setelah bagian 1523 01:18:12,290 --> 01:18:13,850 jika Anda ingin mengajukan pertanyaan juga. 1524 01:18:13,850 --> 01:18:16,330 Apakah ada yang hanya benar-benar singkat pertanyaan atau masalah konseptual 1525 01:18:16,330 --> 01:18:17,360 mereka jelas tentang sekarang? 1526 01:18:17,360 --> 01:18:17,832 Ya? 1527 01:18:17,832 --> 01:18:19,720 >> AUDIENCE: Dapatkah Anda berbicara sedikit sedikit tentang operator bitwise? 1528 01:18:19,720 --> 01:18:20,280 >> PROFESSOR: Ya. 1529 01:18:20,280 --> 01:18:22,446 Operator sehingga bitwise adalah sesuatu yang Anda mungkin 1530 01:18:22,446 --> 01:18:24,170 mungkin hanya ingin menempatkan pada lembar Anda. 1531 01:18:24,170 --> 01:18:27,540 Jadi quickly-- Saya tidak ingin untuk pergi terlalu banyak secara mendalam 1532 01:18:27,540 --> 01:18:31,164 karena Harvard, dalam tinjauan mereka sesi, ditutupi dengan cukup baik. 1533 01:18:31,164 --> 01:18:33,080 Operator bitwise, ada lima dari mereka, kan? 1534 01:18:33,080 --> 01:18:41,370 >> Ada ini, yang x atau fungsi, ada ampersand, yang merupakan dan. 1535 01:18:41,370 --> 01:18:44,050 Pipa, yang merupakan atau. 1536 01:18:44,050 --> 01:18:46,790 Dan kemudian Anda memiliki dua berbagai jenis pergeseran. 1537 01:18:46,790 --> 01:18:50,610 >> Jika saya memberikan dua nilai, jika Saya memberikan, seperti, satu dan satu. 1538 01:18:50,610 --> 01:18:52,390 Apa yang akan mengevaluasi? 1539 01:18:52,390 --> 01:18:55,490 Jika saya memberi Anda benar dan benar, yang benar? 1540 01:18:55,490 --> 01:18:56,930 Bagaimana benar atau salah? 1541 01:18:56,930 --> 01:18:57,830 Masih benar, kan? 1542 01:18:57,830 --> 01:18:59,762 Karena ada satu atau. 1543 01:18:59,762 --> 01:19:01,220 Kami kemungkinan besar akan memberikan nomor. 1544 01:19:01,220 --> 01:19:03,780 Jadi ingat, satu sama dengan benar, nol sama palsu. 1545 01:19:03,780 --> 01:19:07,407 Dan kami mungkin memberikan hal-hal ini dan meminta Anda untuk memberitahu kami apa yang terjadi. 1546 01:19:07,407 --> 01:19:10,240 Harvard mencakup itu dalam pertama 10 menit dari sesi studi mereka 1547 01:19:10,240 --> 01:19:11,230 benar-benar, benar-benar baik. 1548 01:19:11,230 --> 01:19:14,260 Jadi kalian ingin membuat Pastikan Anda melihat kembali itu. 1549 01:19:14,260 --> 01:19:16,387 >> AUDIENCE: Apakah pisa5 akan berada di kuis? 1550 01:19:16,387 --> 01:19:16,970 PROFESSOR: No. 1551 01:19:16,970 --> 01:19:18,240 Bahkan tidak melihat pisa5 sekarang. 1552 01:19:18,240 --> 01:19:18,810 Sulit. 1553 01:19:18,810 --> 01:19:22,830 Hanya bahkan tidak repot-repot mencari di pisa5. 1554 01:19:22,830 --> 01:19:25,665 >> Namun, karena beberapa petunjuk dan saran, saya 1555 01:19:25,665 --> 01:19:28,320 akan menyarankan Anda mulai pisa5 segera setelah kuis berakhir. 1556 01:19:28,320 --> 01:19:30,319 Ini akan menjadi yang paling sulit Minggu, tapi kemudian kalian 1557 01:19:30,319 --> 01:19:34,590 akan diteruskan pada bukit-bukit bergulir hijau dan anak anjing, 1558 01:19:34,590 --> 01:19:36,115 dan itu baik-baik saja. 1559 01:19:36,115 --> 01:19:39,810 >> Kelas ini akan signifikan lebih mudah setelah pset kelima. 1560 01:19:39,810 --> 01:19:41,560 Jam kerja: AUDIENCE adalah hari Minggu, Senin? 1561 01:19:41,560 --> 01:19:44,260 PROFESSOR: Ya, jadi jam kantor akan Minggu ke Senin untuk pset tersebut. 1562 01:19:44,260 --> 01:19:47,009 Jam kantor malam ini pada dasarnya hanya akan menjadi ulasan untuk kuis. 1563 01:19:47,009 --> 01:19:50,350 Jika ada yang ingin datang dan meminta yang TA pertanyaan, kami akan berada di sana. 1564 01:19:50,350 --> 01:19:53,220 >> Aku akan mengambil mungkin satu pertanyaan lagi kalau ada yang memiliki pertanyaan? 1565 01:19:53,220 --> 01:19:53,809 Ya? 1566 01:19:53,809 --> 01:19:55,850 AUDIENCE: Saat Anda mendefinisikan node, [tidak terdengar] 1567 01:19:55,850 --> 01:20:00,700 jika Anda mengatakan bintang node dan kemudian berikutnya, melakukan komputer secara otomatis 1568 01:20:00,700 --> 01:20:03,610 memahami bahwa Anda mengacu pada pointer lain? 1569 01:20:03,610 --> 01:20:04,580 >> PROFESSOR: No. 1570 01:20:04,580 --> 01:20:06,710 >> AUDIENCE: Anda harus relink itu [tidak terdengar]? 1571 01:20:06,710 --> 01:20:09,270 >> PROFESSOR: Jadi pada dasarnya struct dari sebuah node, ingat, 1572 01:20:09,270 --> 01:20:12,620 itu seperti Anda membuat node dan maka Anda memiliki pointer disebut berikutnya. 1573 01:20:12,620 --> 01:20:14,630 Semua yang Anda lakukan adalah memiliki struktur ada. 1574 01:20:14,630 --> 01:20:16,387 Anda harus menetapkan bahwa pointer di suatu tempat. 1575 01:20:16,387 --> 01:20:18,470 Jadi komputer tidak tahu apa yang dilakukannya belum. 1576 01:20:18,470 --> 01:20:20,250 Anda harus benar-benar menetapkan saat Anda membuat daftar Anda terkait. 1577 01:20:20,250 --> 01:20:22,170 Dan itulah yang terutama pset 5 akan di. 1578 01:20:22,170 --> 01:20:24,106 Sehingga tidak ada kekhawatiran tentang salah sekarang yang benar. 1579 01:20:24,106 --> 01:20:26,380 >> AUDIENCE: Jadi kita tidak perlu terlalu fokus pada daftar link hanya 1580 01:20:26,380 --> 01:20:27,440 konsepsi umum? 1581 01:20:27,440 --> 01:20:30,980 >> PROFESSOR: Hanya cukup banyak tumpukan, antrian, daftar link, pohon, tabel hash. 1582 01:20:30,980 --> 01:20:33,639 Hanya dapat mengetahui apa yang mereka. 1583 01:20:33,639 --> 01:20:35,680 Kami tidak akan meminta Anda suka sesuatu yang spesifik 1584 01:20:35,680 --> 01:20:39,300 karena kita belum benar-benar melakukan pset yang mencakup semua itu belum. 1585 01:20:39,300 --> 01:20:45,540 >> Jadi dalam dua menit terakhir sebelum Saya membuat Anda bebas untuk membunuh kuis ini. 1586 01:20:45,540 --> 01:20:49,370 Cukup banyak, seperti, berpikir tentang bagaimana jauh kalian datang di kelas ini. 1587 01:20:49,370 --> 01:20:52,820 >> Saya ingat ketika seminggu dua kelas ini, sebagian dari Anda 1588 01:20:52,820 --> 01:20:55,720 menghabiskan tiga jam menulis air. 1589 01:20:55,720 --> 01:20:57,970 Berapa lama waktu yang membawa Anda orang untuk menulis air sekarang? 1590 01:20:57,970 --> 01:20:59,670 30 detik, mungkin? 1591 01:20:59,670 --> 01:21:01,810 Pikirkan tentang berapa banyak kalian telah belajar. 1592 01:21:01,810 --> 01:21:04,320 CS adalah subjek benar-benar, benar-benar keras. 1593 01:21:04,320 --> 01:21:06,190 Tidak ada keraguan itu. 1594 01:21:06,190 --> 01:21:09,160 Sulit, itu sebabnya tidak ada studi itu. 1595 01:21:09,160 --> 01:21:10,730 Hanya saja sulit. 1596 01:21:10,730 --> 01:21:11,650 Dan itu benar-benar baik-baik saja. 1597 01:21:11,650 --> 01:21:14,150 >> Dan aku benar-benar bangga bahwa semua orang telah sampai sejauh ini. 1598 01:21:14,150 --> 01:21:16,380 Psets tidak mudah. 1599 01:21:16,380 --> 01:21:17,790 Mereka mengambil banyak waktu. 1600 01:21:17,790 --> 01:21:22,580 Kalian, aku tidak akan pernah meminta Anda untuk menulis permainan 15 atau Vigenere pada pset tersebut. 1601 01:21:22,580 --> 01:21:24,160 Tidak perlu panik hanya tentang itu. 1602 01:21:24,160 --> 01:21:28,080 Semua kami pengujian di sini adalah untuk mengevaluasi pengetahuan konseptual Anda, serta 1603 01:21:28,080 --> 01:21:31,524 karena beberapa keterampilan dasar coding. 1604 01:21:31,524 --> 01:21:33,440 Tes ini dirancang untuk benar-benar menantang. 1605 01:21:33,440 --> 01:21:36,180 Seperti, ia dirancang bagi Anda untuk tidak mendapatkan 100. 1606 01:21:36,180 --> 01:21:39,880 Ini juga dirancang bagi Anda untuk mungkin tidak dapat menyelesaikan dalam 75 menit. 1607 01:21:39,880 --> 01:21:41,995 Dan itu benar-benar baik-baik saja. 1608 01:21:41,995 --> 01:21:42,870 Saya seorang mahasiswa sendiri. 1609 01:21:42,870 --> 01:21:45,960 Aku tahu, aku benci kalau aku berjalan dari kuis seperti, kotoran. 1610 01:21:45,960 --> 01:21:47,044 Itu benar-benar sulit. 1611 01:21:47,044 --> 01:21:49,460 Mungkin apa yang akan happen-- dan itu benar-benar baik-baik saja, 1612 01:21:49,460 --> 01:21:50,751 Aku bilang kalian sekarang. 1613 01:21:50,751 --> 01:21:53,190 Cara hal-hal ini tidak tinggi sekali. 1614 01:21:53,190 --> 01:21:55,360 >> Dan bagi Anda yang telah mendapatkan, seperti, 1615 01:21:55,360 --> 01:21:57,870 bertiga pada set masalah Anda, itu tidak berarti Anda 1616 01:21:57,870 --> 01:21:59,536 akan mendapatkan 60 persen di kelas ini. 1617 01:21:59,536 --> 01:22:01,440 Jika Anda mendapatkan 60% pada kuis, yang tidak 1618 01:22:01,440 --> 01:22:03,330 berarti Anda akan mendapatkan D di kelas ini. 1619 01:22:03,330 --> 01:22:05,740 Kita melihat, terutama saya, untuk Bagi Anda di bagian saya, 1620 01:22:05,740 --> 01:22:07,406 Saya melihat seberapa keras kalian semua bekerja. 1621 01:22:07,406 --> 01:22:09,190 Dan saya melacak itu. 1622 01:22:09,190 --> 01:22:11,420 >> Kalian akan baik-baik saja. 1623 01:22:11,420 --> 01:22:14,580 Tidak ada memori kelembagaan kebahagiaan di akhir semester. 1624 01:22:14,580 --> 01:22:16,840 Karena semua anak-anak Harvard memberitahu teman-teman mereka, oh, Anda akan baik-baik. 1625 01:22:16,840 --> 01:22:18,381 Tidak ada yang memberitahu kalian bahwa di sini. 1626 01:22:18,381 --> 01:22:20,950 Jadi saya harus memberitahu kalian bahwa di sini. 1627 01:22:20,950 --> 01:22:22,280 >> Kalian akan baik-baik saja. 1628 01:22:22,280 --> 01:22:24,080 Saya sangat bangga dengan semua dari kalian. 1629 01:22:24,080 --> 01:22:25,680 Tes akan sulit. 1630 01:22:25,680 --> 01:22:28,140 Belajar untuk itu, dan setelah itu hanya membuangnya. 1631 01:22:28,140 --> 01:22:31,280 Dapatkan siap untuk belajar hal-hal baru. 1632 01:22:31,280 --> 01:22:33,990 Dan makan permen. 1633 01:22:33,990 --> 01:22:35,940 Kami sudah memiliki banyak permen. 1634 01:22:35,940 --> 01:22:37,760 >> Tidur malam yang baik. 1635 01:22:37,760 --> 01:22:40,420 Jangan tidak tidur, karena yang akan benar-benar buruk. 1636 01:22:40,420 --> 01:22:41,490 CS banyak logika. 1637 01:22:41,490 --> 01:22:44,960 Jika Anda tidak tidur, Anda tidak bisa berfungsi, dan otak Anda tidak bisa berfungsi. 1638 01:22:44,960 --> 01:22:48,780 Dan saya akan berada di sini untuk selanjutnya 20 menit jika ada yang ingin untuk menggantung di sekitar. 1639 01:22:48,780 --> 01:22:51,150 Kalian akan membunuhnya. 1640 01:22:51,150 --> 01:22:53,000 Semoga berhasil. 1641 01:22:53,000 --> 01:22:55,663