1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Seksyen 4] [Kurang Selesa] 2 00:00:02,000 --> 00:00:04,000 [Nate Hardison] [Universiti Harvard] 3 00:00:04,000 --> 00:00:07,000 [Ini adalah CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:10,000 >> Baiklah, selamat kembali ke seksyen. 5 00:00:10,000 --> 00:00:13,000 Dalam seksyen minggu ini kita akan melakukan beberapa perkara. 6 00:00:13,000 --> 00:00:17,000 Kami akan recap pertama Masalah Set 2, 7 00:00:17,000 --> 00:00:20,000 yang merupakan set Caesar dan masalah Vigenère. 8 00:00:20,000 --> 00:00:23,000 Dan kemudian kita akan menyelam ke dalam Kuiz 0 ulasan 9 00:00:23,000 --> 00:00:26,000 dan menghabiskan sedikit masa Mengimbas kembali apa yang kita telah bercakap tentang 10 00:00:26,000 --> 00:00:30,000 dalam setiap kuliah setakat ini, dan kami juga akan melakukan beberapa masalah 11 00:00:30,000 --> 00:00:32,000 dari kuiz tahun sebelumnya. 12 00:00:32,000 --> 00:00:36,000 Itu cara anda lelaki itu mempunyai cara yang baik untuk bersedia untuk itu. 13 00:00:36,000 --> 00:00:40,000 >> Untuk bermula, saya telah boot beberapa penyelesaian yang baik 14 00:00:40,000 --> 00:00:45,000 untuk menetapkan masalah sebelumnya, Set Masalah 2, ke dalam ruang ini. 15 00:00:45,000 --> 00:00:48,000 Jika kalian semua melanda pautan ini, 16 00:00:48,000 --> 00:00:53,000 dan jika anda klik nama saya dan klik pada semakan pertama saya 17 00:00:53,000 --> 00:00:56,000 anda akan melihat caesar.c, yang adalah apa yang saya melihat. 18 00:00:56,000 --> 00:01:00,000 Mari kita bercakap tentang perkara ini benar-benar cepat. 19 00:01:00,000 --> 00:01:02,000 Ini adalah hanya satu penyelesaian sampel. 20 00:01:02,000 --> 00:01:05,000 Ini tidak semestinya penyelesaian yang sempurna. 21 00:01:05,000 --> 00:01:08,000 Terdapat banyak cara yang berbeza untuk menulis ini, 22 00:01:08,000 --> 00:01:10,000 tetapi terdapat beberapa perkara yang saya mahu untuk menyerlahkan 23 00:01:10,000 --> 00:01:13,000 yang saya lihat seperti yang saya telah penggredan, kesilapan biasa yang saya fikir 24 00:01:13,000 --> 00:01:18,000 penyelesaian ini melakukan pekerjaan yang sangat baik pengendalian. 25 00:01:18,000 --> 00:01:22,000 >> Yang pertama mempunyai beberapa jenis komen header di atas. 26 00:01:22,000 --> 00:01:25,000 Pada baris 1 hingga 7 anda melihat butiran, 27 00:01:25,000 --> 00:01:28,000 apa sebenarnya program ini lakukan. 28 00:01:28,000 --> 00:01:32,000 Satu amalan standard yang baik apabila anda menulis kod C 29 00:01:32,000 --> 00:01:35,000 tanpa mengira jika program anda yang terkandung dalam fail tunggal atau 30 00:01:35,000 --> 00:01:38,000 sama ada ia berpecah sejak beberapa fail adalah untuk mempunyai beberapa jenis 31 00:01:38,000 --> 00:01:40,000 penghalaan komen di atas. 32 00:01:40,000 --> 00:01:43,000 Ini adalah juga bagi orang-orang yang keluar dan menulis kod dalam dunia sebenar. 33 00:01:43,000 --> 00:01:47,000 Ini adalah di mana mereka akan meletakkan maklumat hak cipta. 34 00:01:47,000 --> 00:01:50,000 Berikut adalah termasuk #. 35 00:01:50,000 --> 00:01:55,000 Pada 16 baris ada ini # menentukan, yang kita akan kembali ke dalam hanya sedikit. 36 00:01:55,000 --> 00:01:59,000 Dan kemudian sekali fungsi bermula, mula dibina utama sekali, 37 00:01:59,000 --> 00:02:03,000 kerana program ini telah semua yang terkandung dalam fungsi tunggal 38 00:02:03,000 --> 00:02:09,000 perkara yang pertama yang berlaku dan ini adalah sangat simpulan bahasa dan tipikal program C 39 00:02:09,000 --> 00:02:14,000 yang mengambil masa dalam baris arahan hujah adalah bahawa ia segera memeriksa 40 00:02:14,000 --> 00:02:18,000 >> untuk kiraan hujah, argc. 41 00:02:18,000 --> 00:02:24,000 Betul di sini kita melihat bahawa program ini menjangkakan 2 hujah yang tepat. 42 00:02:24,000 --> 00:02:27,000 Ingat ada bahawa hujah pertama itulah satu khas 43 00:02:27,000 --> 00:02:29,000 yang sentiasa nama program yang sedang berjalan, 44 00:02:29,000 --> 00:02:31,000 nama fail boleh laku. 45 00:02:31,000 --> 00:02:36,000 Dan sebagainya apa ini tidak adalah ia menghalang pengguna daripada menjalankan program ini 46 00:02:36,000 --> 00:02:42,000 dengan hujah-hujah yang lebih atau kurang. 47 00:02:42,000 --> 00:02:44,000 Sebab kita mahu untuk memeriksa hak ini jauh adalah kerana 48 00:02:44,000 --> 00:02:52,000 kita sebenarnya tidak boleh mengakses pelbagai argv di sini pasti 49 00:02:52,000 --> 00:02:55,000 sehingga kita telah diperiksa untuk melihat bagaimana ia adalah besar. 50 00:02:55,000 --> 00:02:58,000 >> Salah satu kesilapan yang biasa saya lihat ialah orang akan segera pergi dalam 51 00:02:58,000 --> 00:03:01,000 dan merebut argv [1]. 52 00:03:01,000 --> 00:03:06,000 Mereka akan merebut hujah utama daripada array dan lakukan untuk i memeriksa, 53 00:03:06,000 --> 00:03:11,000 dan kemudian mereka akan melakukan ujian untuk argc serta ujian seterusnya, 54 00:03:11,000 --> 00:03:16,000 sama ada atau tidak hujah pertama sememangnya suatu integer pada masa yang sama, 55 00:03:16,000 --> 00:03:20,000 dan yang tidak bekerja kerana dalam kes itu bahawa tidak ada hujah-hujah yang dibekalkan 56 00:03:20,000 --> 00:03:26,000 anda akan meraih hujah yang tidak ada atau cuba untuk merebut salah satu yang tidak ada. 57 00:03:26,000 --> 00:03:29,000 >> Perkara besar lain yang anda perlu melihat adalah bahawa 58 00:03:29,000 --> 00:03:32,000 anda sentiasa mahu mencetak beberapa jenis mesej ralat membantu 59 00:03:32,000 --> 00:03:34,000 kepada pengguna untuk menyesuaikan mereka. 60 00:03:34,000 --> 00:03:37,000 Saya pasti anda telah semua program yang dikendalikan di mana semua tiba-tiba ia kemalangan, 61 00:03:37,000 --> 00:03:41,000 dan anda akan mendapat dialog ini masuk akal sedikit yang muncul dan berkata 62 00:03:41,000 --> 00:03:44,000 sesuatu yang teruk samar dan mungkin memberikan anda kod ralat atau sesuatu seperti itu 63 00:03:44,000 --> 00:03:47,000 yang tidak masuk akal. 64 00:03:47,000 --> 00:03:50,000 Ini adalah di mana anda benar-benar ingin memberikan sesuatu yang berguna 65 00:03:50,000 --> 00:03:54,000 dan disasarkan kepada pengguna supaya apabila mereka berjalan mereka pergi "Oh," muka sawit. 66 00:03:54,000 --> 00:03:58,000 "Saya tahu apa yang perlu dilakukan. Saya tahu bagaimana untuk menetapkan ini." 67 00:03:58,000 --> 00:04:01,000 >> Jika anda tidak mencetak mesej, kemudian anda akhirnya sebenarnya 68 00:04:01,000 --> 00:04:04,000 meninggalkan pengguna untuk pergi memeriksa kod sumber anda 69 00:04:04,000 --> 00:04:07,000 untuk mengetahui apa yang telah salah. 70 00:04:07,000 --> 00:04:11,000 Terdapat juga beberapa kali bahawa anda akan menggunakan kod ralat yang berbeza. 71 00:04:11,000 --> 00:04:14,000 Di sini kita hanya menggunakan satu untuk mengatakan terdapat ralat, 72 00:04:14,000 --> 00:04:16,000 terdapat ralat, terdapat ralat. 73 00:04:16,000 --> 00:04:20,000 Program-program yang lebih besar, sering program yang dipanggil oleh program lain, 74 00:04:20,000 --> 00:04:25,000 akan kembali beberapa jenis kod ralat khas dalam senario yang berbeza 75 00:04:25,000 --> 00:04:28,000 programatik berkomunikasi apa yang anda akan sebaliknya 76 00:04:28,000 --> 00:04:32,000 hanya menggunakan mesej Inggeris bagus untuk. 77 00:04:32,000 --> 00:04:35,000 Sejuk. 78 00:04:35,000 --> 00:04:37,000 Seperti yang kita bekerja bawah, anda boleh melihat kita tarik keluar utama. 79 00:04:37,000 --> 00:04:40,000 Kami menguji untuk melihat jika kekunci sesuai. 80 00:04:40,000 --> 00:04:42,000 Kami mendapat mesej dari pengguna. 81 00:04:42,000 --> 00:04:46,000 Sebab kita melakukannya dalam hal ini melakukan gelung while dan ini adalah sesuatu yang kita akan meliputi 82 00:04:46,000 --> 00:04:50,000 dalam sedikit sedikit tetapi ia ternyata bahawa jika anda menaip kawalan D 83 00:04:50,000 --> 00:04:54,000 apabila anda mendapatkan GetString yang segera pada terminal 84 00:04:54,000 --> 00:04:59,000 apa yang sebenarnya tidak adalah ia menghantar aksara khas 85 00:04:59,000 --> 00:05:01,000 kepada program ini. 86 00:05:01,000 --> 00:05:05,000 Ia dipanggil ELF atau akhir watak fail. 87 00:05:05,000 --> 00:05:08,000 Dan dalam kes itu, rentetan mesej kita akan menjadi batal, 88 00:05:08,000 --> 00:05:14,000 jadi ini bukanlah sesuatu yang kami diperiksa dalam masalah ini menetapkan sendiri. 89 00:05:14,000 --> 00:05:17,000 >> Tetapi seperti yang kita pergi, sekarang bahawa kita telah mula bercakap tentang petunjuk 90 00:05:17,000 --> 00:05:21,000 dan memori peruntukan dinamik pada timbunan, 91 00:05:21,000 --> 00:05:25,000 memeriksa batal apabila anda mempunyai fungsi yang mungkin 92 00:05:25,000 --> 00:05:30,000 kembali null sebagai nilai adalah sesuatu yang anda akan mahu untuk mendapatkan dalam tabiat menjalankan. 93 00:05:30,000 --> 00:05:33,000 Ini adalah di sini terutamanya untuk ilustrasi. 94 00:05:33,000 --> 00:05:36,000 Tetapi apabila anda melihat GetString pada masa depan, 95 00:05:36,000 --> 00:05:41,000 jadi dari Set Masalah 4 pada, anda akan mahu untuk menyimpan ini dalam minda. 96 00:05:41,000 --> 00:05:44,000 Sekali lagi, ini bukan satu isu untuk Set Masalah 3 sama ada kerana kita telah tidak dilindungi lagi. 97 00:05:44,000 --> 00:05:53,000 Akhirnya, kita sampai ke bahagian ini di mana kita mendapat untuk gelung penyulitan utama, 98 00:05:53,000 --> 00:05:57,000 dan terdapat beberapa perkara yang berlaku di sini. 99 00:05:57,000 --> 00:06:02,000 Pertama, kita melelar atas rentetan mesej keseluruhan sendiri. 100 00:06:02,000 --> 00:06:07,000 Di sini kita telah disimpan panggilan strlen dalam keadaan, 101 00:06:07,000 --> 00:06:12,000 yang bilangan anda telah menegaskan tidak merupakan cara terbaik untuk pergi. 102 00:06:12,000 --> 00:06:15,000 Ia ternyata dalam kes ini ia juga tidak besar, 103 00:06:15,000 --> 00:06:20,000 sebahagiannya kerana kita sedang mengubahsuai kandungan mesej itu sendiri 104 00:06:20,000 --> 00:06:27,000 di dalam gelung, jadi jika kita mempunyai mesej yang 10 aksara panjang, 105 00:06:27,000 --> 00:06:32,000 kali pertama kita mula bahawa untuk gelung strlen akan kembali apa? 106 00:06:32,000 --> 00:06:35,000 10. 107 00:06:35,000 --> 00:06:40,000 >> Tetapi jika kita kemudian mengubah suai mesej, mengatakan kita mengubah suai watak-5, 108 00:06:40,000 --> 00:06:46,000 dan kita buang dalam watak \ 0 di kedudukan ke-5, 109 00:06:46,000 --> 00:06:49,000 pada lelaran berikutnya strlen (mesej) tidak akan kembali apa yang ia lakukan 110 00:06:49,000 --> 00:06:52,000 kali pertama kami terlelar, 111 00:06:52,000 --> 00:06:56,000 tetapi ia sebaliknya akan kembali 5 kerana kita melemparkan bahawa null, 112 00:06:56,000 --> 00:06:59,000 dan panjang rentetan ditakrifkan 113 00:06:59,000 --> 00:07:03,000 oleh kedudukan itu \ 0. 114 00:07:03,000 --> 00:07:09,000 Dalam kes ini, ini adalah cara terbaik untuk pergi kerana kami sedang mengubahsuai ia di tempat. 115 00:07:09,000 --> 00:07:13,000 Tetapi anda perasan bahawa ini adalah sebenarnya menghairankan mudah untuk menyulitkan 116 00:07:13,000 --> 00:07:16,000 jika anda boleh mendapatkan matematik yang betul. 117 00:07:16,000 --> 00:07:19,000 Apa yang diperlukan adalah untuk memeriksa sama ada atau tidak surat yang anda sedang mencari di 118 00:07:19,000 --> 00:07:21,000 huruf besar atau huruf kecil. 119 00:07:21,000 --> 00:07:24,000 >> Sebab kita hanya perlu untuk memeriksa itu dan kita tidak perlu untuk memeriksa 120 00:07:24,000 --> 00:07:27,000 kes adalah alfa adalah kerana 121 00:07:27,000 --> 00:07:30,000 jika watak huruf besar atau jika ia adalah huruf kecil 122 00:07:30,000 --> 00:07:33,000 maka ia pasti aksara abjad, 123 00:07:33,000 --> 00:07:38,000 kerana kita tidak mempunyai angka yang besar dan huruf kecil. 124 00:07:38,000 --> 00:07:41,000 Perkara lain yang kita lakukan dan ini adalah sedikit sukar 125 00:07:41,000 --> 00:07:45,000 kita telah diubahsuai Caesar standard cipher formula 126 00:07:45,000 --> 00:07:49,000 yang kita berikan dalam spesifikasi set masalah. 127 00:07:49,000 --> 00:07:52,000 Apa yang berbeza di sini adalah bahawa kita ditolak 128 00:07:52,000 --> 00:07:58,000 dalam modal kes huruf besar, dan kemudian kita tambah modal A 129 00:07:58,000 --> 00:08:02,000 kembali di akhir. 130 00:08:02,000 --> 00:08:05,000 >> Saya tahu beberapa anda telah melakukan ini dalam kod anda. 131 00:08:05,000 --> 00:08:09,000 Adakah mana-mana anda melakukan ini dalam penghujahan anda? 132 00:08:09,000 --> 00:08:13,000 Yang anda lakukan ini. Bolehkah anda menjelaskan apa ini tidak, Sahb? 133 00:08:13,000 --> 00:08:18,000 Dengan menolak ia keluar, kerana anda lakukan arena sejurus selepas ia, 134 00:08:18,000 --> 00:08:21,000 anda perlu mengambil ia keluar, supaya cara anda mendapat [batuk] kedudukan. 135 00:08:21,000 --> 00:08:25,000 Dan kemudian dengan menambah kembali kemudian anda beralih lebih daripada satu yang anda mahu. 136 00:08:25,000 --> 00:08:27,000 Ya, sebenarnya. 137 00:08:27,000 --> 00:08:32,000 Apa Sahb berkata adalah bahawa apabila kita mahu menambah 138 00:08:32,000 --> 00:08:36,000 mesej kami dan kunci kita bersama 139 00:08:36,000 --> 00:08:42,000 dan kemudian arena, arena yang oleh NUM_LETTERS, 140 00:08:42,000 --> 00:08:50,000 jika kita tidak skala mesej kami ke pelbagai sesuai 0-25 pertama, 141 00:08:50,000 --> 00:08:54,000 maka kita mungkin berakhir sehingga mendapat jumlah yang benar-benar pelik 142 00:08:54,000 --> 00:08:59,000 kerana nilai-nilai yang kita sedang melihat apabila kita melihat mesej [i], 143 00:08:59,000 --> 00:09:03,000 apabila kita melihat watak engan mesej teks biasa kami, 144 00:09:03,000 --> 00:09:08,000 nilai tempat dalam julat ini 65-122 145 00:09:08,000 --> 00:09:13,000 berdasarkan nilai ASCII bagi huruf besar A melalui z huruf kecil. 146 00:09:13,000 --> 00:09:18,000 Dan sebagainya apabila kita MOD sebanyak 26 atau oleh NUM_LETTERS, 147 00:09:18,000 --> 00:09:23,000 kerana itu adalah menentukan # kami di sebelah kanan atas di sini, 148 00:09:23,000 --> 00:09:28,000 itu akan memberi kita nilai itu dalam julat 0-25, 149 00:09:28,000 --> 00:09:30,000 dan kami memerlukan satu cara untuk kemudian skala yang kembali 150 00:09:30,000 --> 00:09:32,000 dan mendapatkan ia dalam julat ASCII yang sesuai. 151 00:09:32,000 --> 00:09:36,000 Cara paling mudah untuk berbuat demikian adalah untuk hanya skala semua turun 152 00:09:36,000 --> 00:09:39,000 ke dalam julat 0-25 untuk memulakan dengan, 153 00:09:39,000 --> 00:09:43,000 dan kemudian mengalihkan segala-galanya kembali pada akhir. 154 00:09:43,000 --> 00:09:46,000 >> Satu lagi kesilapan biasa yang saya lihat orang lari ke 155 00:09:46,000 --> 00:09:50,000 jika anda tidak benar-benar melakukan bersisik ini segera 156 00:09:50,000 --> 00:09:53,000 dan anda menambah mesej dan kunci bersama-sama dan anda menambah mereka, berkata, 157 00:09:53,000 --> 00:09:58,000 ke dalam pembolehubah char, masalah dengan itu 158 00:09:58,000 --> 00:10:01,000 sejak mesej [i] adalah satu jumlah yang agak besar untuk memulakan dengan- 159 00:10:01,000 --> 00:10:05,000 ingat ia sekurang-kurangnya 65 jika ia satu huruf besar watak- 160 00:10:05,000 --> 00:10:09,000 jika anda mempunyai kunci yang besar, katakan, sesuatu seperti 100, 161 00:10:09,000 --> 00:10:13,000 dan anda menambah mereka 2 bersama-sama ke dalam char ditandatangani anda akan mendapat limpahan. 162 00:10:13,000 --> 00:10:17,000 Anda akan mendapatkan nilai yang lebih besar daripada 127, 163 00:10:17,000 --> 00:10:22,000 yang merupakan nilai terbesar bahawa pembolehubah char boleh memegang. 164 00:10:22,000 --> 00:10:26,000 Sekali lagi, itulah sebabnya anda akan mahu untuk melakukan yang jenis perkara untuk bermula dengan. 165 00:10:26,000 --> 00:10:29,000 Sesetengah orang mendapat sekitar kes itu dengan melakukan jika lain dan menguji 166 00:10:29,000 --> 00:10:33,000 untuk melihat jika ia akan melimpah sebelum berbuat demikian, 167 00:10:33,000 --> 00:10:36,000 tetapi cara ini mendapat sekitar yang. 168 00:10:36,000 --> 00:10:40,000 Dan kemudian dalam penyelesaian ini kita cetak keseluruhan rentetan pada akhir sangat. 169 00:10:40,000 --> 00:10:45,000 Orang lain dicetak watak pada satu-satu masa. Kedua-duanya adalah hebat. 170 00:10:45,000 --> 00:10:51,000 Pada ketika ini, adakah anda semua mempunyai sebarang pertanyaan, sebarang komen tentang perkara ini? 171 00:10:51,000 --> 00:10:56,000 Perkara yang anda suka, perkara yang anda tidak suka? 172 00:10:56,000 --> 00:10:58,000 >> Saya mempunyai satu soalan. 173 00:10:58,000 --> 00:11:01,000 Mungkin saya terlepas semasa penerangan anda, tetapi bagaimana program ini 174 00:11:01,000 --> 00:11:07,000 melangkau ruang untuk menyambung kunci kepada panjang teks? 175 00:11:07,000 --> 00:11:10,000 Ini adalah hanya Caesar cipher. >> Oh, maaf, yeah. 176 00:11:10,000 --> 00:11:13,000 Ya, kita akan melihat bahawa. 177 00:11:13,000 --> 00:11:16,000 Dalam cipher Caesar kita mendapat sekitar bahawa kerana 178 00:11:16,000 --> 00:11:18,000 kita hanya dibalik aksara. 179 00:11:18,000 --> 00:11:27,000 Kami hanya berputar mereka jika mereka besar atau huruf kecil. 180 00:11:27,000 --> 00:11:32,000 Kalian berasa cukup baik tentang perkara ini? 181 00:11:32,000 --> 00:11:34,000 Berasa bebas untuk menyalin rumah ini, mengambil, 182 00:11:34,000 --> 00:11:37,000 bandingkan apa yang anda semua menulis. 183 00:11:37,000 --> 00:11:42,000 Pasti berasa bebas untuk menghantar soalan tentang hal itu juga. 184 00:11:42,000 --> 00:11:46,000 Dan sekali lagi, menyedari bahawa matlamat sini dengan masalah anda menetapkan 185 00:11:46,000 --> 00:11:50,000 bukan untuk mendapatkan anda lelaki untuk menulis kod yang sesuai untuk set masalah anda. 186 00:11:50,000 --> 00:11:57,000 Ia adalah satu pengalaman pembelajaran. Yeah. 187 00:11:57,000 --> 00:12:01,000 >> Kembali ke do gelung while, jika ia bersamaan batal, 188 00:12:01,000 --> 00:12:06,000 jadi batal hanya bermaksud apa-apa, mereka hanya tekan enter? 189 00:12:06,000 --> 00:12:12,000 Nol ialah nilai penunjuk khas, 190 00:12:12,000 --> 00:12:17,000 dan kita gunakan batal apabila kita mahu katakan 191 00:12:17,000 --> 00:12:23,000 kita mempunyai pembolehubah penunjuk yang menunjuk ke apa-apa. 192 00:12:23,000 --> 00:12:28,000 Dan begitu biasanya ia bermakna bahawa ini pembolehubah, pembolehubah mesej 193 00:12:28,000 --> 00:12:35,000 adalah kosong, dan di sini, kerana kita menggunakan jenis CS50 rentetan khas, 194 00:12:35,000 --> 00:12:37,000 apakah jenis tali CS50? 195 00:12:37,000 --> 00:12:42,000 Pernahkah anda melihat apa yang ia adalah apabila Daud ditarik balik hud dalam kuliah? 196 00:12:42,000 --> 00:12:44,000 Ia funky ia adalah penunjuk, betul? 197 00:12:44,000 --> 00:12:48,000 Okay, yeah. >> Ia adalah * char. 198 00:12:48,000 --> 00:12:52,000 Dan sebagainya benar-benar kita boleh menggantikan ini 199 00:12:52,000 --> 00:12:56,000 di sini * dengan mesej char, 200 00:12:56,000 --> 00:13:04,000 dan sebagainya fungsi GetString, jika ia tidak berjaya mendapatkan rentetan daripada pengguna, 201 00:13:04,000 --> 00:13:08,000 ia tidak boleh menghuraikan rentetan, dan satu kes di mana ia tidak boleh menghuraikan rentetan 202 00:13:08,000 --> 00:13:11,000 jika jenis pengguna akhir watak fail, D kawalan, 203 00:13:11,000 --> 00:13:17,000 yang tidak adalah sesuatu yang biasanya anda lakukan, tetapi jika itu berlaku 204 00:13:17,000 --> 00:13:20,000 maka fungsi akan kembali nilai nol ini sebagai satu cara untuk mengatakan 205 00:13:20,000 --> 00:13:23,000 "Hei, saya tidak mendapatkan rentetan." 206 00:13:23,000 --> 00:13:27,000 Apa yang akan berlaku jika kita tidak meletakkan mesej null =, 207 00:13:27,000 --> 00:13:30,000 yang merupakan sesuatu yang kita tidak melakukan lagi? 208 00:13:30,000 --> 00:13:32,000 Mengapa yang akan menjadi masalah di sini? 209 00:13:32,000 --> 00:13:38,000 Kerana saya tahu bahawa kita bercakap sedikit dalam syarahan mengenai kebocoran memori. 210 00:13:38,000 --> 00:13:42,000 Ya, mari kita berbuat demikian, dan mari kita lihat apa yang berlaku. 211 00:13:42,000 --> 00:13:44,000 >> Soalan Basil adalah apa yang berlaku jika kita tidak benar-benar mempunyai 212 00:13:44,000 --> 00:13:48,000 mesej ini = ujian batal? 213 00:13:48,000 --> 00:13:51,000 Mari kita tatal ke atas ke atas. 214 00:13:51,000 --> 00:13:53,000 Kalian boleh mengulas keluar ini. 215 00:13:53,000 --> 00:13:55,000 Sebenarnya, saya akan menyimpannya di dalam semakan. 216 00:13:55,000 --> 00:13:58,000 Ini akan menjadi Semakan 3. 217 00:13:58,000 --> 00:14:02,000 Apa yang anda perlu lakukan untuk menjalankan program ini adalah anda perlu klik ikon ini gear sehingga di sini, 218 00:14:02,000 --> 00:14:04,000 dan anda akan mempunyai untuk menambah hujah untuk ia. 219 00:14:04,000 --> 00:14:10,000 Anda akan mempunyai untuk memberi hujah utama kerana kita mahu lulus dalam hujah baris arahan. 220 00:14:10,000 --> 00:14:13,000 Di sini saya akan memberikan nombor 3. Saya suka 3. 221 00:14:13,000 --> 00:14:19,000 Sekarang zoom kembali, menjalankan program ini. 222 00:14:19,000 --> 00:14:24,000 Ia berlari, menyusun, membina. 223 00:14:24,000 --> 00:14:27,000 Di sini kita pergi. Ia menunggu akan diminta. 224 00:14:27,000 --> 00:14:33,000 Jika saya menaip sesuatu seperti hello-mana yang pergi? 225 00:14:33,000 --> 00:14:38,000 Oh, program saya mengambil masa terlalu lama untuk menjalankan. Saya jawing terlalu lama. 226 00:14:38,000 --> 00:14:40,000 Di sini ia pergi. 227 00:14:40,000 --> 00:14:43,000 Sekarang saya menaip hello. 228 00:14:43,000 --> 00:14:46,000 Kita lihat bahawa ia menyulitkan sewajarnya. 229 00:14:46,000 --> 00:14:52,000 Sekarang apa yang berlaku jika kita melakukan GetString segera kembali batal? 230 00:14:52,000 --> 00:14:57,000 Ingat, saya berkata bahawa kita melakukannya dengan menekan kawalan D pada masa yang sama. 231 00:14:57,000 --> 00:14:59,000 Saya akan tatal ke atas sini. Kami akan berjalan lagi. 232 00:14:59,000 --> 00:15:01,000 Bangunan. Terdapat ia pergi. 233 00:15:01,000 --> 00:15:04,000 Sekarang apabila saya mencecah kawalan D 234 00:15:04,000 --> 00:15:12,000 Saya mendapat ini garis yang mengatakan opt/sandbox50/bin/run.sh, kesalahan Segmentasi. 235 00:15:12,000 --> 00:15:15,000 Pernahkah anda semua melihat bahawa sebelum ini? 236 00:15:15,000 --> 00:15:17,000 >> [Pelajar] Mengapa ada tidak >> Maaf? 237 00:15:17,000 --> 00:15:20,000 [Pelajar] Mengapa tiada sampah teras dalam kes ini? 238 00:15:20,000 --> 00:15:26,000 Sampah teras adalah soalan mengapa terdapat tiada sampah teras di sini? 239 00:15:26,000 --> 00:15:29,000 Persoalannya ialah bahawa mungkin ada, tetapi dump teras adalah fail 240 00:15:29,000 --> 00:15:31,000 yang mendapat disimpan di dalam cakera keras. 241 00:15:31,000 --> 00:15:34,000 Dalam kes ini kita telah dilumpuhkan tapak teras 242 00:15:34,000 --> 00:15:37,000 pada pelayan jangka supaya kita tidak ada orang yang seg faulting 243 00:15:37,000 --> 00:15:40,000 dan membina tan tapak teras. 244 00:15:40,000 --> 00:15:46,000 Tetapi anda boleh mendapatkan satu. 245 00:15:46,000 --> 00:15:48,000 Tapak teras adalah jenis perkara yang anda sering boleh melumpuhkan, 246 00:15:48,000 --> 00:15:52,000 dan kadang-kadang anda lakukan. 247 00:15:52,000 --> 00:15:55,000 Kesalahan segmentasi, untuk menjawab soalan anda, Basil, 248 00:15:55,000 --> 00:16:00,000 mengatakan bahawa kita cuba untuk mengakses penunjuk 249 00:16:00,000 --> 00:16:05,000 yang tidak bersedia untuk menunjukkan apa-apa. 250 00:16:05,000 --> 00:16:09,000 Ingat Binky dalam video apabila Binky cuba untuk 251 00:16:09,000 --> 00:16:12,000 pergi mengakses penunjuk itu tidak menunjuk kepada apa-apa? 252 00:16:12,000 --> 00:16:16,000 Dalam kes ini saya rasa teknikal penunjuk menunjuk kepada sesuatu. 253 00:16:16,000 --> 00:16:20,000 Ia menunjuk ke null, yang teknikal 0, 254 00:16:20,000 --> 00:16:25,000 tetapi yang ditakrifkan sebagai dalam segmen yang tidak boleh diakses 255 00:16:25,000 --> 00:16:28,000 oleh program anda, supaya anda mendapat suatu kesalahan segmentasi 256 00:16:28,000 --> 00:16:31,000 kerana anda tidak mengakses memori yang dalam segmen yang sah 257 00:16:31,000 --> 00:16:38,000 seperti segmen timbunan atau segmen timbunan atau segmen data. 258 00:16:38,000 --> 00:16:40,000 Sejuk. 259 00:16:40,000 --> 00:16:48,000 Sebarang pertanyaan lanjut mengenai Caesar? 260 00:16:48,000 --> 00:16:51,000 >> Mari kita bergerak ke atas. Mari kita lihat pada 2 Semakan benar-benar cepat. 261 00:16:51,000 --> 00:17:00,000 Itulah Vigenère. 262 00:17:00,000 --> 00:17:04,000 Di sini di Vigenère 263 00:17:04,000 --> 00:17:06,000 kami akan berjalan melalui satu ini cukup cepat kerana, sekali lagi, 264 00:17:06,000 --> 00:17:10,000 Vigenère dan Caesar adalah agak serupa. 265 00:17:10,000 --> 00:17:12,000 Komen Header sebelum ini, 266 00:17:12,000 --> 00:17:17,000 # Define adalah sebelum untuk mengelakkan menggunakan nombor-nombor sihir. 267 00:17:17,000 --> 00:17:21,000 Perkara yang baik mengatakan bahawa kita mahu untuk bergerak ke 268 00:17:21,000 --> 00:17:23,000 abjad yang berbeza atau sesuatu seperti itu. 269 00:17:23,000 --> 00:17:26,000 Bukannya perlu pergi manual menukar semua 26 dalam kod 270 00:17:26,000 --> 00:17:30,000 kita boleh menukar ini kepada 27 atau jatuh ke bawah 271 00:17:30,000 --> 00:17:34,000 jika kita telah menggunakan huruf yang berbeza, bahasa yang berbeza. 272 00:17:34,000 --> 00:17:38,000 Sekali lagi, kita telah mendapat cek ini kiraan hujah, 273 00:17:38,000 --> 00:17:42,000 dan benar-benar anda hampir boleh mengambil ini sebagai templat. 274 00:17:42,000 --> 00:17:46,000 Cukup banyak setiap program yang anda menulis harus mempunyai- 275 00:17:46,000 --> 00:17:50,000 jika ia mengambil baris arahan hujah-beberapa urutan garisan 276 00:17:50,000 --> 00:17:55,000 yang berbunyi seperti ini pada awal-awal lagi. 277 00:17:55,000 --> 00:17:59,000 Itulah salah satu ujian kewarasan pertama yang anda mahu lakukan. 278 00:17:59,000 --> 00:18:03,000 >> Di sini apa yang kita tidak telah kita memastikan bahawa 279 00:18:03,000 --> 00:18:06,000 kata kunci adalah sah, dan yang cek kedua yang kita lakukan. 280 00:18:06,000 --> 00:18:11,000 Notis lagi yang kita dipisahkan ini dari argc dan 2. 281 00:18:11,000 --> 00:18:14,000 Perhatikan bahawa dalam kes ini satu perkara yang kita terpaksa lakukan adalah sebaliknya 282 00:18:14,000 --> 00:18:18,000 menggunakan i kita mahu untuk mengesahkan keseluruhan rentetan, 283 00:18:18,000 --> 00:18:21,000 dan untuk melakukan bahawa anda sebenarnya perlu pergi watak oleh watak 284 00:18:21,000 --> 00:18:23,000 lebih tali. 285 00:18:23,000 --> 00:18:29,000 Tiada cara yang baik untuk memanggil sesuatu pada 286 00:18:29,000 --> 00:18:31,000 kerana walaupun, sebagai contoh, i akan kembali 0 287 00:18:31,000 --> 00:18:37,000 jika ia tidak dapat menghurai integer, supaya tidak pun bekerja. 288 00:18:37,000 --> 00:18:42,000 Sekali lagi, mesej bagus memberitahu pengguna tepat apa yang berlaku. 289 00:18:42,000 --> 00:18:45,000 Maka di sini, sekali lagi, kami juga mengendalikan kes di mana 290 00:18:45,000 --> 00:18:50,000 pengguna jenis watak D kawalan rawak. 291 00:18:50,000 --> 00:18:54,000 >> Dan kemudian Charlotte mempunyai soalan awal tentang bagaimana kita menguruskan untuk melangkau ruang 292 00:18:54,000 --> 00:18:57,000 dalam rentetan di sini kami. 293 00:18:57,000 --> 00:19:00,000 Ini adalah jenis yang serupa dengan apa yang kita lakukan dengan program Myspace 294 00:19:00,000 --> 00:19:04,000 yang kita lakukan dalam seksyen ini, dan cara ini bekerja 295 00:19:04,000 --> 00:19:08,000 ialah bahawa kita dikesan bilangan huruf yang kita akan melihat. 296 00:19:08,000 --> 00:19:13,000 Seperti yang kita berjalan atas rentetan mesej, seperti yang kita berjalan lebih watak oleh watak, 297 00:19:13,000 --> 00:19:16,000 kita menjejaki indeks sebagai sebahagian daripada kami untuk gelung, dan kemudian kita juga dikesan 298 00:19:16,000 --> 00:19:21,000 bilangan huruf, jadi bukan aksara khas, bukan angka, bukan putih ruang 299 00:19:21,000 --> 00:19:27,000 bahawa kita akan dilihat dalam pembolehubah berasingan. 300 00:19:27,000 --> 00:19:33,000 Dan maka penyelesaian ini mengubah kekunci 301 00:19:33,000 --> 00:19:41,000 untuk mendapatkan integer utama sebenar, dan ia adakah itu on the fly, 302 00:19:41,000 --> 00:19:47,000 betul sebelum ia kemudian pergi untuk menyulitkan mesej watak sebenar. 303 00:19:47,000 --> 00:19:50,000 Terdapat beberapa penyelesaian yang sempurna terlalu besar 304 00:19:50,000 --> 00:19:58,000 yang akan mengubah kekunci apabila menguji kesahihan kekunci. 305 00:19:58,000 --> 00:20:01,000 Di samping untuk memastikan bahawa watak dan kata kunci 306 00:20:01,000 --> 00:20:05,000 telah aksara abjad ia juga bertukar bahawa ke integer 307 00:20:05,000 --> 00:20:13,000 dalam julat 0-25 maka skip perlu untuk berbuat demikian kemudian di dalam ini untuk gelung. 308 00:20:13,000 --> 00:20:18,000 Sekali lagi, anda lihat di sini ini adalah benar-benar kod yang sama yang tepat 309 00:20:18,000 --> 00:20:22,000 bahawa kita digunakan dalam Caesar pada ketika ini. 310 00:20:22,000 --> 00:20:25,000 Anda melakukan perkara yang sama, jadi helah sebenar memikirkan 311 00:20:25,000 --> 00:20:30,000 bagaimana untuk menjadikan kata kunci ke dalam integer. 312 00:20:30,000 --> 00:20:35,000 >> Satu perkara yang kita lakukan di sini yang sedikit tebal 313 00:20:35,000 --> 00:20:39,000 kita mengulangi frasa ini, saya rasa anda boleh memanggil ia, 314 00:20:39,000 --> 00:20:45,000 3 kali berasingan pada baris 58, 59, dan 61. 315 00:20:45,000 --> 00:20:52,000 Seseorang boleh menjelaskan apa sebenarnya frasa ini tidak? 316 00:20:52,000 --> 00:20:55,000 Ia mengakses watak, seperti yang anda kata. 317 00:20:55,000 --> 00:20:59,000 Ya, ia adalah [didengar] watak dalam kata kunci, 318 00:20:59,000 --> 00:21:04,000 dan sebagainya ia adalah bilangan huruf dilihat kerana anda hanya bergerak di sepanjang 319 00:21:04,000 --> 00:21:06,000 kata kunci sekali anda telah melihat surat itu, 320 00:21:06,000 --> 00:21:10,000 supaya akan berkesan melangkau ruang dan barangan seperti itu. 321 00:21:10,000 --> 00:21:12,000 Ya, sebenarnya. 322 00:21:12,000 --> 00:21:16,000 Dan kemudian sekali anda telah melihat kosong kata kunci anda hanya arena supaya anda bergerak ke belakang sekitar. 323 00:21:16,000 --> 00:21:18,000 Tepat sekali. Itulah penjelasan yang sempurna. 324 00:21:18,000 --> 00:21:23,000 Apa yang Kevin berkata bahawa kita mahu indeks ke dalam kata kunci. 325 00:21:23,000 --> 00:21:28,000 Kami mahu mendapatkan watak num_letters_seen, jika anda akan, 326 00:21:28,000 --> 00:21:32,000 tetapi jika num_letters_seen melebihi panjang kata kunci, 327 00:21:32,000 --> 00:21:37,000 cara kita dapat kembali ke julat yang sesuai ialah kita menggunakan pengendali arena 328 00:21:37,000 --> 00:21:40,000 berkesan membalut di sekitar. 329 00:21:40,000 --> 00:21:43,000 Sebagai contoh, seperti dalam jangka pendek, kata kunci kami adalah daging, 330 00:21:43,000 --> 00:21:46,000 dan 5 huruf panjang. 331 00:21:46,000 --> 00:21:50,000 Tetapi kita telah melihat 6 huruf dalam teks biasa kita pada ketika ini 332 00:21:50,000 --> 00:21:52,000 dan disulitkan 6. 333 00:21:52,000 --> 00:21:57,000 Kami akan berakhir sehingga mengakses num_letters_seen, 334 00:21:57,000 --> 00:22:00,000 yang 6, arena panjang kata kunci, 5, 335 00:22:00,000 --> 00:22:04,000 dan supaya kita akan mendapat 1, dan sebagainya apa yang kita akan lakukan ialah kami akan 336 00:22:04,000 --> 00:22:14,000 mengakses dalam watak pertama kata kunci kami pada ketika itu. 337 00:22:14,000 --> 00:22:21,000 >> Baiklah, apa-apa soalan mengenai Vigenère 338 00:22:21,000 --> 00:22:26,000 sebelum kita bergerak ke atas? 339 00:22:26,000 --> 00:22:31,000 Kalian berasa cukup baik tentang perkara ini? 340 00:22:31,000 --> 00:22:35,000 Sejuk, besar. 341 00:22:35,000 --> 00:22:38,000 Saya mahu pastikan bahawa anda semua akan mendapat peluang untuk melihat kod 342 00:22:38,000 --> 00:22:48,000 yang kita fikir kelihatan baik dan mempunyai peluang untuk belajar daripada. 343 00:22:48,000 --> 00:22:53,000 Ini akan menjadi yang terakhir kita akan menggunakan ruang untuk masa ini, 344 00:22:53,000 --> 00:22:59,000 dan kami pergi untuk peralihan sekarang, dan saya akan pergi ke cs50.net/lectures 345 00:22:59,000 --> 00:23:06,000 supaya kita boleh melakukan sedikit kajian kuiz. 346 00:23:06,000 --> 00:23:10,000 Cara terbaik saya berfikir untuk mula melakukan kuiz ulasan 347 00:23:10,000 --> 00:23:15,000 adalah untuk datang ke laman Kuliah ini, cs50.net/lectures, 348 00:23:15,000 --> 00:23:20,000 dan di bawah setiap tajuk minggu, jadi jika saya melihat di sini pada 0 Minggu, 349 00:23:20,000 --> 00:23:27,000 Saya melihat bahawa kita mempunyai senarai topik yang kita dilindungi di titik 0 Minggu. 350 00:23:27,000 --> 00:23:31,000 >> Jika mana-mana topik-topik ini kelihatan biasa kepada anda 351 00:23:31,000 --> 00:23:34,000 anda pasti akan mahu untuk kembali dan kerokan nota kuliah dan mungkin 352 00:23:34,000 --> 00:23:39,000 malah agunan melalui ceramah-ceramah, menonton mereka sekali lagi jika anda mahu 353 00:23:39,000 --> 00:23:44,000 untuk mendapatkan rasa untuk apa yang berlaku dengan setiap topik-topik. 354 00:23:44,000 --> 00:23:49,000 Saya akan mengatakan tambahan ini satu tahun sumber sejuk kita telah mendapat 355 00:23:49,000 --> 00:23:55,000 ini adalah seluar yang kita telah mencipta, dan jika anda melihat pada 0 Minggu, 356 00:23:55,000 --> 00:24:00,000 kita tidak mempunyai semua topik yang dilindungi, tetapi kita telah mendapat agak beberapa daripada mereka, 357 00:24:00,000 --> 00:24:03,000 beberapa yang lebih sukar, jadi menonton seluar pendek ini lagi 358 00:24:03,000 --> 00:24:08,000 adalah cara yang baik untuk mendapatkan anda sehingga kelajuan. 359 00:24:08,000 --> 00:24:15,000 Secara khususnya, saya akan dimasukkan ke dalam palam bagi 3 di bawah, kerana saya lakukan mereka. 360 00:24:15,000 --> 00:24:20,000 Tetapi jika anda sedang bergelut dengan binari, bit, hex, yang jenis barangan, 361 00:24:20,000 --> 00:24:22,000 binari adalah tempat yang hebat untuk bermula. 362 00:24:22,000 --> 00:24:25,000 ASCII adalah salah satu yang baik untuk melihat juga. 363 00:24:25,000 --> 00:24:31,000 Anda juga boleh menonton saya pada kelajuan 1.5x jika saya akan terlalu lambat untuk anda. 364 00:24:31,000 --> 00:24:35,000 Sejak kajian itu, berasa bebas untuk berbuat demikian. 365 00:24:35,000 --> 00:24:40,000 >> Hanya untuk memulakan benar-benar cepat, kita akan pergi melalui beberapa masalah-masalah ini kuiz 366 00:24:40,000 --> 00:24:44,000 hanya untuk cepat melahirkan melalui. 367 00:24:44,000 --> 00:24:50,000 Sebagai contoh, mari kita lihat pada 16 masalah bahawa saya telah mendapat hak di sini di papan. 368 00:24:50,000 --> 00:24:54,000 Kami telah mendapat pengiraan berikut dalam binari, 369 00:24:54,000 --> 00:24:56,000 dan kita mahu untuk menunjukkan apa-apa kerja. 370 00:24:56,000 --> 00:24:59,000 Okay, saya akan memberikan pukulan. 371 00:24:59,000 --> 00:25:01,000 Kalian harus mengikuti bersama-sama dengan kertas, 372 00:25:01,000 --> 00:25:04,000 dan kami akan melakukan ini benar-benar cepat. 373 00:25:04,000 --> 00:25:06,000 Kita mahu untuk melaksanakan pengiraan berikut dalam perduaan. 374 00:25:06,000 --> 00:25:16,000 Saya telah mendapat 00110010. 375 00:25:16,000 --> 00:25:27,000 Dan saya akan menambah ia 00110010. 376 00:25:27,000 --> 00:25:30,000 Untuk matematik genius mengikuti bersama-sama di rumah, 377 00:25:30,000 --> 00:25:35,000 ini berkesan mendarabkan dengan 2. 378 00:25:35,000 --> 00:25:37,000 Mari kita mulakan. 379 00:25:37,000 --> 00:25:39,000 Kami akan mengikuti algoritma penambahan yang sama yang kita lakukan 380 00:25:39,000 --> 00:25:43,000 apabila kita menambah nombor perpuluhan bersama-sama. 381 00:25:43,000 --> 00:25:46,000 Betul-satunya perbezaan di sini adalah bahawa kita gelung kembali sekitar 382 00:25:46,000 --> 00:25:51,000 apabila kita mempunyai 1 + 1 bukan sekali kita sampai ke 10. 383 00:25:51,000 --> 00:25:53,000 >> Jika kita bermula dari kanan, benar-benar cepat, apa angka pertama? 384 00:25:53,000 --> 00:25:55,000 [Pelajar] 0. >> [Nate H.] 0. 385 00:25:55,000 --> 00:25:58,000 Besar, angka kedua? 386 00:25:58,000 --> 00:26:00,000 [Pelajar] 1. 387 00:26:00,000 --> 00:26:02,000 [Nate H.] Adakah ia 1? 1 + 1? 388 00:26:02,000 --> 00:26:04,000 [Pelajar] 10. 389 00:26:04,000 --> 00:26:08,000 [Nate H.] Tepat sekali, jadi apakah angka bahawa saya menulis betul-betul di bawah 2 yang ditambah bersama-sama? 390 00:26:08,000 --> 00:26:11,000 [Pelajar] 1, 0, atau 0 dan kemudian membawa 1. 391 00:26:11,000 --> 00:26:15,000 [Nate H.] 0 dan bawa 1, sebenarnya. 392 00:26:15,000 --> 00:26:18,000 Satu depan sehingga, Basil, anda. 393 00:26:18,000 --> 00:26:20,000 Apa yang ketiga? >> [Basil] 1. 394 00:26:20,000 --> 00:26:23,000 [Nate H.] 1, sempurna. Kevin? 395 00:26:23,000 --> 00:26:27,000 [Kevin] 0. >> [Nate H.] 0, Charlotte? 396 00:26:27,000 --> 00:26:30,000 [Charlotte] 0. >> [Nate H.] Yeah, dan apa yang saya lakukan? 397 00:26:30,000 --> 00:26:32,000 [Pelajar] 1. 398 00:26:32,000 --> 00:26:34,000 [Nate H.] Dan apa yang saya lakukan? Dan kemudian saya bawa 1. 399 00:26:34,000 --> 00:26:36,000 Sempurna, Sahb? >> [Sahb] Sekarang anda mempunyai 1. 400 00:26:36,000 --> 00:26:40,000 [Nate H.] Dan saya lakukan apa-apa di sini? 401 00:26:40,000 --> 00:26:43,000 [Sahb] Kemudian untuk satu seterusnya anda mempunyai 1 kerana anda membawa lebih daripada 1. 402 00:26:43,000 --> 00:26:49,000 [Nate H.] Besar, jadi di sini kita boleh menyelesaikan ia. 403 00:26:49,000 --> 00:26:51,000 Sejuk. 404 00:26:51,000 --> 00:26:54,000 [Pelajar] Adakah 0 + 0 = 0? 405 00:26:54,000 --> 00:26:56,000 0 + 0 = 0. 406 00:26:56,000 --> 00:27:01,000 1 + 1, seperti yang anda kata, 10, atau 1, 0, sebaliknya. 407 00:27:01,000 --> 00:27:07,000 10 adalah tepat kerana saya 10 bermakna nombor 10, 408 00:27:07,000 --> 00:27:12,000 dan ia adalah quirk bagaimana kita mewakili apabila kita menulis. 409 00:27:12,000 --> 00:27:20,000 Kami mewakili nombor 2 1, 0, dan nombor 10 adalah sedikit berbeza. 410 00:27:20,000 --> 00:27:23,000 >> Apakah jenis baik tentang binari adalah bahawa ada benar-benar tidak bahawa banyak 411 00:27:23,000 --> 00:27:25,000 kes anda perlu belajar. 412 00:27:25,000 --> 00:27:30,000 Ada 0 + 0 = 0, 0 + 1 = 1, 413 00:27:30,000 --> 00:27:34,000 1 + 1 adalah 0, dan kemudian bawa 1, 414 00:27:34,000 --> 00:27:37,000 dan kemudian anda boleh lihat di sini pada ruang ketiga dari kanan 415 00:27:37,000 --> 00:27:40,000 kita terpaksa 1, 1, dan 1. 416 00:27:40,000 --> 00:27:43,000 Dan 1 + 1 + 1 adalah 1, 417 00:27:43,000 --> 00:27:45,000 dan anda membawa lagi 1. 418 00:27:45,000 --> 00:27:48,000 Apabila anda melakukan samping binari, agak mudah. 419 00:27:48,000 --> 00:27:51,000 Saya melakukan lebih beberapa ini kepada kewarasan memeriksa dirimu 420 00:27:51,000 --> 00:27:54,000 sebelum anda pergi kerana ini adalah 421 00:27:54,000 --> 00:28:00,000 mungkin sesuatu yang kita akan melihat pada kuiz. 422 00:28:00,000 --> 00:28:03,000 Sekarang mari kita buat satu ini datang juga. 423 00:28:03,000 --> 00:28:06,000 Mari kita buat masalah 17. 424 00:28:06,000 --> 00:28:12,000 Kami akan menukar nombor binari berikut kepada nombor perpuluhan. 425 00:28:12,000 --> 00:28:28,000 Saya telah mendapat 10100111001. 426 00:28:28,000 --> 00:28:33,000 Ingat dalam video binari yang saya lakukan 427 00:28:33,000 --> 00:28:36,000 Saya berjalan melalui beberapa contoh, dan saya menunjukkan bagaimana 428 00:28:36,000 --> 00:28:41,000 semua kerja-kerja apabila anda melakukannya dalam perpuluhan. 429 00:28:41,000 --> 00:28:45,000 Apabila anda bekerja dalam perwakilan perpuluhan Saya fikir kita 430 00:28:45,000 --> 00:28:48,000 pada ketika ini dalam kehidupan kita supaya fasih di dalamnya bahawa 431 00:28:48,000 --> 00:28:53,000 ia adalah agak mudah untuk menyembunyikan mekanik bagaimana ia sebenarnya berfungsi. 432 00:28:53,000 --> 00:28:59,000 >> Tetapi untuk melakukan recap cepat, jika saya mempunyai nombor 137 433 00:28:59,000 --> 00:29:06,000 ini benar-benar bermakna dan lagi, ini adalah dalam perpuluhan perwakilan- 434 00:29:06,000 --> 00:29:19,000 nombor 137 dalam perpuluhan bermakna bahawa saya mempunyai 1 x 100 + 3 x 10 + 7 x 1. 435 00:29:19,000 --> 00:29:22,000 Ini adalah semua tinggal di skrin. 436 00:29:22,000 --> 00:29:29,000 Dan kemudian jika anda melihat nombor-nombor di sini, 437 00:29:29,000 --> 00:29:34,000 100, 10 dan 1, anda lihat bahawa mereka sebenarnya semua kuasa 10. 438 00:29:34,000 --> 00:29:43,000 Saya mempunyai 10 ², 10 ¹, dan 10 hingga sifar. 439 00:29:43,000 --> 00:29:48,000 Kami mempunyai jenis yang sama perkara dalam binari, 440 00:29:48,000 --> 00:29:55,000 kecuali bahawa asas kami, seperti yang kita panggil ia, adalah 2 bukannya 10. 441 00:29:55,000 --> 00:29:58,000 Ini 10s bahawa saya menulis di sini di bawah, 442 00:29:58,000 --> 00:30:02,000 ini ² 10, 10 ¹, 10 hingga sifar, 10 adalah asas kami, 443 00:30:02,000 --> 00:30:08,000 dan eksponen, 0, 1, atau 2, 444 00:30:08,000 --> 00:30:14,000 tersirat oleh kedudukan angka dalam bilangan yang kita menulis. 445 00:30:14,000 --> 00:30:21,000 1, jika kita melihat ia, ini 1 dalam kedudukan ke-2. 446 00:30:21,000 --> 00:30:27,000 3, adalah dalam kedudukan 1, dan 7 adalah dalam kedudukan 0. 447 00:30:27,000 --> 00:30:35,000 Itulah bagaimana kita mendapat pelbagai atlet bawah untuk asas kami. 448 00:30:35,000 --> 00:30:40,000 >> Berikutan semua ini we'll-sebenarnya, anda tahu apa? 449 00:30:40,000 --> 00:30:43,000 Kami akan lakukan-mana butang batal saya pergi? 450 00:30:43,000 --> 00:30:45,000 Terdapat ia pergi. 451 00:30:45,000 --> 00:30:47,000 Saya suka ini perkara batal. 452 00:30:47,000 --> 00:30:51,000 Berikutan ini, saya berfikir bagi saya sekurang-kurangnya 453 00:30:51,000 --> 00:30:54,000 cara paling mudah untuk mula menukar nombor binari 454 00:30:54,000 --> 00:30:57,000 atau nombor perenambelasan mana asas adalah 16 455 00:30:57,000 --> 00:31:02,000 dan bukan 10 atau 2 adalah untuk pergi ke hadapan dan menulis 456 00:31:02,000 --> 00:31:09,000 asas dan eksponen untuk semua nombor dalam nombor perduaan saya di atas. 457 00:31:09,000 --> 00:31:14,000 Jika kita bermula dari kiri ke kanan lagi, 458 00:31:14,000 --> 00:31:17,000 yang jenis bertentang, 459 00:31:17,000 --> 00:31:23,000 Saya akan menukar kembali kepada hitam di sini, kami mempunyai 2 ke kedudukan 0, 460 00:31:23,000 --> 00:31:27,000 dan kemudian kita mempunyai 2 ¹, 2 ², 461 00:31:27,000 --> 00:31:33,000 dan kemudian 2 hingga 3, 2 hingga 4, 2 5, 6, 462 00:31:33,000 --> 00:31:39,000 7, 8, 9, dan 10. 463 00:31:39,000 --> 00:31:41,000 Nombor-nombor yang saya telah ditulis keluar semua atlet. 464 00:31:41,000 --> 00:31:48,000 Saya hanya menulis asas di sini dalam 3 tahun pertama hanya untuk ruang. 465 00:31:48,000 --> 00:31:50,000 >> Pada ketika ini, saya akan pergi ke hadapan dan saya sebenarnya akan memadam 466 00:31:50,000 --> 00:31:53,000 barangan yang kita lakukan dalam perpuluhan, jika itu okay. 467 00:31:53,000 --> 00:31:57,000 Anda semua telah mendapat. 468 00:31:57,000 --> 00:32:05,000 Mereka anda menonton talian saya pasti akan dapat memundurkan saya jika anda ingin. 469 00:32:05,000 --> 00:32:07,000 Menghidupkan kembali ke kandang. 470 00:32:07,000 --> 00:32:12,000 Kini, apa yang kita boleh lakukan jika anda lelaki tidak benar-benar sehingga kelajuan pada kuasa anda 2, 471 00:32:12,000 --> 00:32:15,000 yang benar-benar sejuk. 472 00:32:15,000 --> 00:32:18,000 Ia berlaku. Saya faham. 473 00:32:18,000 --> 00:32:23,000 Saya pernah wawancara pekerjaan di mana saya diberitahu saya perlu tahu semua kuasa 2 474 00:32:23,000 --> 00:32:26,000 melalui 2 hingga 30hb. 475 00:32:26,000 --> 00:32:29,000 Ia bukan kerja saya. 476 00:32:29,000 --> 00:32:32,000 Bagaimanapun, anda semua boleh pergi ke hadapan dan melakukan matematik di sini, 477 00:32:32,000 --> 00:32:35,000 tetapi dengan binari ia tidak benar-benar masuk akal, 478 00:32:35,000 --> 00:32:38,000 dan juga ia masuk akal dengan perpuluhan atau perenambelasan sama ada, 479 00:32:38,000 --> 00:32:43,000 untuk melakukan matematik di mana anda mempunyai sifar. 480 00:32:43,000 --> 00:32:49,000 Anda boleh melihat saya mempunyai 0 di sini, 0 di sini, 0 di sini, 0 di sini, 0 di sini, 0 di sini. 481 00:32:49,000 --> 00:32:52,000 Mengapa ia mungkin tidak masuk akal untuk melakukan matematik sebenar 482 00:32:52,000 --> 00:32:56,000 untuk mengira kuasa yang sesuai 2 untuk jawatan itu? 483 00:32:56,000 --> 00:32:59,000 Tepat sekali, seperti Charlotte berkata, ia akan menjadi 0. 484 00:32:59,000 --> 00:33:05,000 Juga mungkin menyelamatkan diri masa jika mengira kuasa 2 tidak adalah saman kuat anda. 485 00:33:05,000 --> 00:33:10,000 Dalam kes ini, kita hanya perlu untuk mengira ia untuk 2 0 yang adalah? 486 00:33:10,000 --> 00:33:12,000 [Pelajar] 1. 487 00:33:12,000 --> 00:33:14,000 [Nate H.] 1, 2 3, yang adalah? 488 00:33:14,000 --> 00:33:16,000 [Pelajar] 8. >> [Nate H.] 8. 489 00:33:16,000 --> 00:33:18,000 2 ke 4? 490 00:33:18,000 --> 00:33:21,000 [Pelajar] 2. Saya minta maaf, 1. 491 00:33:21,000 --> 00:33:26,000 [Nate H.] 2 kepada 4, 16, sebenarnya. 492 00:33:26,000 --> 00:33:28,000 2 kepada 5, Kevin? >> 32. 493 00:33:28,000 --> 00:33:32,000 [Nate H.] 32, 2 kepada 8? 494 00:33:32,000 --> 00:33:38,000 [Pelajar] 32 x 8, 256. 495 00:33:38,000 --> 00:33:41,000 [Nate H.] Perfect. 496 00:33:41,000 --> 00:33:43,000 Dan 2 ke 10? 497 00:33:43,000 --> 00:33:45,000 [Pelajar] 1024. 498 00:33:45,000 --> 00:33:49,000 [Nate H.] Yeah, 1024. 499 00:33:49,000 --> 00:33:57,000 >> Apabila kita telah mendapat nombor-nombor ini kita boleh jumlah mereka semua. 500 00:33:57,000 --> 00:34:01,000 Dan ini adalah di mana ia adalah benar-benar penting untuk melakukan beberapa perkara. 501 00:34:01,000 --> 00:34:07,000 Satu pergi perlahan dan menyemak kerja anda. 502 00:34:07,000 --> 00:34:10,000 Anda boleh memberitahu bahawa terdapat adalah 1 pada akhir nombor ini, 503 00:34:10,000 --> 00:34:15,000 jadi saya pasti perlu mendapatkan nombor ganjil akibat saya, 504 00:34:15,000 --> 00:34:18,000 kerana semua orang-orang lain akan menjadi nombor genap 505 00:34:18,000 --> 00:34:21,000 memandangkan bahawa ia adalah nombor perduaan. 506 00:34:21,000 --> 00:34:24,000 Perkara lain untuk dilakukan adalah jika anda sampai ke tahap ini pada ujian 507 00:34:24,000 --> 00:34:27,000 dan anda telah ditulis ia keluar sejauh ini 508 00:34:27,000 --> 00:34:30,000 dan anda kehabisan masa 509 00:34:30,000 --> 00:34:33,000 melihat bilangan mata bahawa masalah ini adalah bernilai. 510 00:34:33,000 --> 00:34:40,000 Masalah ini, seperti yang anda lihat jika saya menyelak kembali ke komputer riba saya benar-benar cepat- 511 00:34:40,000 --> 00:34:44,000 masalah ini adalah bernilai 2 mata, jadi ini bukanlah jenis tambahan 512 00:34:44,000 --> 00:34:47,000 anda perlu pergi melalui jika anda benar-benar tertekan dengan masa. 513 00:34:47,000 --> 00:34:52,000 Tetapi kita akan menukar kembali untuk iPad, dan kita akan pergi melalui ia benar-benar cepat. 514 00:34:52,000 --> 00:34:54,000 >> Saya suka melakukan nombor kecil pertama 515 00:34:54,000 --> 00:34:56,000 kerana saya mendapati bahawa lebih mudah. 516 00:34:56,000 --> 00:35:00,000 Saya suka 32 dan 8 kerana mereka pergi bersama-sama dengan agak mudah, dan kita mendapat 50. 517 00:35:00,000 --> 00:35:03,000 16 dan 1 mendapat 17. 518 00:35:03,000 --> 00:35:05,000 Terdapat kita akan mendapat 57, 519 00:35:05,000 --> 00:35:14,000 dan kemudian kita boleh melakukan rehat ini, jadi kita boleh lakukan 57, 156. 520 00:35:14,000 --> 00:35:16,000 Datang pada. 521 00:35:16,000 --> 00:35:19,000 Man, baik, mari kita lihat. 522 00:35:19,000 --> 00:35:27,000 Kami mempunyai 57, 256, dan 1024. 523 00:35:27,000 --> 00:35:31,000 Pada ketika ini, saya agak hanya pergi melalui. 524 00:35:31,000 --> 00:35:35,000 Saya tidak mempunyai petunjuk. Saya jelas perlu membaca sehingga mengenai perkara ini. 525 00:35:35,000 --> 00:35:40,000 7, 6, dan 4, anda akan mendapat 17. 526 00:35:40,000 --> 00:35:42,000 1, 5, 5, 2, 13. 527 00:35:42,000 --> 00:35:45,000 Maka kita akan mendapat 3, dan kemudian kita dapatkan 1. 528 00:35:45,000 --> 00:35:52,000 1337. 529 00:35:52,000 --> 00:35:55,000 Easter telur, sesiapa? 530 00:35:55,000 --> 00:35:59,000 Sesiapa yang mengenali nombor ini? 531 00:35:59,000 --> 00:36:02,000 Chris mengiktiraf nombor. Apakah maknanya, Chris? 532 00:36:02,000 --> 00:36:04,000 [Chris] Leet. 533 00:36:04,000 --> 00:36:11,000 Leet, jadi jika anda melihat ini, ia kelihatan seperti leet. 534 00:36:11,000 --> 00:36:15,000 Barangan Hacker. Watch out for jenis barangan pada separuh penggal atau kuiz, sebaliknya bahawa. 535 00:36:15,000 --> 00:36:19,000 Jika anda melihat bahawa jenis barangan dan anda tertanya-tanya "Huh," 536 00:36:19,000 --> 00:36:22,000 yang sebenarnya mungkin bermakna sesuatu. 537 00:36:22,000 --> 00:36:24,000 Saya tidak tahu. David suka meletakkan ia masuk 538 00:36:24,000 --> 00:36:26,000 Ia adalah satu cara yang baik untuk kewarasan check it. 539 00:36:26,000 --> 00:36:30,000 Seperti okay, saya boleh melihat apa yang berlaku. 540 00:36:30,000 --> 00:36:34,000 >> Itulah Minggu 0/Week 1 barangan. 541 00:36:34,000 --> 00:36:39,000 Jika kita menghidupkan kembali untuk komputer riba kita sekarang, 542 00:36:39,000 --> 00:36:46,000 mengezum keluar, dan beberapa perkara lain. 543 00:36:46,000 --> 00:36:50,000 Ada ASCII, yang kita telah melakukan banyak dengan set masalah. 544 00:36:50,000 --> 00:36:55,000 Ini tanggapan modal A. Apa yang benar-benar? 545 00:36:55,000 --> 00:36:57,000 Mengetahui ia integer perpuluhan. 546 00:36:57,000 --> 00:37:00,000 65 adalah apa yang ia dipetakan ke dalam jadual ASCII, 547 00:37:00,000 --> 00:37:03,000 dan itulah maka bagaimana komputer menulis, 548 00:37:03,000 --> 00:37:06,000 dan itulah bagaimana kita telah mendapat diri dengan sebenarnya bertulis 549 00:37:06,000 --> 00:37:09,000 modal aksara A dan watak huruf kecil 550 00:37:09,000 --> 00:37:14,000 dalam beberapa penyelesaian dan set masalah yang anda telah lakukan. 551 00:37:14,000 --> 00:37:16,000 Beberapa perkara-perkara lain. 552 00:37:16,000 --> 00:37:25,000 Kami telah mendapat kenyataan, ungkapan boolean, syarat, gelung, pembolehubah dan benang. 553 00:37:25,000 --> 00:37:29,000 >> Mereka semua seolah-olah masuk akal untuk sebahagian besar? 554 00:37:29,000 --> 00:37:35,000 Beberapa istilah ini adalah funky sedikit pada masa-masa. 555 00:37:35,000 --> 00:37:46,000 Saya suka berfikir satu kenyataan sebagai sesuatu yang paling bahagian yang berakhir dengan semicolon. 556 00:37:46,000 --> 00:37:51,000 Penyata seperti x = 7, yang menetapkan pembolehubah, 557 00:37:51,000 --> 00:37:54,000 mungkin dipanggil x = 7. 558 00:37:54,000 --> 00:38:01,000 Mungkin x adalah juga jenis yang boleh menyimpan nombor 7, 559 00:38:01,000 --> 00:38:05,000 jadi ia adalah satu int atau mungkin apungan atau pendek atau char, 560 00:38:05,000 --> 00:38:07,000 sesuatu seperti itu. 561 00:38:07,000 --> 00:38:12,000 Satu ungkapan boolean menggunakan double-sama 562 00:38:12,000 --> 00:38:17,000 dan bang yang sama atau tidak sama, kurang daripada, lebih besar daripada, 563 00:38:17,000 --> 00:38:22,000 kurang daripada atau sama, semua jenis yang barangan. 564 00:38:22,000 --> 00:38:28,000 Syarat kemudian adalah kenyataan jika lain. 565 00:38:28,000 --> 00:38:32,000 Saya akan ingat bahawa anda tidak boleh mempunyai seorang lain tanpa sepadan jika. 566 00:38:32,000 --> 00:38:37,000 Begitu juga, anda tidak boleh mempunyai seorang lain jika tanpa sepadan jika. 567 00:38:37,000 --> 00:38:40,000 Gelung, ingat 3 jenis gelung kita telah mengetuk kepada anda 568 00:38:40,000 --> 00:38:43,000 untuk pasangan terakhir seksyen dan set masalah. 569 00:38:43,000 --> 00:38:46,000 Menggunakan buat sementara apabila anda mendapat input pengguna, 570 00:38:46,000 --> 00:38:51,000 menggunakan manakala gelung sehingga keadaan tertentu adalah benar, 571 00:38:51,000 --> 00:38:56,000 dan kemudian menggunakan mereka untuk gelung jika anda perlu 572 00:38:56,000 --> 00:39:01,000 tahu yang lelaran gelung anda kini adalah bagaimana saya berfikir tentang hal itu. 573 00:39:01,000 --> 00:39:07,000 Atau jika anda melakukan untuk setiap aksara dalam rentetan saya mahu melakukan sesuatu, 574 00:39:07,000 --> 00:39:15,000 bagi setiap elemen dalam array Saya mahu melakukan sesuatu untuk elemen yang. 575 00:39:15,000 --> 00:39:18,000 >> Benang dan acara. 576 00:39:18,000 --> 00:39:21,000 Ini kita telah tidak dilindungi begitu jelas dalam C, 577 00:39:21,000 --> 00:39:23,000 tetapi ingat ini dari scratch. 578 00:39:23,000 --> 00:39:26,000 Ini adalah tanggapan mempunyai skrip yang berbeza. 579 00:39:26,000 --> 00:39:32,000 Ini adalah juga tanggapan ini penyiaran acara. 580 00:39:32,000 --> 00:39:37,000 Sesetengah orang tidak menggunakan penyiaran dalam projek-projek mereka pada mulanya, 581 00:39:37,000 --> 00:39:40,000 yang benar-benar sejuk, 582 00:39:40,000 --> 00:39:46,000 tetapi ini adalah 2 cara yang berbeza mengendalikan isu ini yang lebih besar dipanggil keserentakan, 583 00:39:46,000 --> 00:39:49,000 yang adalah bagaimana anda mendapatkan program-program untuk melaksanakan 584 00:39:49,000 --> 00:39:54,000 atau seolah-olah melaksanakan pada masa yang sama? 585 00:39:54,000 --> 00:39:59,000 Tugas yang berbeza berjalan manakala tugas-tugas lain juga berjalan. 586 00:39:59,000 --> 00:40:01,000 Ini adalah bagaimana sistem operasi anda seolah-olah bekerja. 587 00:40:01,000 --> 00:40:04,000 Ini adalah mengapa walaupun, sebagai contoh, 588 00:40:04,000 --> 00:40:10,000 Saya telah mendapat pelayar saya berjalan, saya juga boleh bertukar pada Spotify dan memainkan lagu. 589 00:40:10,000 --> 00:40:14,000 Itulah lebih benda konsep untuk memahami. 590 00:40:14,000 --> 00:40:17,000 Saya akan mengambil melihat pada benang pendek 591 00:40:17,000 --> 00:40:21,000 jika anda ingin mengetahui lebih lanjut mengenai itu. 592 00:40:21,000 --> 00:40:26,000 >> Mari kita lihat, saya percaya terdapat mungkin telah 593 00:40:26,000 --> 00:40:31,000 masalah mengenai perkara ini dalam salah satu daripada ini. 594 00:40:31,000 --> 00:40:35,000 Sekali lagi, saya fikir benang dan peristiwa tidak adalah sesuatu yang kita akan meliputi dalam C 595 00:40:35,000 --> 00:40:41,000 hanya kerana ia adalah ketara lebih sukar daripada di Scratch. 596 00:40:41,000 --> 00:40:44,000 Anda tidak perlu bimbang tentang hal itu di sana, tetapi pasti memahami konsep, 597 00:40:44,000 --> 00:40:47,000 memahami apa yang berlaku. 598 00:40:47,000 --> 00:40:52,000 Sebelum kita bergerak ke atas, mana-mana soalan di Minggu 0 bahan? 599 00:40:52,000 --> 00:40:55,000 Semua orang berasa cukup baik? 600 00:40:55,000 --> 00:41:03,000 Memahami pembolehubah dan apa pembolehubah? 601 00:41:03,000 --> 00:41:08,000 >> Melangkah. Minggu 1. 602 00:41:08,000 --> 00:41:12,000 Beberapa perkara di sini yang tidak terutamanya dilindungi 603 00:41:12,000 --> 00:41:21,000 dalam kajian kuiz semestinya dan juga lebih konsep perkara untuk berfikir tentang. 604 00:41:21,000 --> 00:41:30,000 Yang pertama adalah tanggapan ini apa kod sumber, penyusun dan kod objek. 605 00:41:30,000 --> 00:41:32,000 Sesiapa? Basil. 606 00:41:32,000 --> 00:41:37,000 Adakah kod objek yang saya maksudkan kod sumber adalah apa yang anda masukkan ke dalam dilafaz, 607 00:41:37,000 --> 00:41:42,000 dan kod objek adalah apa dilafaz meletakkan keluar supaya komputer anda boleh membaca program. 608 00:41:42,000 --> 00:41:44,000 Tepat sekali. 609 00:41:44,000 --> 00:41:47,000 Kod sumber kod C yang anda sebenarnya menaip sehingga. 610 00:41:47,000 --> 00:41:50,000 Kod objek adalah apa yang anda dapatkan daripada dilafaz. 611 00:41:50,000 --> 00:41:54,000 Ia adalah 0 dan 1s dalam format binari yang. 612 00:41:54,000 --> 00:41:59,000 Kemudian apa yang berlaku ialah apabila anda mempunyai sekumpulan fail objek, 613 00:41:59,000 --> 00:42:04,000 mengatakan anda sedang menyusun projek atau program yang menggunakan fail kod sumber yang pelbagai, 614 00:42:04,000 --> 00:42:09,000 yang oleh konvensyen diberi lanjutan fail c. 615 00:42:09,000 --> 00:42:13,000 Itulah sebabnya kita mempunyai caesar.c, vigenère.c. 616 00:42:13,000 --> 00:42:18,000 Jika anda menulis program Jawa anda memberikan mereka lanjutan. Java. 617 00:42:18,000 --> 00:42:24,000 Program Python mempunyai lanjutan. Py sering. 618 00:42:24,000 --> 00:42:26,000 >> Sebaik sahaja anda mempunyai fail berbilang c, anda menyusun mereka. 619 00:42:26,000 --> 00:42:29,000 Dilafaz memuntahkannya keluar semua ini ringan binari. 620 00:42:29,000 --> 00:42:33,000 Kemudian kerana anda hanya mahu 1 program 621 00:42:33,000 --> 00:42:37,000 anda mempunyai pautan pemaut semua objek ini memfailkan bersama-sama 622 00:42:37,000 --> 00:42:40,000 ke dalam 1 fail boleh laku. 623 00:42:40,000 --> 00:42:45,000 Ini juga apa yang berlaku apabila anda menggunakan perpustakaan CS50, sebagai contoh. 624 00:42:45,000 --> 00:42:50,000 Perpustakaan CS50 adalah kedua-dua yang h file kepala 625 00:42:50,000 --> 00:42:53,000 bahawa anda membaca, yang # includecs50.h. 626 00:42:53,000 --> 00:42:58,000 Dan kemudian ia juga perpustakaan fail binari khas 627 00:42:58,000 --> 00:43:02,000 yang telah disusun yang 0 dan 1s, 628 00:43:02,000 --> 00:43:08,000 dan bahawa-l bendera, jadi jika kita pergi kembali ke kawasan kami dan kita melihat benar-benar cepat 629 00:43:08,000 --> 00:43:11,000 pada apa yang berlaku di sini apabila kita melihat pada command dilafaz kami, 630 00:43:11,000 --> 00:43:15,000 apa yang kita telah mendapat ini adalah fail kod sumber kami di sini. 631 00:43:15,000 --> 00:43:18,000 Ini adalah sekumpulan bendera pengkompil. 632 00:43:18,000 --> 00:43:22,000 Dan kemudian pada akhir sangat, ini-l bendera pautan dalam 633 00:43:22,000 --> 00:43:30,000 perduaan fail sebenar untuk ini 2 perpustakaan, perpustakaan CS50 dan kemudian perpustakaan matematik. 634 00:43:30,000 --> 00:43:35,000 >> Memahami setiap jenis tujuan fail ' 635 00:43:35,000 --> 00:43:38,000 dalam proses penyusunan adalah sesuatu yang anda akan mahu untuk dapat 636 00:43:38,000 --> 00:43:43,000 memberikan sekurang-kurangnya gambaran tahap yang tinggi. 637 00:43:43,000 --> 00:43:46,000 Kod sumber datang masuk kod Objek keluar. 638 00:43:46,000 --> 00:43:53,000 Fail kod objek menghubungkan bersama-sama, dan anda mendapat yang indah, fail boleh laku. 639 00:43:53,000 --> 00:43:55,000 Sejuk. 640 00:43:55,000 --> 00:43:58,000 Inilah juga di mana anda boleh mendapatkan kesilapan di mata berganda 641 00:43:58,000 --> 00:44:00,000 dalam proses penyusunan. 642 00:44:00,000 --> 00:44:04,000 Ini adalah di mana, sebagai contoh, jika anda mengambil keluar ini bendera menghubungkan, 643 00:44:04,000 --> 00:44:10,000 bendera CS50, dan anda meninggalkan ia di Ruang atau apabila anda menjalankan kod anda, 644 00:44:10,000 --> 00:44:13,000 ini adalah di mana anda akan mendapat kesilapan dalam fasa yang menghubungkan, 645 00:44:13,000 --> 00:44:18,000 dan pemaut akan berkata, "Hei, anda dipanggil GetString fungsi 646 00:44:18,000 --> 00:44:20,000 yang dalam perpustakaan CS50. " 647 00:44:20,000 --> 00:44:25,000 "Anda memberitahu saya ia adalah di perpustakaan CS50, dan saya tidak dapat mencari kod untuk itu." 648 00:44:25,000 --> 00:44:28,000 Itulah di mana anda perlu untuk menghubungkan, dan itulah yang berasingan 649 00:44:28,000 --> 00:44:33,000 dari kesilapan pengkompil kerana pengkompil melihat sintaks dan yang jenis barangan. 650 00:44:33,000 --> 00:44:38,000 Ia adalah baik untuk mengetahui apa yang berlaku apabila. 651 00:44:38,000 --> 00:44:42,000 >> Perkara lain yang perlu tahu tentang. 652 00:44:42,000 --> 00:44:49,000 Saya akan mengatakan anda pasti mahu mengambil melihat pada pendek atas typecasting yang dilakukan oleh Jordan 653 00:44:49,000 --> 00:44:55,000 untuk memahami apa yang ints adalah di bawah hood, 654 00:44:55,000 --> 00:44:58,000 apa yang aksara adalah di bawah hood. 655 00:44:58,000 --> 00:45:02,000 Apabila kita bercakap mengenai ASCII dan kita sebenarnya melihat jadual ASCII, 656 00:45:02,000 --> 00:45:07,000 apa yang yang melakukan memberi kita di bawah melihat hud 657 00:45:07,000 --> 00:45:13,000 bagaimana komputer sebenarnya mewakili modal A dan 7 digit 658 00:45:13,000 --> 00:45:17,000 dan koma dan tanda tanya. 659 00:45:17,000 --> 00:45:20,000 Komputer juga mempunyai cara-cara yang khas untuk mewakili 660 00:45:20,000 --> 00:45:23,000 nombor 7 sebagai integer. 661 00:45:23,000 --> 00:45:27,000 Ia mempunyai cara yang khas untuk mewakili nombor 7 sebagai nombor titik terapung, 662 00:45:27,000 --> 00:45:29,000 dan mereka adalah sangat berbeza. 663 00:45:29,000 --> 00:45:32,000 Typecasting adalah bagaimana anda memberitahu komputer "Hei, saya mahu anda untuk menukar 664 00:45:32,000 --> 00:45:37,000 dari satu perwakilan kepada perwakilan yang lain. " 665 00:45:37,000 --> 00:45:40,000 Mengapa tidak kita mengambil melihat itu. 666 00:45:40,000 --> 00:45:44,000 >> Saya juga ingin mengambil melihat ringkas mengenai perpustakaan dan pendek pada penyusun. 667 00:45:44,000 --> 00:45:47,000 Mereka yang bercakap tentang proses penyusunan, 668 00:45:47,000 --> 00:45:53,000 apa perpustakaan, dan pergi atas beberapa soalan-soalan yang anda mungkin akan diminta. 669 00:45:53,000 --> 00:45:55,000 Soalan pada bahan Minggu 1? 670 00:45:55,000 --> 00:46:03,000 Adakah terdapat mana-mana topik di sini yang kelihatan menakutkan anda ingin untuk menutup? 671 00:46:03,000 --> 00:46:07,000 Saya cuba untuk meniup melalui kebanyakan topik-topik ini lebih awal supaya kita boleh mendapatkan 672 00:46:07,000 --> 00:46:13,000 petunjuk dan melakukan sedikit rekursi. 673 00:46:13,000 --> 00:46:15,000 Pemikiran? 674 00:46:15,000 --> 00:46:19,000 Apa-apa sahaja untuk melindungi? 675 00:46:19,000 --> 00:46:21,000 Masa untuk coklat mungkin? 676 00:46:21,000 --> 00:46:23,000 Kalian bekerja melaluinya. 677 00:46:23,000 --> 00:46:26,000 Saya akan terus menghirup pada kopi saya. 678 00:46:26,000 --> 00:46:31,000 Minggu 2. 679 00:46:31,000 --> 00:46:34,000 Panggilan yang baik, panggilan yang baik. 680 00:46:34,000 --> 00:46:38,000 Minggu 2 kita bercakap sedikit lebih lanjut mengenai fungsi. 681 00:46:38,000 --> 00:46:43,000 >> Dalam masalah pertama beberapa set kita tidak benar-benar menulis apa-apa fungsi di semua 682 00:46:43,000 --> 00:46:45,000 selain daripada mana fungsi? 683 00:46:45,000 --> 00:46:47,000 [Pelajar] Main. >> Main, tepat. 684 00:46:47,000 --> 00:46:51,000 Dan jadi kami telah melihat pakaian yang berbeza yang utama memakai. 685 00:46:51,000 --> 00:46:54,000 Ada satu di mana ia tidak mengambil hujah-hujah, 686 00:46:54,000 --> 00:46:58,000 dan kita hanya mengatakan tidak sah di antara kurungan, 687 00:46:58,000 --> 00:47:01,000 dan kemudian ada satu lagi di mana kita tidak mahu mengambil hujah baris arahan, 688 00:47:01,000 --> 00:47:08,000 dan seperti yang kita lihat, yang mana anda mempunyai int argc dan tali argv pelbagai 689 00:47:08,000 --> 00:47:13,000 atau sekarang bahawa kita telah benar-benar terdedah tali untuk menjadi * char bahawa ia adalah 690 00:47:13,000 --> 00:47:20,000 kita akan mula menulis ia sebagai char * argv dan kemudian kurungan. 691 00:47:20,000 --> 00:47:22,000 Dalam Set Masalah 3, anda semua melihat sekumpulan fungsi, 692 00:47:22,000 --> 00:47:27,000 dan anda dilaksanakan sekumpulan fungsi, melukis, mencari, perebutan. 693 00:47:27,000 --> 00:47:31,000 Prototaip semua ditulis di sana untuk anda. 694 00:47:31,000 --> 00:47:33,000 >> Apa yang saya mahu bercakap tentang di sini dengan fungsi benar-benar cepat 695 00:47:33,000 --> 00:47:38,000 adalah bahawa terdapat 3 bahagian untuk mereka apabila anda menulis fungsi. 696 00:47:38,000 --> 00:47:43,000 Anda perlu menentukan jenis pulangan fungsi. 697 00:47:43,000 --> 00:47:46,000 Anda perlu nyatakan nama untuk fungsi, dan kemudian anda perlu menentukan 698 00:47:46,000 --> 00:47:51,000 senarai hujah atau senarai parameter. 699 00:47:51,000 --> 00:47:57,000 Sebagai contoh, jika saya adalah untuk menulis fungsi untuk meringkaskannya sekumpulan integer 700 00:47:57,000 --> 00:48:03,000 dan kemudian kembali kepada saya jumlah apa yang akan menjadi jenis pulangan saya 701 00:48:03,000 --> 00:48:06,000 jika saya mahu kepada jumlah integer dan kemudian kembali jumlah? 702 00:48:06,000 --> 00:48:12,000 Kemudian nama fungsi. 703 00:48:12,000 --> 00:48:27,000 Jika saya pergi ke hadapan dan menulis dalam hijau, bahagian ini adalah jenis pulangan. 704 00:48:27,000 --> 00:48:34,000 Bahagian ini ialah nama. 705 00:48:34,000 --> 00:48:40,000 Dan kemudian di antara kurungan 706 00:48:40,000 --> 00:48:46,000 adalah di mana saya memberi hujah, 707 00:48:46,000 --> 00:48:56,000 sering disingkatkan sebagai args, kadang-kadang dipanggil params bagi parameter. 708 00:48:56,000 --> 00:49:00,000 Dan jika anda mempunyai satu, anda hanya nyatakan satu. 709 00:49:00,000 --> 00:49:06,000 Jika anda mempunyai berbilang anda memisahkan setiap satu dengan koma. 710 00:49:06,000 --> 00:49:13,000 Dan bagi setiap hujah yang anda berikan 2 perkara yang Kevin? 711 00:49:13,000 --> 00:49:18,000 [Kevin] Anda perlu memberikan jenis dan kemudian nama. 712 00:49:18,000 --> 00:49:21,000 Dan kemudian nama, dan nama adalah nama yang anda hendak gunakan 713 00:49:21,000 --> 00:49:25,000 untuk merujuk kepada hujah bahawa dalam fungsi jumlah, 714 00:49:25,000 --> 00:49:27,000 dalam fungsi yang anda sedang menulis. 715 00:49:27,000 --> 00:49:32,000 >> Anda tidak perlu untuk contoh, jika saya akan meringkaskannya, 716 00:49:32,000 --> 00:49:41,000 berkata, pelbagai integer we'll melakukan pelbagai int, 717 00:49:41,000 --> 00:49:46,000 dan saya akan memberikan saya beberapa pendakap kerinting sana- 718 00:49:46,000 --> 00:49:51,000 kemudian apabila saya lulus pelbagai fungsi jumlah 719 00:49:51,000 --> 00:49:55,000 Saya lulus dalam kedudukan pertama senarai hujah. 720 00:49:55,000 --> 00:49:59,000 Tetapi pelbagai bahawa saya lulus dalam tidak perlu mempunyai arr nama. 721 00:49:59,000 --> 00:50:07,000 Tiba akan menjadi bagaimana saya merujuk kepada hujah bahawa dalam badan fungsi. 722 00:50:07,000 --> 00:50:10,000 Perkara lain yang kita perlu mengambil kira, 723 00:50:10,000 --> 00:50:14,000 dan ini adalah sedikit berbeza daripada fungsi, tetapi saya fikir ia adalah satu titik penting, 724 00:50:14,000 --> 00:50:20,000 adalah bahawa dalam C apabila saya menulis berfungsi seperti ini 725 00:50:20,000 --> 00:50:29,000 bagaimana saya tahu berapa banyak elemen dalam array ini? 726 00:50:29,000 --> 00:50:31,000 Ini adalah agak soalan helah. 727 00:50:31,000 --> 00:50:35,000 Kita bercakap tentang ini sedikit dalam seksyen minggu lepas. 728 00:50:35,000 --> 00:50:40,000 Bagaimana saya tahu bilangan unsur-unsur di dalam pelbagai dalam C? 729 00:50:40,000 --> 00:50:44,000 Adakah terdapat cara? 730 00:50:44,000 --> 00:50:49,000 >> Ia ternyata bahawa tidak ada cara untuk mengetahui. 731 00:50:49,000 --> 00:50:52,000 Anda perlu lulus secara berasingan. 732 00:50:52,000 --> 00:50:55,000 Terdapat satu helah yang boleh anda lakukan 733 00:50:55,000 --> 00:51:00,000 jika anda berada dalam fungsi yang sama di mana array telah diisytiharkan, 734 00:51:00,000 --> 00:51:04,000 dan anda bekerja dengan pelbagai timbunan. 735 00:51:04,000 --> 00:51:06,000 Tetapi itu hanya berfungsi jika anda berada dalam majlis yang sama. 736 00:51:06,000 --> 00:51:09,000 Sebaik sahaja anda lulus array ke fungsi yang lain atau jika anda telah mengisytiharkan array 737 00:51:09,000 --> 00:51:12,000 dan anda meletakkan pelbagai bahawa pada timbunan itu, anda telah digunakan malloc 738 00:51:12,000 --> 00:51:15,000  dan yang jenis barangan, maka semua pertaruhan adalah di luar. 739 00:51:15,000 --> 00:51:18,000 Kemudian anda sebenarnya perlu untuk lulus sekitar 740 00:51:18,000 --> 00:51:21,000 hujah khas atau parameter lain 741 00:51:21,000 --> 00:51:23,000 memberitahu anda berapa besar array. 742 00:51:23,000 --> 00:51:28,000 Dalam kes ini, saya mahu menggunakan koma: saya maaf, ia terkeluar skrin di sini- 743 00:51:28,000 --> 00:51:32,000 dan saya lulus dalam hujah lain 744 00:51:32,000 --> 00:51:40,000  dan memanggilnya len int untuk panjang. 745 00:51:40,000 --> 00:51:44,000 >> Satu perkara yang mungkin datang pada kuiz 746 00:51:44,000 --> 00:51:49,000 meminta anda untuk menulis atau melaksanakan sesuatu fungsi tertentu dipanggil. 747 00:51:49,000 --> 00:51:54,000 Jika kita tidak memberikan anda prototaip, jadi keseluruhan perkara ini di sini, 748 00:51:54,000 --> 00:51:58,000 ini keadaan kucar-kacir keseluruhan dipanggil akuan fungsi atau prototaip fungsi, 749 00:51:58,000 --> 00:52:01,000 ini adalah salah satu perkara pertama yang anda akan mahu untuk memakukan jika ia tidak diberi 750 00:52:01,000 --> 00:52:03,000 kepada anda segera kuiz. 751 00:52:03,000 --> 00:52:06,000 Itu helah lain yang saya telah belajar adalah bahawa 752 00:52:06,000 --> 00:52:11,000 mengatakan kita lakukan memberi anda prototaip bagi fungsi, dan kita katakan, "Hei, anda telah mendapat untuk menulis." 753 00:52:11,000 --> 00:52:16,000 Di dalam pendakap kerinting bahawa anda mempunyai kuiz 754 00:52:16,000 --> 00:52:20,000 jika anda perasan bahawa terdapat satu jenis pulangan dan anda notis bahawa jenis pulangan 755 00:52:20,000 --> 00:52:25,000 adalah sesuatu yang lain daripada tidak sah, yang bermaksud bahawa fungsi tersebut tidak akan kembali apa-apa, 756 00:52:25,000 --> 00:52:28,000 maka salah satu perkara yang anda pasti mahu lakukan adalah menulis 757 00:52:28,000 --> 00:52:33,000 beberapa jenis penyata pulangan pada akhir sangat fungsi. 758 00:52:33,000 --> 00:52:40,000 Kembali, dan dalam kes ini, kita akan meletakkan kosong kerana kita mahu untuk mengisi ruang kosong. 759 00:52:40,000 --> 00:52:44,000 Tetapi ini mendapat anda berfikir dengan cara yang betul tentang bagaimana aku hendak untuk mendekati masalah ini? 760 00:52:44,000 --> 00:52:49,000 Dan ia mengingatkan anda anda akan mempunyai untuk kembali nilai 761 00:52:49,000 --> 00:52:51,000 pemanggil fungsi. 762 00:52:51,000 --> 00:52:54,000 >> Yeah. >> [Pelajar] Adakah gaya memohon apabila kita menulis kod kuiz? 763 00:52:54,000 --> 00:52:58,000 Seperti lekukan dan yang jenis barangan? >> [Pelajar] Yeah. 764 00:52:58,000 --> 00:53:00,000 Tidak, tidak seperti banyak. 765 00:53:00,000 --> 00:53:09,000 Saya fikir banyak-ini adalah sesuatu yang kita akan menjelaskan pada kuiz pada hari, 766 00:53:09,000 --> 00:53:15,000 tetapi biasanya bimbang tentang # termasuk dan yang jenis barangan, ia adalah jenis luar. 767 00:53:15,000 --> 00:53:17,000 [Pelajar] Adakah anda perlu mengulas kod tulisan tangan anda? 768 00:53:17,000 --> 00:53:19,000 Adakah anda perlu mengulas kod tulisan tangan anda? 769 00:53:19,000 --> 00:53:24,000 Mengulas sentiasa baik jika anda bimbang tentang kredit separa 770 00:53:24,000 --> 00:53:29,000 atau anda mahu untuk berkomunikasi niat anda untuk gred. 771 00:53:29,000 --> 00:53:33,000 Tetapi saya, sekali lagi, akan menjelaskan pada kuiz sendiri dan pada hari kuiz, 772 00:53:33,000 --> 00:53:39,000 tetapi saya tidak percaya bahawa anda akan dikehendaki untuk menulis komen, tidak. 773 00:53:39,000 --> 00:53:42,000 Biasanya tidak, tetapi ia pasti jenis perkara di mana 774 00:53:42,000 --> 00:53:45,000 anda boleh berkomunikasi niat anda, seperti "Hei, ini adalah di mana saya akan dengan ia." 775 00:53:45,000 --> 00:53:49,000 Dan kadang-kadang yang boleh membantu dengan kredit separa. 776 00:53:49,000 --> 00:53:51,000 Sejuk. 777 00:53:51,000 --> 00:53:53,000 >> Basil. 778 00:53:53,000 --> 00:53:56,000 [Basil] Apakah perbezaan antara mengisytiharkan, katakan, int lang 779 00:53:56,000 --> 00:54:03,000 dalam hujah atau parameter berbanding mengisytiharkan pembolehubah dalam fungsi? 780 00:54:03,000 --> 00:54:05,000 Wow, kopi pergi ke salur udara. 781 00:54:05,000 --> 00:54:07,000 [Basil] Seperti yang perkara yang kita mahu dimasukkan ke dalam hujah. 782 00:54:07,000 --> 00:54:09,000 Ya, itulah persoalan yang besar. 783 00:54:09,000 --> 00:54:11,000 Bagaimana anda memilih apa perkara yang anda mahu dimasukkan ke dalam hujah-hujah 784 00:54:11,000 --> 00:54:17,000 berbanding apa perkara yang perlu anda lakukan dalam fungsi? 785 00:54:17,000 --> 00:54:24,000 Dalam kes ini kita termasuk kedua-dua ini sebagai hujah 786 00:54:24,000 --> 00:54:29,000 kerana mereka sesuatu bahawa sesiapa yang akan menggunakan fungsi jumlah 787 00:54:29,000 --> 00:54:32,000 perlu untuk menentukan perkara-perkara. 788 00:54:32,000 --> 00:54:35,000 >> Fungsi Kesimpulannya, seperti yang kita bercakap tentang, tidak mempunyai cara untuk mengetahui 789 00:54:35,000 --> 00:54:40,000 bagaimana besar array ia mendapat dari pemanggil atau sesiapa yang menggunakan fungsi jumlah. 790 00:54:40,000 --> 00:54:44,000 Ia tidak mempunyai cara untuk mengetahui bagaimana besar pelbagai yang. 791 00:54:44,000 --> 00:54:48,000 Sebab kita lulus panjang ini di sini sebagai hujah 792 00:54:48,000 --> 00:54:51,000 kerana itulah sesuatu yang kita pada dasarnya memberitahu pemanggil fungsi, 793 00:54:51,000 --> 00:54:55,000 sesiapa yang akan menggunakan fungsi jumlah, "Hei, bukan sahaja yang anda perlu untuk memberikan kita array 794 00:54:55,000 --> 00:54:59,000 ints, anda juga perlu memberitahu kita bagaimana besar pelbagai bahawa anda telah memberikan kita. " 795 00:54:59,000 --> 00:55:03,000 [Basil] Mereka kedua-duanya akan menjadi hujah baris arahan? 796 00:55:03,000 --> 00:55:06,000 Tidak, ini adalah hujah sebenar yang anda akan lulus untuk fungsi. 797 00:55:06,000 --> 00:55:10,000 >> Biar saya buat halaman baru di sini. 798 00:55:10,000 --> 00:55:13,000 [Basil] Seperti nama akan lulus- 799 00:55:13,000 --> 00:55:24,000 [Nate H.] Jika saya mempunyai int utama (tidak sah), 800 00:55:24,000 --> 00:55:27,000 dan saya akan meletakkan di titik 0 pulangan saya ke sini di bawah, 801 00:55:27,000 --> 00:55:31,000 dan berkata saya mahu untuk memanggil fungsi jumlah. 802 00:55:31,000 --> 00:55:42,000 Saya ingin katakan int x = jumlah (); 803 00:55:42,000 --> 00:55:46,000 Untuk menggunakan fungsi jumlah saya perlu lulus dalam kedua-dua array yang saya mahu untuk meringkaskannya 804 00:55:46,000 --> 00:55:51,000 dan panjang array, jadi ini adalah di mana 805 00:55:51,000 --> 00:55:54,000 menganggap saya mempunyai pelbagai ints, 806 00:55:54,000 --> 00:56:12,000 katakan saya mempunyai int numbaz [] = 1, 2, 3, 807 00:56:12,000 --> 00:56:16,000 jenis penggunaan yang digodam sehingga sintaks di sana, 808 00:56:16,000 --> 00:56:21,000 maka apa yang saya akan lakukan adalah dalam jumlah saya mahu lulus dalam 809 00:56:21,000 --> 00:56:27,000 kedua-dua numbaz dan Nombor 3 810 00:56:27,000 --> 00:56:30,000 untuk memberitahu fungsi jumlah "Baiklah, di sini adalah pelbagai saya mahu anda untuk meringkaskannya." 811 00:56:30,000 --> 00:56:34,000 "Berikut adalah saiznya." 812 00:56:34,000 --> 00:56:39,000 Adakah yang masuk akal? Adakah itu menjawab soalan anda? 813 00:56:39,000 --> 00:56:42,000 >> Dalam banyak cara ia tidak selari apa yang kita sedang lakukan dengan utama 814 00:56:42,000 --> 00:56:44,000 apabila kita mempunyai hujah-hujah baris arahan. 815 00:56:44,000 --> 00:56:47,000 Satu program seperti Caesar cipher, sebagai contoh, yang diperlukan 816 00:56:47,000 --> 00:56:53,000 hujah baris arahan tidak akan dapat berbuat apa-apa. 817 00:56:53,000 --> 00:56:57,000 Ia tidak akan tahu bagaimana untuk menyulitkan jika anda tidak memberitahu apa kunci untuk digunakan 818 00:56:57,000 --> 00:57:03,000 atau jika anda tidak beritahu apa rentetan anda mahu menyulitkan. 819 00:57:03,000 --> 00:57:08,000 Mendorong untuk input, ini adalah di mana kita telah mendapat 2 mekanisme yang berbeza 820 00:57:08,000 --> 00:57:14,000 untuk mengambil input dari pengguna, untuk mengambil maklumat dari pengguna. 821 00:57:14,000 --> 00:57:19,000 Untuk Set Masalah 1 kita lihat GetInt ini, GetString, cara GetFloat 822 00:57:19,000 --> 00:57:26,000 mendorong untuk input, dan yang dipanggil menggunakan aliran input standard. 823 00:57:26,000 --> 00:57:28,000 Ia adalah sedikit berbeza. 824 00:57:28,000 --> 00:57:31,000 Ia adalah sesuatu yang boleh anda lakukan pada satu-satu masa berbanding dengan 825 00:57:31,000 --> 00:57:35,000 apabila kamu sembah program, apabila anda memulakan program ini berjalan. 826 00:57:35,000 --> 00:57:41,000 Hujah baris arahan semua dinyatakan apabila anda memulakan program berjalan. 827 00:57:41,000 --> 00:57:47,000 Kami telah mencampurkan dua daripada mereka. 828 00:57:47,000 --> 00:57:52,000 Apabila kita menggunakan hujah ke fungsi, ia adalah sama seperti hujah baris arahan untuk utama. 829 00:57:52,000 --> 00:57:56,000 Ia adalah apabila anda sembah fungsi yang anda perlu untuk memberitahu 830 00:57:56,000 --> 00:58:05,000 apa sebenarnya ia perlu untuk melaksanakan tugasnya. 831 00:58:05,000 --> 00:58:08,000 Satu lagi perkara yang baik untuk melihat dan saya akan membiarkan anda melihat ia dalam masa lapang anda, 832 00:58:08,000 --> 00:58:11,000 dan ia telah diliputi dalam kuiz ini tanggapan skop 833 00:58:11,000 --> 00:58:15,000 dan pembolehubah tempatan berbanding pembolehubah global. 834 00:58:15,000 --> 00:58:18,000 Adakah memberi perhatian itu. 835 00:58:18,000 --> 00:58:23,000 >> Sekarang kita sedang mendapatkan barangan ini lain, 836 00:58:23,000 --> 00:58:27,000 dalam 3 Minggu kami mula bercakap tentang mencari dan menyusun. 837 00:58:27,000 --> 00:58:32,000 Mencari dan sorting, sekurang-kurangnya dalam CS50, 838 00:58:32,000 --> 00:58:39,000 adalah amat pengenalan kepada beberapa bahagian yang lebih teori sains komputer. 839 00:58:39,000 --> 00:58:42,000 Masalah mencari, masalah sorting 840 00:58:42,000 --> 00:58:46,000 adalah besar, masalah kanun. 841 00:58:46,000 --> 00:58:52,000 Bagaimana anda mencari beberapa tertentu dalam pelbagai berbilion integer? 842 00:58:52,000 --> 00:58:55,000 Bagaimana anda mencari nama tertentu di dalam buku telefon 843 00:58:55,000 --> 00:58:59,000 yang disimpan pada komputer riba anda? 844 00:58:59,000 --> 00:59:04,000 Dan supaya kita memperkenalkan idea ini kali jangka asimptot 845 00:59:04,000 --> 00:59:11,000 untuk benar-benar mengira berapa lama, bagaimana keras masalah ini adalah, 846 00:59:11,000 --> 00:59:14,000 berapa lama mereka ambil untuk menyelesaikan. 847 00:59:14,000 --> 00:59:20,000 Dalam, saya percaya, kuiz tahun 2011 ada masalah yang saya fikir merit 848 00:59:20,000 --> 00:59:27,000 meliputi sangat cepat, yang satu ini, masalah 12. 849 00:59:27,000 --> 00:59:32,000 O tidak, ia adalah Omega. 850 00:59:32,000 --> 00:59:41,000 >> Di sini kita bercakap tentang jangka masa terpantas mungkin 851 00:59:41,000 --> 00:59:46,000 untuk algoritma tertentu dan kemudian masa berjalan perlahan mungkin. 852 00:59:46,000 --> 00:59:52,000 Ini Omega dan O adalah benar-benar hanya jalan pintas. 853 00:59:52,000 --> 00:59:55,000 Mereka pintasan notasi untuk mengatakan 854 00:59:55,000 --> 00:59:59,000 bagaimana pantas dalam kes yang terbaik mungkin akan menjalankan algoritma kami, 855 00:59:59,000 --> 01:00:06,000 dan bagaimana perlahan dalam kes terburuk mungkin algoritma kami akan berjalan? 856 01:00:06,000 --> 01:00:10,000 Mari kita buat beberapa ini, dan ini juga dilindungi 857 01:00:10,000 --> 01:00:13,000 pendek pada notasi asimptot, yang saya sangat mengesyorkan. 858 01:00:13,000 --> 01:00:17,000 Jackson melakukan kerja yang benar-benar baik. 859 01:00:17,000 --> 01:00:23,000 Dengan carian perduaan, kita bercakap tentang carian binari sebagai algoritma, 860 01:00:23,000 --> 01:00:28,000 dan biasanya kita bercakap tentang dari segi O. besar 861 01:00:28,000 --> 01:00:30,000 Apakah O besar? 862 01:00:30,000 --> 01:00:34,000 Apakah masa jangka perlahan mungkin carian binari? 863 01:00:34,000 --> 01:00:36,000 [Pelajar] N ²? 864 01:00:36,000 --> 01:00:41,000 Tutup, saya rasa serupa dengan itu. 865 01:00:41,000 --> 01:00:43,000 Ia banyak yang lebih cepat daripada itu. 866 01:00:43,000 --> 01:00:45,000 [Pelajar] Perduaan? >> Ya, carian dedua. 867 01:00:45,000 --> 01:00:47,000 [Pelajar] Ia log n. 868 01:00:47,000 --> 01:00:49,000 Log n, jadi apa yang tidak log n bermakna? 869 01:00:49,000 --> 01:00:51,000 Ia bahagian setiap lelaran. 870 01:00:51,000 --> 01:00:56,000 Tepat sekali, jadi dalam kes yang lebih perlahan mungkin, 871 01:00:56,000 --> 01:01:00,000 mengatakan jika anda mempunyai pelbagai yang disusun 872 01:01:00,000 --> 01:01:08,000 juta integer dan nombor anda sedang mencari 873 01:01:08,000 --> 01:01:14,000 sama ada elemen yang sangat pertama dalam array atau elemen yang sangat terakhir dalam array. 874 01:01:14,000 --> 01:01:18,000 Ingat, algoritma carian binari berfungsi dengan melihat elemen tengah, 875 01:01:18,000 --> 01:01:21,000 melihat jika itulah perlawanan yang anda sedang mencari. 876 01:01:21,000 --> 01:01:23,000 Jika ia, maka besar, anda mendapati ia. 877 01:01:23,000 --> 01:01:27,000 >> Dalam kes terbaik, berapa cepat tidak jangka carian binari? 878 01:01:27,000 --> 01:01:29,000 [Pelajar] 1. 879 01:01:29,000 --> 01:01:32,000 1, ia adalah masa yang berterusan, besar Wahai 1. Yeah. 880 01:01:32,000 --> 01:01:36,000 [Pelajar] Saya mempunyai satu soalan. Apabila anda mengatakan log n, anda maksudkan dengan hormat kepada asas 2, kan? 881 01:01:36,000 --> 01:01:40,000 Ya, supaya perkara yang lain. 882 01:01:40,000 --> 01:01:44,000 Kami mengatakan n log, dan saya rasa apabila saya berada di sekolah menengah 883 01:01:44,000 --> 01:01:48,000 Saya sentiasa menganggap bahawa log asas 10. 884 01:01:48,000 --> 01:01:57,000 Yeah, jadi ya, sila layari asas 2 biasanya adalah apa yang kita gunakan. 885 01:01:57,000 --> 01:02:02,000 Sekali lagi, akan kembali ke carian binari, jika anda sedang mencari sama ada 886 01:02:02,000 --> 01:02:05,000 elemen pada akhir sangat atau elemen di awal-awal lagi, 887 01:02:05,000 --> 01:02:08,000 kerana anda bermula di tengah-tengah dan kemudian anda membuang 888 01:02:08,000 --> 01:02:13,000 mana 1/2 tidak memenuhi kriteria yang anda sedang mencari, 889 01:02:13,000 --> 01:02:15,000 dan anda pergi ke separuh seterusnya dan separuh seterusnya dan separuh seterusnya. 890 01:02:15,000 --> 01:02:19,000 Jika saya mencari elemen terbesar dalam array juta integer 891 01:02:19,000 --> 01:02:25,000 Saya akan mengurangkan separuh pada log kebanyakan 1 juta kali 892 01:02:25,000 --> 01:02:28,000 sebelum saya akhirnya menguji dan melihat bahawa unsur Saya mencari 893 01:02:28,000 --> 01:02:33,000 adalah dalam terbesar atau dalam indeks tertinggi array, 894 01:02:33,000 --> 01:02:38,000 dan yang akan mengambil log n, log 1 juta kali. 895 01:02:38,000 --> 01:02:40,000 >> Bubble apapun. 896 01:02:40,000 --> 01:02:43,000 Adakah anda semua ingat jenis algoritma gelembung? 897 01:02:43,000 --> 01:02:47,000 Kevin, anda boleh memberi saya recap cepat daripada apa yang berlaku dalam algoritma apapun gelembung? 898 01:02:47,000 --> 01:02:50,000 [Kevin] Pada asasnya, ia akan melalui segala-galanya dalam senarai. 899 01:02:50,000 --> 01:02:52,000 Ia kelihatan pada dua yang pertama. 900 01:02:52,000 --> 01:02:55,000 Jika yang pertama adalah lebih besar daripada satu kedua ia swap mereka. 901 01:02:55,000 --> 01:02:58,000 Kemudian ia membandingkan kedua dan ketiga, perkara yang sama, swap, 902 01:02:58,000 --> 01:03:00,000 ketiga dan keempat, semua jalan ke bawah. 903 01:03:00,000 --> 01:03:03,000 Besar nombor akan mengikuti sehingga akhir. 904 01:03:03,000 --> 01:03:07,000 Dan selepas gelung bagaimanapun banyak anda selesai. 905 01:03:07,000 --> 01:03:11,000 Tepat sekali, jadi apa yang Kevin berkata bahawa kami akan menonton lebih besar nombor 906 01:03:11,000 --> 01:03:15,000 gelembung sehingga akhir array. 907 01:03:15,000 --> 01:03:19,000 Sebagai contoh, adakah anda keberatan berjalan kita melalui contoh ini jika ini adalah pelbagai kami? 908 01:03:19,000 --> 01:03:21,000 [Kevin] Anda akan mengambil masa 2 dan 3. 909 01:03:21,000 --> 01:03:23,000 3 adalah lebih besar daripada 2, jadi anda menukar mereka. 910 01:03:23,000 --> 01:03:29,000 [Nate H.] Hak, jadi kami menukar ini, dan supaya kita mendapat 2, 3, 6, 4, dan 9. 911 01:03:29,000 --> 01:03:31,000 [Kevin] Kemudian anda membandingkan 3 dan 6. 912 01:03:31,000 --> 01:03:33,000 3 adalah lebih kecil daripada 6, jadi anda meninggalkan mereka, 913 01:03:33,000 --> 01:03:37,000 dan 6 dan 4, anda akan menukar mereka kerana 4 adalah lebih kecil daripada 6. 914 01:03:37,000 --> 01:03:42,000 [Nate H.] Betul, jadi saya mendapat 2, 3, 4, 6, 9. 915 01:03:42,000 --> 01:03:46,000 [Kevin] Dan 9 adalah lebih besar daripada 6, jadi anda meninggalkan ia. 916 01:03:46,000 --> 01:03:48,000 Dan anda akan kembali melalui sekali lagi. 917 01:03:48,000 --> 01:03:50,000 >> [Nate H.] Adakah saya dilakukan pada ketika ini? >> [Kevin] No 918 01:03:50,000 --> 01:03:52,000 Dan mengapa saya tidak dilakukan pada ketika ini? 919 01:03:52,000 --> 01:03:54,000 Kerana ia kelihatan seperti pelbagai saya diselesaikan. Saya melihat ia. 920 01:03:54,000 --> 01:03:57,000 [Kevin] Pergi melalui sekali lagi dan pastikan bahawa terdapat tidak lebih swap 921 01:03:57,000 --> 01:04:00,000 sebelum anda boleh berhenti sepenuhnya. 922 01:04:00,000 --> 01:04:04,000 Tepat sekali, jadi anda perlu untuk menyimpan pergi melalui dan pastikan bahawa tiada swap 923 01:04:04,000 --> 01:04:06,000 bahawa anda boleh membuat pada ketika ini. 924 01:04:06,000 --> 01:04:08,000 Ia adalah benar-benar hanya bernasib baik, seperti yang anda kata, bahawa kita akhirnya 925 01:04:08,000 --> 01:04:12,000 hanya perlu membuat 1 pas melalui dan kita sedang disusun. 926 01:04:12,000 --> 01:04:16,000 Tetapi untuk melakukan ini dalam kes umum, kita sebenarnya akan mempunyai untuk melakukan ini berulang-ulang kali. 927 01:04:16,000 --> 01:04:20,000 Dan sebenarnya, ini adalah satu contoh kes yang terbaik, 928 01:04:20,000 --> 01:04:24,000 seperti yang kita lihat dalam masalah ini. 929 01:04:24,000 --> 01:04:28,000 Kami melihat bahawa kes terbaik n. 930 01:04:28,000 --> 01:04:32,000 Kami pergi melalui masa array 1. 931 01:04:32,000 --> 01:04:35,000 Apakah kes terburuk yang mungkin bagi algoritma ini? 932 01:04:35,000 --> 01:04:37,000 [Kevin] N ². 933 01:04:37,000 --> 01:04:41,000 Dan apakah rupa yang suka? Apa yang akan melihat pelbagai seperti itu akan mengambil masa ² n? 934 01:04:41,000 --> 01:04:43,000 [Kevin] [didengar] disusun. 935 01:04:43,000 --> 01:04:51,000 Tepat sekali, jadi jika saya mempunyai array 9, 7, 6, 5, 2, 936 01:04:51,000 --> 01:04:54,000 pertama 9 akan gelembung sepanjang jalan sehingga. 937 01:04:54,000 --> 01:04:59,000 Selepas 1 lelaran kita akan mempunyai 7, 6, 5, 2, 9. 938 01:04:59,000 --> 01:05:07,000 Kemudian 7 akan gelembung up, 6, 5, 2, 7, 9, dan sebagainya dan sebagainya. 939 01:05:07,000 --> 01:05:13,000 >> Kita akan mempunyai untuk pergi melalui pelbagai keseluruhan n kali, 940 01:05:13,000 --> 01:05:16,000 dan anda sebenarnya boleh mendapatkan sedikit lebih tepat daripada ini 941 01:05:16,000 --> 01:05:23,000 kerana sekali kita telah berpindah 9 sepanjang jalan sehingga ke jawatan terakhir mungkin 942 01:05:23,000 --> 01:05:26,000 kita tahu bahawa kita tidak perlu untuk membandingkan terhadap elemen yang lagi. 943 01:05:26,000 --> 01:05:29,000 Sebaik sahaja kita mula menggelegak 7 sehingga 944 01:05:29,000 --> 01:05:35,000 kita tahu bahawa kita boleh berhenti sekali 7 adalah betul sebelum 9 945 01:05:35,000 --> 01:05:37,000 kerana kita sudah berbanding 9 kepadanya. 946 01:05:37,000 --> 01:05:46,000 Jika anda melakukan ini dalam cara yang bijak, ia tidak benar-benar, saya rasa, bahawa banyak masa. 947 01:05:46,000 --> 01:05:49,000 Anda tidak akan membandingkan semua kemungkinan [didengar] kombinasi 948 01:05:49,000 --> 01:05:55,000 setiap kali tunggal anda pergi melalui setiap lelaran. 949 01:05:55,000 --> 01:05:59,000 Tetapi masih, apabila kita bercakap tentang ini terikat atas kita katakan bahawa 950 01:05:59,000 --> 01:06:04,000 anda sedang melihat n ² perbandingan sepanjang jalan melalui. 951 01:06:04,000 --> 01:06:12,000 >> Mari kita kembali, dan sejak kita bermula untuk mendapatkan sedikit kesuntukan masa 952 01:06:12,000 --> 01:06:15,000 Saya akan mengatakan anda pasti perlu pergi melalui seluruh jadual ini, 953 01:06:15,000 --> 01:06:17,000 mengisi semua keluar. 954 01:06:17,000 --> 01:06:20,000 Fikirkan contoh. Fikirkan contoh konkrit. 955 01:06:20,000 --> 01:06:22,000 Itu benar-benar berguna dan membantu untuk melakukan. 956 01:06:22,000 --> 01:06:25,000 Lukiskan ia keluar. 957 01:06:25,000 --> 01:06:28,000 Ini adalah jenis jadual yang seperti anda pergi melalui dalam bidang sains komputer 958 01:06:28,000 --> 01:06:32,000 anda benar-benar harus bermula untuk tahu ini hati oleh. 959 01:06:32,000 --> 01:06:34,000 Ini adalah jenis soalan yang anda dapat dalam wawancara. 960 01:06:34,000 --> 01:06:36,000 Ini adalah pelbagai perkara-perkara yang baik untuk mengetahui, 961 01:06:36,000 --> 01:06:41,000 dan berfikir tentang kes-kes di pinggir, benar-benar memikirkan bagaimana untuk berfikir tentang 962 01:06:41,000 --> 01:06:45,000 mengetahui bahawa untuk menyelesaikan gelembung array terburuk mungkin 963 01:06:45,000 --> 01:06:52,000 untuk menyelesaikan dengan itu adalah salah satu yang dalam susunan terbalik. 964 01:06:52,000 --> 01:06:58,000 >> Petunjuk. Mari kita bercakap sedikit tentang petunjuk. 965 01:06:58,000 --> 01:07:03,000 Dalam beberapa minit terakhir kita ada di sini 966 01:07:03,000 --> 01:07:11,000 Saya tahu ini adalah sesuatu bersama-sama dengan fail I / O yang agak baru. 967 01:07:11,000 --> 01:07:19,000 Apabila kita bercakap mengenai petunjuk sebab kita mahu bercakap tentang petunjuk 968 01:07:19,000 --> 01:07:24,000 adalah kerana, satu, apabila kita sedang berusaha dalam C 969 01:07:24,000 --> 01:07:33,000 kita benar-benar pada tahap yang agak rendah berbanding dengan bahasa pengaturcaraan yang paling moden. 970 01:07:33,000 --> 01:07:38,000 Kami sebenarnya mampu untuk memanipulasi pembolehubah dalam ingatan, 971 01:07:38,000 --> 01:07:43,000 memikirkan ke mana mereka hendak pergi sebenarnya terletak dalam RAM kami. 972 01:07:43,000 --> 01:07:46,000 Sebaik sahaja anda telah pergi untuk mengambil kelas sistem operasi anda akan melihat 973 01:07:46,000 --> 01:07:48,000 bahawa, sekali lagi, jenis pengekstrakan. 974 01:07:48,000 --> 01:07:50,000 Itu bukan sebenarnya kes itu. 975 01:07:50,000 --> 01:07:52,000 Kami telah mendapat memori maya yang menyembunyikan butiran dari kami. 976 01:07:52,000 --> 01:07:58,000 >> Tetapi kini anda boleh mengandaikan bahawa apabila anda mempunyai program, 977 01:07:58,000 --> 01:08:02,000 contohnya, apabila anda mula menjalankan program-cipher Caesar anda 978 01:08:02,000 --> 01:08:06,000 Saya akan bertukar kembali kepada iPad saya benar-benar cepat- 979 01:08:06,000 --> 01:08:12,000 bahawa pada program yang sangat awal, jika anda mempunyai, katakan, 980 01:08:12,000 --> 01:08:15,000 4 gigabait RAM pada laptop anda, 981 01:08:15,000 --> 01:08:21,000 anda mendapat mengetepikan sebahagian ini, dan kita akan panggil RAM ini. 982 01:08:21,000 --> 01:08:25,000 Dan ia bermula di tempat kita pergi untuk memanggil 0, 983 01:08:25,000 --> 01:08:30,000 dan ia berakhir di tempat yang kita akan memanggil 4 gigabait. 984 01:08:30,000 --> 01:08:37,000 Saya benar-benar tidak boleh menulis. Man, yang digodam. 985 01:08:37,000 --> 01:08:40,000 Apabila program anda melaksanakan 986 01:08:40,000 --> 01:08:44,000 sistem operasi mengukir RAM, 987 01:08:44,000 --> 01:08:51,000 dan ia menentukan segmen yang berbeza untuk bahagian yang berlainan program anda, kuasailah 988 01:08:51,000 --> 01:08:58,000 Down sini kawasan ini adalah jenis tanah tidak lelaki. 989 01:08:58,000 --> 01:09:02,000 Apabila anda pergi sedikit lebih jauh di sini 990 01:09:02,000 --> 01:09:05,000 anda telah mendapat sebenarnya tempat di mana 991 01:09:05,000 --> 01:09:09,000 kod program untuk kehidupan anda. 992 01:09:09,000 --> 01:09:13,000 Itu kod binari sebenar, bahawa fail boleh laku sebenarnya mendapat dimuatkan ke dalam memori 993 01:09:13,000 --> 01:09:17,000 apabila anda menjalankan program, dan ia hidup dalam segmen kod. 994 01:09:17,000 --> 01:09:22,000 Dan sebagai program anda melaksanakan pemproses kelihatan di segmen kod ini 995 01:09:22,000 --> 01:09:24,000 untuk mengetahui apakah arahan yang seterusnya? 996 01:09:24,000 --> 01:09:27,000 Apakah garis seterusnya kod saya perlu untuk melaksanakan? 997 01:09:27,000 --> 01:09:31,000 >> Terdapat juga segmen data, dan ini adalah di mana mereka pemalar rentetan 998 01:09:31,000 --> 01:09:34,000 mendapat disimpan bahawa anda telah menggunakan. 999 01:09:34,000 --> 01:09:42,000 Dan kemudian lebih jauh sehingga ada tempat ini dipanggil timbunan itu. 1000 01:09:42,000 --> 01:09:46,000 Kami mengakses memori di sana dengan menggunakan malloc, 1001 01:09:46,000 --> 01:09:49,000 dan kemudian ke arah sangat atas program anda 1002 01:09:49,000 --> 01:09:52,000 terdapat timbunan, 1003 01:09:52,000 --> 01:09:57,000 dan itulah di mana kita telah bermain bagi kebanyakan permulaan. 1004 01:09:57,000 --> 01:09:59,000 Ini bukan skala atau apa-apa. 1005 01:09:59,000 --> 01:10:03,000 Banyak ini adalah sangat bergantung kepada mesin, 1006 01:10:03,000 --> 01:10:10,000 sistem operasi bergantung, tetapi ini adalah agak bagaimana perkara mendapatkan chunked sehingga. 1007 01:10:10,000 --> 01:10:17,000 Apabila anda menjalankan program dan anda mengisytiharkan pembolehubah dipanggil x- 1008 01:10:17,000 --> 01:10:27,000 Saya akan menarik kotak lain bawah, dan ini akan menjadi RAM serta. 1009 01:10:27,000 --> 01:10:29,000 Dan saya akan untuk melihat. 1010 01:10:29,000 --> 01:10:34,000 Kami akan menarik garis bergerigi untuk menunjukkan ini hanya bahagian kecil RAM 1011 01:10:34,000 --> 01:10:38,000 dan tidak semua ia sebagai kita melukis di atas. 1012 01:10:38,000 --> 01:10:43,000 >> Jika saya mengisytiharkan satu pembolehubah integer dipanggil x, 1013 01:10:43,000 --> 01:10:49,000 maka apa yang saya benar-benar mendapatkan pemetaan 1014 01:10:49,000 --> 01:10:54,000 yang disimpan dalam jadual simbol program saya 1015 01:10:54,000 --> 01:11:00,000 yang menghubungkan x nama kepada rantau ini memori yang saya telah disediakan 1016 01:11:00,000 --> 01:11:03,000 di sini antara bar menegak. 1017 01:11:03,000 --> 01:11:08,000 Jika saya mempunyai baris kod dalam program saya yang mengatakan bahawa x = 7 1018 01:11:08,000 --> 01:11:15,000 pemproses tahu "Oh, okay, saya tahu bahawa x kehidupan di lokasi ini dalam ingatan." 1019 01:11:15,000 --> 01:11:25,000 "Saya akan pergi ke hadapan dan menulis 7 satu di sana." 1020 01:11:25,000 --> 01:11:28,000 Bagaimana ia tahu apa lokasi ini adalah dalam ingatan? 1021 01:11:28,000 --> 01:11:30,000 Nah, itu semua dilakukan pada masa kompil. 1022 01:11:30,000 --> 01:11:34,000 Pengkompil menjaga memperuntukkan di mana setiap pembolehubah akan pergi 1023 01:11:34,000 --> 01:11:40,000 dan mewujudkan pemetaan khas atau sebaliknya menghubungkan titik 1024 01:11:40,000 --> 01:11:43,000 antara simbol dan di mana ia pergi, nama pembolehubah 1025 01:11:43,000 --> 01:11:46,000 dan di mana ia akan hidup dalam ingatan. 1026 01:11:46,000 --> 01:11:50,000 Tetapi ternyata bahawa kita sebenarnya boleh mengaksesnya dalam program-program kami juga. 1027 01:11:50,000 --> 01:11:55,000 Ini mendapat penting apabila kita mula bercakap tentang beberapa struktur data, 1028 01:11:55,000 --> 01:11:58,000 yang merupakan satu konsep bahawa kita akan memperkenalkan kemudian. 1029 01:11:58,000 --> 01:12:09,000 >> Tetapi untuk sekarang, apa yang anda boleh tahu bahawa saya boleh membuat penunjuk ke lokasi ini, x. 1030 01:12:09,000 --> 01:12:12,000 Sebagai contoh, saya boleh mencipta pembolehubah penunjuk. 1031 01:12:12,000 --> 01:12:16,000 Apabila kita mewujudkan satu penuding kita menggunakan notasi bintang. 1032 01:12:16,000 --> 01:12:21,000 Dalam kes ini, ini mengatakan saya akan mewujudkan penunjuk int. 1033 01:12:21,000 --> 01:12:24,000 Ia adalah satu jenis sama seperti mana-mana lain. 1034 01:12:24,000 --> 01:12:27,000 Kami memberikan pembolehubah seperti y, 1035 01:12:27,000 --> 01:12:32,000 dan kemudian kita menetapkan ia sama dengan alamat, alamat. 1036 01:12:32,000 --> 01:12:38,000 Dalam kes ini, kita boleh menetapkan y ke titik x 1037 01:12:38,000 --> 01:12:43,000 dengan mengambil alamat x, yang kita lakukan dengan #: glib ini, 1038 01:12:43,000 --> 01:12:55,000 dan kemudian kami menetapkan y menunjukkan. 1039 01:12:55,000 --> 01:12:59,000 Apa ini pada dasarnya tidak ialah jika kita melihat RAM kami 1040 01:12:59,000 --> 01:13:02,000 ini mencipta pembolehubah yang berasingan. 1041 01:13:02,000 --> 01:13:04,000 Ia akan memanggilnya y, 1042 01:13:04,000 --> 01:13:06,000 dan apabila garis kod ini melaksanakan 1043 01:13:06,000 --> 01:13:13,000 ia sebenarnya akan mewujudkan penunjuk yang sedikit yang kita biasanya menarik sebagai anak panah, 1044 01:13:13,000 --> 01:13:15,000 dan ia menetapkan y untuk menunjukkan ke x. 1045 01:13:15,000 --> 01:13:17,000 Ya. 1046 01:13:17,000 --> 01:13:19,000 [Pelajar] Jika x ialah sudah penunjuk, anda akan hanya melakukan 1047 01:13:19,000 --> 01:13:22,000 int * y = x bukannya mempunyai #: glib? 1048 01:13:22,000 --> 01:13:24,000 Ya. 1049 01:13:24,000 --> 01:13:27,000 Jika x sudah penunjuk, maka anda boleh menetapkan 2 petunjuk sama antara satu sama lain, 1050 01:13:27,000 --> 01:13:30,000 di mana y tidak akan menunjukkan kepada x, 1051 01:13:30,000 --> 01:13:34,000 tetapi ia akan menunjukkan apa-apa x menunjuk ke. 1052 01:13:34,000 --> 01:13:37,000 Malangnya, kita berada di luar masa. 1053 01:13:37,000 --> 01:13:44,000 >> Apa yang saya ingin katakan pada ketika ini, kita boleh bercakap tentang offline ini, 1054 01:13:44,000 --> 01:13:49,000 tetapi saya akan mengatakan mula bekerja melalui masalah ini, # 14. 1055 01:13:49,000 --> 01:13:53,000 Anda boleh lihat sudah ada sedikit diisi untuk anda di sini. 1056 01:13:53,000 --> 01:13:57,000 Anda boleh melihat bahawa apabila kita mengaku 2 petunjuk, int * x * y, 1057 01:13:57,000 --> 01:14:01,000 dan ambil perhatian bahawa menunjuk * sebelah pembolehubah adalah sesuatu yang telah dilakukan pada tahun lepas. 1058 01:14:01,000 --> 01:14:05,000 Ia ternyata bahawa ini adalah serupa dengan apa yang kita lakukan tahun ini. 1059 01:14:05,000 --> 01:14:11,000 Ia tidak kira di mana anda menulis * apabila anda mengisytiharkan penunjuk. 1060 01:14:11,000 --> 01:14:17,000 Tetapi kita telah menulis * seterusnya jenis 1061 01:14:17,000 --> 01:14:24,000 kerana yang menjadikan ia sangat jelas bahawa anda mengisytiharkan pembolehubah penunjuk. 1062 01:14:24,000 --> 01:14:27,000 Anda boleh melihat bahawa mengisytiharkan 2 petunjuk memberikan kita 2 kotak. 1063 01:14:27,000 --> 01:14:31,000 Di sini apabila kita menetapkan x sama untuk malloc 1064 01:14:31,000 --> 01:14:34,000 apa ini mengatakan mengetepikan memori dalam timbunan. 1065 01:14:34,000 --> 01:14:41,000 Ini kotak kecil di sini, bulatan ini, terletak pada timbunan. 1066 01:14:41,000 --> 01:14:43,000 X menunjuk kepada ia. 1067 01:14:43,000 --> 01:14:46,000 Perhatikan bahawa y masih tidak menunjuk kepada apa-apa. 1068 01:14:46,000 --> 01:14:50,000 Untuk mendapatkan memori untuk menyimpan nombor 42 ke x 1069 01:14:50,000 --> 01:14:55,000 kita akan menggunakan apa notasi? 1070 01:14:55,000 --> 01:14:59,000 [Pelajar] * x = 42. 1071 01:14:59,000 --> 01:15:01,000 Tepat sekali, * x = 42. 1072 01:15:01,000 --> 01:15:06,000 Ini bermakna mengikuti anak panah dan membuang 42 di sana. 1073 01:15:06,000 --> 01:15:09,000 Di sini di mana kita menetapkan y dan x kita y telah menunjuk ke x. 1074 01:15:09,000 --> 01:15:13,000 Sekali lagi, ini adalah sama seperti apa yang Kevin berkata mana kita menetapkan y sama ke x. 1075 01:15:13,000 --> 01:15:15,000 Y tidak menunjuk ke x. 1076 01:15:15,000 --> 01:15:19,000 Sebaliknya, ia menunjuk ke apa x menunjuk serta. 1077 01:15:19,000 --> 01:15:24,000 >> Dan kemudian akhirnya dalam kotak terakhir ini terdapat 2 perkara yang mungkin yang boleh kita lakukan. 1078 01:15:24,000 --> 01:15:28,000 Salah satunya adalah kita boleh mengatakan * x = 13. 1079 01:15:28,000 --> 01:15:33,000 Satu perkara lagi ialah kita boleh mengatakan Alex, adakah anda tahu apa yang kita boleh lakukan di sini? 1080 01:15:33,000 --> 01:15:37,000 Anda boleh mengatakan * x = 13 atau- 1081 01:15:37,000 --> 01:15:41,000 [Pelajar] Anda boleh mengatakan apa sahaja int. 1082 01:15:41,000 --> 01:15:45,000 [Nate H.] Jika ini telah dirujuk sebagai pembolehubah int kita boleh berbuat demikian. 1083 01:15:45,000 --> 01:15:49,000 Kita juga boleh mengatakan * y = 13 kerana kedua-dua mereka sedang menunjuk ke tempat yang sama, 1084 01:15:49,000 --> 01:15:51,000 supaya kita boleh menggunakan sama ada berubah-ubah untuk sampai ke sana. 1085 01:15:51,000 --> 01:15:56,000 Yeah. >> [Pelajar] Apa yang ia akan kelihatan seperti jika kita hanya mengatakan int x ialah 13? 1086 01:15:56,000 --> 01:16:00,000 Yang akan mengisytiharkan pembolehubah baru yang dipanggil x, yang tidak akan bekerja. 1087 01:16:00,000 --> 01:16:04,000 Kita akan mempunyai perlanggaran kerana kita diisytiharkan x untuk menjadi penunjuk di sini. 1088 01:16:04,000 --> 01:16:10,000 [Pelajar] Jika kita hanya mempunyai kenyataan itu dengan sendirinya apa yang ia akan kelihatan seperti dari segi bulatan? 1089 01:16:10,000 --> 01:16:14,000 Jika kita mempunyai x = 13 maka kita akan mempunyai kotak, dan bukannya mempunyai anak panah 1090 01:16:14,000 --> 01:16:16,000 keluar dari kotak, kita akan menarik ia sebagai hanya 13. 1091 01:16:16,000 --> 01:16:19,000 [Pelajar] Dalam kotak. Okay. 1092 01:16:19,000 --> 01:16:24,000 >> Terima kasih kerana menonton, dan nasib baik pada Kuiz 0. 1093 01:16:24,000 --> 01:16:28,000 [CS50.TV]