1 00:00:07,420 --> 00:00:08,160 [Powered by Google Translate] DAVID J. MALAN: Baiklah. 2 00:00:08,160 --> 00:00:11,170 Ini adalah CS50, dan ini adalah akhir dua minggu. 3 00:00:11,170 --> 00:00:14,650 Jika anda mengharapkan untuk menjadi lapar sekitar masa esok ini, tahu bahawa kita akan 4 00:00:14,650 --> 00:00:18,920 untuk mengadakan esok kumpulan kecil, Khamis, 1:15 PM. 5 00:00:18,920 --> 00:00:21,460 Terdapat URL ini di sini jika anda ingin untuk RSVP. 6 00:00:21,460 --> 00:00:25,270 Ruang adalah terhad, jadi maafkanlah jika borang yang telah diisi oleh masa yang anda 7 00:00:25,270 --> 00:00:26,680 mengisi ini. 8 00:00:26,680 --> 00:00:29,400 Satu lagi URL walaupun yang mungkin menarik minat ini. 9 00:00:29,400 --> 00:00:32,409 >> Jadi dalam hanya kira-kira masa sebulan, kursus ini akan disediakan 10 00:00:32,409 --> 00:00:36,090 semua lebih meluas melalui EDX, melalui mana orang di Internet akan 11 00:00:36,090 --> 00:00:39,580 dapat mengikuti bersama-sama, melibatkan diri dalam kursus ini agak aktif, sebenarnya. 12 00:00:39,580 --> 00:00:43,070 Mereka akan menggunakan Appliance CS50 dan CS50 Bincangkan dan kebanyakan 13 00:00:43,070 --> 00:00:45,840 pelbagai alat perisian yang kita sudah telah menggunakan semester ini. 14 00:00:45,840 --> 00:00:49,030 Dan salah satu inisiatif kita ingin mengambil sebagai percubaan tahun ini 15 00:00:49,030 --> 00:00:53,120 adalah untuk melihat betapa banyak kandungan kita boleh diterjemahkan kepada lain yang dituturkan dan 16 00:00:53,120 --> 00:00:54,110 ditulis bahasa. 17 00:00:54,110 --> 00:00:58,000 Jadi, jika anda mungkin mempunyai kepentingan dalam menyertai dalam projek ini, di mana 18 00:00:58,000 --> 00:01:02,090 kita akan menyediakan transkrip Inggeris dan sarikata bagi kursus 19 00:01:02,090 --> 00:01:05,190 kuliah dan seluar pendek dan seminar dan bahagian dan sebagainya - 20 00:01:05,190 --> 00:01:08,700 jika anda bercakap dengan lancar atau menulis dengan lancar beberapa bahasa lain, kita akan 21 00:01:08,700 --> 00:01:12,240 suka untuk melibatkan diri anda dalam projek ini, di mana anda mengambil satu atau lebih daripada 22 00:01:12,240 --> 00:01:15,340 video, menterjemah mereka ke dalam bahasa anda tahu cukup baik. 23 00:01:15,340 --> 00:01:19,050 Untuk memberi anda rasa antara muka, ada ini antara muka berasaskan web pengguna 24 00:01:19,050 --> 00:01:22,330 bahawa kita akan menggunakan yang akan mewujudkan asasnya UI seperti ini. 25 00:01:22,330 --> 00:01:24,520 Ini saya mengajar Halloween dahulu. 26 00:01:24,520 --> 00:01:27,710 Dan di sebelah kanan terdapat dalam hitam bersebelahan dengan setem masa, 27 00:01:27,710 --> 00:01:31,300 anda akan melihat pelbagai perkara yang keluar dari mulut saya bahawa hari. 28 00:01:31,300 --> 00:01:34,660 Dan kemudian di bawah, anda akan mampu untuk menterjemahkan ke dalam bahasa lain. 29 00:01:34,660 --> 00:01:37,840 Tepat sekali apa yang pemetaan di antara keduanya, dalam kes ini, Bahasa Inggeris 30 00:01:37,840 --> 00:01:38,660 dan, katakan, Sepanyol. 31 00:01:38,660 --> 00:01:40,480 Jadi ia sebenarnya alat yang sangat user-friendly. 32 00:01:40,480 --> 00:01:43,690 Anda boleh putar balik dan cepat ke hadapan sangat mudah dengan kekunci pintas. 33 00:01:43,690 --> 00:01:46,710 Jadi jika anda ingin mengambil bahagian dalam eksperimen ini dan mempunyai kata-kata anda 34 00:01:46,710 --> 00:01:50,730 dilihat dan dibaca oleh berpotensi beribu-ribu orang di luar sana, jangan berasa 35 00:01:50,730 --> 00:01:51,960 percuma untuk menyertai. 36 00:01:51,960 --> 00:01:56,940 >> Kini satu perkataan tentang kucing dari Isnin, supaya kami telah menghantar terlalu 37 00:01:56,940 --> 00:01:58,120 mesej menakutkan. 38 00:01:58,120 --> 00:02:02,130 Adakah sedar bahawa sebagai waktu pejabat mencadangkan dan sebagai bahagian mencadangkan, 39 00:02:02,130 --> 00:02:05,110 reka bentuk kursus ini adalah sangat banyak telah pelajar bekerjasama dan 40 00:02:05,110 --> 00:02:09,250 bercakap untuk bekerja melalui set masalah dan masalah bersama-sama. 41 00:02:09,250 --> 00:02:13,630 Dan benar-benar garis hanya datang ke, sekali lagi, kerja anda akhirnya 42 00:02:13,630 --> 00:02:16,420 hendaklah mengemukakan harus anda sendiri. 43 00:02:16,420 --> 00:02:19,080 Dan sebagainya, agak jujur ​​- dalam waktu pejabat, ia adalah benar-benar biasa - 44 00:02:19,080 --> 00:02:21,560 ia benar-benar boleh dijangka, walaupun - untuk berbual dengan beberapa 45 00:02:21,560 --> 00:02:22,370 rakan-rakan yang datang kepada anda. 46 00:02:22,370 --> 00:02:25,240 Jika dia atau dia sedang bergelut dengan beberapa topik, dan anda seperti, oh, baik mari 47 00:02:25,240 --> 00:02:27,750 saya memberi anda gambaran tentang beberapa baris kod yang saya tulis. 48 00:02:27,750 --> 00:02:28,290 Itu denda. 49 00:02:28,290 --> 00:02:28,700 Yang berlaku. 50 00:02:28,700 --> 00:02:31,580 Dan itulah amat kondusif, saya fikir, dengan proses pembelajaran. 51 00:02:31,580 --> 00:02:35,270 Jika garis, sekali lagi, mendapat melintasi adalah apabila kepala adalah jenis condong lebih 52 00:02:35,270 --> 00:02:38,800 di sini untuk saat atau minit yang terlalu banyak untuk itu benar-benar mempunyai hanya 53 00:02:38,800 --> 00:02:41,250 peluang nyahhalang untuk rakan anda. 54 00:02:41,250 --> 00:02:43,870 Dan sudah tentu, apabila perkara mendapatkan ditukar melalui e-mel dan Dropbox dan 55 00:02:43,870 --> 00:02:45,350 sebagainya, terdapat juga adalah baris. 56 00:02:45,350 --> 00:02:48,940 Jadi dengan cara semua, berasa selesa dan berasa digalakkan untuk berbual dengan rakan-rakan 57 00:02:48,940 --> 00:02:51,270 dan rakan sekelas tentang psets dan banyak lagi. 58 00:02:51,270 --> 00:02:54,680 Dan hanya menyedari bahawa apa yang anda akhirnya mengemukakan benar-benar harus menjadi 59 00:02:54,680 --> 00:02:57,780 produk ciptaan anda dan bukan orang lain. 60 00:02:57,780 --> 00:03:01,010 >> Jadi dalam urat yang sama makhluk boneka, anda mungkin 61 00:03:01,010 --> 00:03:02,820 tahu lelaki ini di sini. 62 00:03:02,820 --> 00:03:06,180 Jadi ini adalah satu filem yang horrifically cheesy dari tahun lalu. 63 00:03:06,180 --> 00:03:08,680 Sesiapa di sini dilihat Spaceballs? 64 00:03:08,680 --> 00:03:09,120 Semua hak. 65 00:03:09,120 --> 00:03:10,220 Jadi bilangan yang baik di sini. 66 00:03:10,220 --> 00:03:13,840 Jadi ini adalah cara kami hebat akademik memperkenalkan hari ini akhirnya 67 00:03:13,840 --> 00:03:15,130 konsep kriptografi. 68 00:03:15,130 --> 00:03:19,010 Dan sebagainya salah satu masalah domain khusus untuk 2, pset yang akan datang 69 00:03:19,010 --> 00:03:22,770 keluar lewat malam esok, adalah untuk menyelam ke dalam dunia kriptografi, yang 70 00:03:22,770 --> 00:03:26,380 adalah seni menyulitkan atau bergegas maklumat. 71 00:03:26,380 --> 00:03:30,160 Dan ini akhirnya berkaitan dengan dunia keselamatan. 72 00:03:30,160 --> 00:03:34,440 >> Sekarang keselamatan bagi kebanyakan kita datang dalam bentuk mekanisme yang agak biasa. 73 00:03:34,440 --> 00:03:36,920 Semua kita mempunyai nama pengguna dan kata laluan. 74 00:03:36,920 --> 00:03:41,350 Dan kita semua mempunyai nama pengguna dan kata laluan yang sangat buruk, kemungkinan besar. 75 00:03:41,350 --> 00:03:45,250 Jika kata laluan anda adalah sama pada beberapa laman web, yang mungkin tidak 76 00:03:45,250 --> 00:03:47,920 idea yang terbaik, seperti yang kita akan membincangkan ke arah akhir semester. 77 00:03:47,920 --> 00:03:51,680 Jika kata laluan anda ditulis pada nota melekit - jenaka tidak - pada anda 78 00:03:51,680 --> 00:03:55,130 memantau, yang juga tidak semestinya reka bentuk yang terbaik tetapi agak biasa 79 00:03:55,130 --> 00:03:56,140 fenomena. 80 00:03:56,140 --> 00:04:00,420 Dan jika anda tidak menggunakan kriptografi untuk menyulitkan kata laluan anda, mereka adalah 81 00:04:00,420 --> 00:04:01,610 terdedah. 82 00:04:01,610 --> 00:04:04,670 Jadi, jika anda berfikir anda menjadi super bijak dengan mempunyai Firman tersembunyi 83 00:04:04,670 --> 00:04:07,740 dokumen tempat pada pemacu keras anda yang mempunyai semua kata laluan anda tetapi 84 00:04:07,740 --> 00:04:10,550 ia dalam folder bahawa tiada siapa yang akan melihat, yang terlalu tidak adalah sangat 85 00:04:10,550 --> 00:04:11,540 mekanisme selamat. 86 00:04:11,540 --> 00:04:15,100 Dan jadi apa pset 2 akan memperkenalkan ini seni kriptografi dan 87 00:04:15,100 --> 00:04:18,300 bergegas maklumat supaya perkara-perkara seperti kata laluan 88 00:04:18,300 --> 00:04:19,500 semua lebih selamat. 89 00:04:19,500 --> 00:04:24,500 Jadi sebagai untuk memberi motivasi kepada masalah ini sangat dunia sebenar dengan sangat bukan dunia sebenar 90 00:04:24,500 --> 00:04:28,740 senario, izinkan saya memperkenalkan anda kepada salah satu klip kegemaran kami di sini daripada ini 91 00:04:28,740 --> 00:04:29,895 filem, Spaceballs. 92 00:04:29,895 --> 00:04:30,565 >> [Video main] 93 00:04:30,565 --> 00:04:32,995 Who arak, apa yang berlaku? 94 00:04:32,995 --> 00:04:34,730 Apa yang anda lakukan kepada anak perempuan saya? 95 00:04:34,730 --> 00:04:38,960 Izinkan saya untuk memperkenalkan pakar bedah plastik cemerlang muda, Dr Philip 96 00:04:38,960 --> 00:04:43,290 Schlotkin, hidung terbesar pekerjaan manusia di seluruh 97 00:04:43,290 --> 00:04:45,526 alam semesta dan Beverly Hills. 98 00:04:45,526 --> 00:04:46,450 -Anda tuanku. 99 00:04:46,450 --> 00:04:47,380 -Hidung kerja? 100 00:04:47,380 --> 00:04:48,035 Saya tidak faham. 101 00:04:48,035 --> 00:04:49,480 Dia sudah mempunyai pekerjaan hidung. 102 00:04:49,480 --> 00:04:51,490 Ia adalah manis 16 hadir. 103 00:04:51,490 --> 00:04:53,090 Tidak, ia bukan apa yang anda fikirkan. 104 00:04:53,090 --> 00:04:55,150 Ia lebih buruk. 105 00:04:55,150 --> 00:04:59,860 Jika anda tidak memberi saya gabungan perisai udara, Dr Schlotkin akan 106 00:04:59,860 --> 00:05:04,135 memberi anak anda kembali hidung rumahnya. 107 00:05:04,135 --> 00:05:05,385 -Tiada! 108 00:05:08,202 --> 00:05:10,186 Di manakah anda mendapat bahawa? 109 00:05:10,186 --> 00:05:11,178 -Baiklah. 110 00:05:11,178 --> 00:05:11,674 Saya akan memberitahu. 111 00:05:11,674 --> 00:05:12,666 Saya akan memberitahu. 112 00:05:12,666 --> 00:05:14,154 Tidak, ayah, tidak. 113 00:05:14,154 --> 00:05:15,150 Anda tidak perlu. 114 00:05:15,150 --> 00:05:16,460 You're hak, sayang saya. 115 00:05:16,460 --> 00:05:18,450 Saya akan terlepas hidung baru anda. 116 00:05:18,450 --> 00:05:21,550 Tetapi saya tidak akan memberitahu mereka gabungan tidak kira apa. 117 00:05:21,550 --> 00:05:23,100 -Sangat baik. 118 00:05:23,100 --> 00:05:25,510 Dr Schlotkin, melakukan yang terburuk anda. 119 00:05:25,510 --> 00:05:26,760 My keseronokan. 120 00:05:30,560 --> 00:05:31,180 -Tiada! 121 00:05:31,180 --> 00:05:33,450 Tunggu, tunggu. 122 00:05:33,450 --> 00:05:34,770 Saya akan memberitahu. 123 00:05:34,770 --> 00:05:36,400 Saya akan memberitahu. 124 00:05:36,400 --> 00:05:38,630 Saya tahu ia akan bekerja. 125 00:05:38,630 --> 00:05:42,040 Baiklah, berikan kepada saya. 126 00:05:42,040 --> 00:05:46,890 Gabungan adalah salah. 127 00:05:46,890 --> 00:05:47,290 -One. 128 00:05:47,290 --> 00:05:48,183 -One. 129 00:05:48,183 --> 00:05:48,950 -Dua. 130 00:05:48,950 --> 00:05:49,370 -Dua. 131 00:05:49,370 --> 00:05:50,450 -Dua. 132 00:05:50,450 --> 00:05:50,715 Tiga 133 00:05:50,715 --> 00:05:51,380 Tiga. 134 00:05:51,380 --> 00:05:52,390 Tiga. 135 00:05:52,390 --> 00:05:53,200 Empat. 136 00:05:53,200 --> 00:05:53,720 Empat. 137 00:05:53,720 --> 00:05:55,830 Empat. 138 00:05:55,830 --> 00:05:56,580 Lima 139 00:05:56,580 --> 00:05:57,120 Lima. 140 00:05:57,120 --> 00:05:58,560 Lima. 141 00:05:58,560 --> 00:06:03,770 Jadi gabungan adalah satu, dua, tiga, empat, lima. 142 00:06:03,770 --> 00:06:06,745 Itulah gabungan bodoh yang pernah saya dengar dalam hidup saya. 143 00:06:06,745 --> 00:06:09,290 Itulah jenis perkara bodoh akan mempunyai bagasi. 144 00:06:09,290 --> 00:06:11,540 Terima kasih, tuanku. 145 00:06:11,540 --> 00:06:12,940 Apa yang anda lakukan? 146 00:06:12,940 --> 00:06:14,230 Saya dimatikan dinding. 147 00:06:14,230 --> 00:06:14,630 Tidak, anda tidak. 148 00:06:14,630 --> 00:06:15,430 Anda dimatikan keseluruhan filem. 149 00:06:15,430 --> 00:06:16,722 Saya mesti menekan butang yang salah. 150 00:06:16,722 --> 00:06:18,078 Nah, meletakkan ia kembali. 151 00:06:18,078 --> 00:06:18,805 Letakkan filem kembali. 152 00:06:18,805 --> 00:06:19,080 -Ya, tuan. 153 00:06:19,080 --> 00:06:19,270 Ya, tuan. 154 00:06:19,270 --> 00:06:19,830 -Mari kita pergi, Erna. 155 00:06:19,830 --> 00:06:20,270 Marilah, Gretchen. 156 00:06:20,270 --> 00:06:22,850 Sudah tentu, anda tahu saya masih akan perlu untuk menghantar bil kepada anda untuk ini. 157 00:06:27,400 --> 00:06:28,325 Nah, adakah ia berfungsi? 158 00:06:28,325 --> 00:06:29,550 Mana pintu? 159 00:06:29,550 --> 00:06:29,910 Ia bekerja, tuan. 160 00:06:29,910 --> 00:06:30,770 Kami mempunyai gabungan. 161 00:06:30,770 --> 00:06:31,390 Hebat. 162 00:06:31,390 --> 00:06:35,630 Sekarang kita boleh mengambil setiap nafas terakhir udara segar dari planet Druidia. 163 00:06:35,630 --> 00:06:36,550 Apakah gabungan? 164 00:06:36,550 --> 00:06:38,805 Satu, dua, tiga, empat, lima. 165 00:06:38,805 --> 00:06:40,610 Satu, dua, tiga, empat, lima? 166 00:06:40,610 --> 00:06:41,070 -Ya. 167 00:06:41,070 --> 00:06:41,760 -Itulah menakjubkan. 168 00:06:41,760 --> 00:06:45,200 Saya telah mendapat kombinasi yang sama pada bagasi saya. 169 00:06:45,200 --> 00:06:47,800 Sediakan Spaceball 1 untuk berlepas serta-merta. 170 00:06:47,800 --> 00:06:48,536 -Ya, tuan. 171 00:06:48,536 --> 00:06:52,350 Dan mengubah kombinasi pada bagasi saya. 172 00:06:52,350 --> 00:06:53,250 -Ow! 173 00:06:53,250 --> 00:06:55,020 [Video main AKHIR] 174 00:06:55,020 --> 00:06:57,470 >> DAVID J. MALAN: Satu filem yang menakjubkan anda perlu sekarang semua lihat. 175 00:07:00,600 --> 00:07:06,540 Jadi konteks di sini adalah bahawa dengan data tidak selamat datang peluang untuk 176 00:07:06,540 --> 00:07:07,790 menyulitkan dan untuk perebutan ia. 177 00:07:07,790 --> 00:07:11,060 Dan sebagainya ini, misalnya, adalah satu contoh mesej disulitkan. 178 00:07:11,060 --> 00:07:12,980 Ini sebenarnya mengatakan sesuatu dalam Bahasa Inggeris. 179 00:07:12,980 --> 00:07:14,750 Tetapi ia adalah jelas tidak sepenuhnya jelas. 180 00:07:14,750 --> 00:07:17,360 Dan kita akan datang bulatan penuh hari ini untuk mengusik selain apa rahsia ini 181 00:07:17,360 --> 00:07:18,380 mesej di sini. 182 00:07:18,380 --> 00:07:22,370 Tetapi dalam dunia sebenar komputer, perkara-perkara tidak walaupun kelihatan seperti mereka mungkin 183 00:07:22,370 --> 00:07:23,440 menjadi frasa Bahasa Inggeris. 184 00:07:23,440 --> 00:07:27,500 Sebagai contoh, ini adalah apa yang anda mungkin mencari di standard Linux atau Mac atau 185 00:07:27,500 --> 00:07:32,080 Unix komputer dalam fail yang pernah suatu masa dipanggil fail kata laluan. 186 00:07:32,080 --> 00:07:34,170 Kini, ia telah dipindahkan ke tempat lain. 187 00:07:34,170 --> 00:07:38,660 Tetapi jika anda melihat di tempat yang betul pada sistem, anda akan melihat bukan sahaja anda 188 00:07:38,660 --> 00:07:41,430 nama pengguna atau orang lain pada sistem, tetapi anda akan melihat 189 00:07:41,430 --> 00:07:43,410 versi disulitkan kata laluan mereka. 190 00:07:43,410 --> 00:07:47,800 Malah, perkataan kubur sana menunjukkan bahawa barangan berikut adalah disulitkan. 191 00:07:47,800 --> 00:07:52,030 Dan ini siri surat yang seolah-olah rawak dan huruf dan nombor dan 192 00:07:52,030 --> 00:07:56,370 sebagainya boleh dibuka hanya dengan umumnya mengetahui beberapa rahsia - 193 00:07:56,370 --> 00:07:58,600 perkataan rahsia, rahsia nombor. 194 00:07:58,600 --> 00:08:02,760 Dan sebagainya sememangnya, seni kriptografi akhirnya bisul ke mempercayai beberapa 195 00:08:02,760 --> 00:08:05,700 menyusun dan mengetahui sesuatu yang orang lain tidak. 196 00:08:05,700 --> 00:08:10,010 Kami akan meneroka ini secara terperinci sedikit lebih hari ini dan dalam pset datang. 197 00:08:10,010 --> 00:08:11,860 >> Dan kini satu perkataan pada pas / gagal. 198 00:08:11,860 --> 00:08:15,250 Jadi, terutamanya, kerana sesetengah daripada anda telah menyelam ke dalam pset 1, perkakas, dan 199 00:08:15,250 --> 00:08:18,390 dunia yang sangat baru untuk diri sendiri, menyedari bahawa kekecewaan dan 200 00:08:18,390 --> 00:08:21,340 kekeliruan dan kesukaran hanya teknikal dapat dijangka. 201 00:08:21,340 --> 00:08:24,410 Terutamanya dengan pset pertama, di mana terdapat hanya begitu banyak baru, hanya mendapat 202 00:08:24,410 --> 00:08:28,830 biasa dengan ls dan cd dan semua arahan batin dalam persekitaran yang baru. 203 00:08:28,830 --> 00:08:32,679 Dan itulah berasingan dari bahan sebenar dan pengaturcaraan sendiri. 204 00:08:32,679 --> 00:08:35,960 Jadi sedar, terlalu, bahawa terdapat pasti waktu pejabat yang wujud sebagai 205 00:08:35,960 --> 00:08:36,770 struktur sokongan. 206 00:08:36,770 --> 00:08:38,620 Seksyen bermula Ahad ini akan datang. 207 00:08:38,620 --> 00:08:41,990 Tetapi yang paling penting, jika anda rasa hanya yang ini tidak adalah 208 00:08:41,990 --> 00:08:44,420 dunia untuk anda, sedar bahawa ia benar-benar tidak hanya mengambil masa. 209 00:08:44,420 --> 00:08:47,520 Dan kalaulah tidak bagi peluang ini tahun lalu untuk saya mengambil kelas 210 00:08:47,520 --> 00:08:50,840 lulus / gagal, jujur, saya tidak akan telah pun menjejakkan kaki di dalam kelas. 211 00:08:50,840 --> 00:08:53,520 Dan anda boleh menukar sehingga, katakan, hari Isnin kelima kursus. 212 00:08:53,520 --> 00:08:57,110 Jadi, jika anda berada di pinggir kini, menyedari bahawa bukannya kepala ke beberapa lain 213 00:08:57,110 --> 00:09:01,000 perairan sama sekali, adakah pasti mempertimbangkan hanya berubah untuk lulus / gagal. 214 00:09:01,000 --> 00:09:03,750 Sekali lagi, tidak benar-benar budaya ini di sini di Harvard mengambil perkara 215 00:09:03,750 --> 00:09:08,080 lulus / gagal kerana semua orang benar-benar mahu mencapai atau overachieve. 216 00:09:08,080 --> 00:09:11,470 Tetapi terus-terang, ini adalah cara yang indah untuk mencuba sesuatu yang keluar yang tidak mungkin 217 00:09:11,470 --> 00:09:13,110 biasa kepada anda. 218 00:09:13,110 --> 00:09:17,090 Dan anda akan berakhir lakukan dalam kebanyakan kes agak halus, mungkin 219 00:09:17,090 --> 00:09:18,040 banyak untuk mengejutkan anda. 220 00:09:18,040 --> 00:09:20,850 Dan dari segi yang lebih konkrit, apa yang saya fikir lulus / gagal umumnya tidak, 221 00:09:20,850 --> 00:09:23,350 terutamanya kerana anda mungkin telah berpengalaman dengan pset 0, jika anda telah meletakkan 222 00:09:23,350 --> 00:09:27,200 dalam 10 jam, 15 jam, 25 jam ke pset beberapa - dan anda hanya terhantuk 223 00:09:27,200 --> 00:09:28,180 kepala dinding, 224 00:09:28,180 --> 00:09:29,850 dan ia semakin super lewat malam, 225 00:09:29,850 --> 00:09:31,880 tetapi anda telah mengambil pset seperti 90% dari jalan, 226 00:09:31,880 --> 00:09:33,780 anda tahu anda tidak boleh memikirkan satu perkara - 227 00:09:33,780 --> 00:09:36,830 lulus / gagal benar-benar mengambil kelebihan luar kelas seperti ini, di mana anda boleh menyusun 228 00:09:36,830 --> 00:09:39,150 gembira mengatakan okay, saya tahu ia tidak sempurna. 229 00:09:39,150 --> 00:09:40,470 Tetapi saya bekerja pantat saya mengenai perkara ini. 230 00:09:40,470 --> 00:09:42,410 Saya agak gembira dengan mana ia berakhir. 231 00:09:42,410 --> 00:09:44,780 Dan yang akan memenuhi harapan pas / gagal. 232 00:09:44,780 --> 00:09:46,850 Jadi jangan menyimpan bahawa dalam fikiran. 233 00:09:46,850 --> 00:09:47,140 >> Semua hak. 234 00:09:47,140 --> 00:09:50,980 Jadi orang-orang yang telah berjuang untuk menggunakan Universiti Harvard Wi-Fi tahu 235 00:09:50,980 --> 00:09:54,780 bahawa terdapat SSID CS50, sambungan Wi-Fi terapung di sekeliling yang anda 236 00:09:54,780 --> 00:09:56,520 mungkin mempunyai nasib yang lebih baik. 237 00:09:56,520 --> 00:09:59,430 Ia adalah ironis sedikit bahawa kata laluan untuk ini - jika anda ingin mencuba 238 00:09:59,430 --> 00:10:03,080 menyambung ini untuk kelajuan yang lebih baik dan marilah kita tahu jika ia tidak lebih baik - 239 00:10:03,080 --> 00:10:09,240 satu, dua, tiga, empat, lima, sepanjang jalan sehingga lapan kerana lapan adalah 240 00:10:09,240 --> 00:10:10,270 lebih selamat daripada lima. 241 00:10:10,270 --> 00:10:15,520 Jadi jika anda memerlukan kata laluan Wi-Fi, menyambung CS50 tanpa wayar di sini. 242 00:10:15,520 --> 00:10:16,950 Satu, dua, tiga, empat, lima, enam, tujuh, lapan. 243 00:10:16,950 --> 00:10:20,440 Dan paparkan dalam CS50 Bincangkan jika anda masih mempunyai isu penyambungan sekejap, 244 00:10:20,440 --> 00:10:24,880 dan kita akan membiarkan kuasa yang akan tahu untuk ruang ini. 245 00:10:24,880 --> 00:10:25,180 >> Semua hak. 246 00:10:25,180 --> 00:10:30,350 Jadi penggoda cepat, terutamanya bagi orang-orang di antara kamu yang lelaki atau perempuan kipas 247 00:10:30,350 --> 00:10:31,900 Apple semua perkara. 248 00:10:31,900 --> 00:10:37,566 Apa yang saya digali daripada beberapa tahun kembali fail ini di sini, ilock.c, hanya untuk 249 00:10:37,566 --> 00:10:40,930 jenis membuat lebih konkrit dan lebih kompleks beberapa C lebih asas 250 00:10:40,930 --> 00:10:42,350 program kita telah menulis. 251 00:10:42,350 --> 00:10:44,360 Jadi saya membuka fail ini, ilock.c. 252 00:10:44,360 --> 00:10:46,830 Ia boleh didapati pada halaman kuliah untuk hari ini. 253 00:10:46,830 --> 00:10:49,470 Pada sebelah kiri, anda akan melihat satu senarai panjang fungsi. 254 00:10:49,470 --> 00:10:51,860 Jadi rakan-rakan yang menulis ini menulis banyak fungsi, 255 00:10:51,860 --> 00:10:53,290 lebih daripada sekadar utama. 256 00:10:53,290 --> 00:10:55,490 Dia menggunakan sekumpulan keseluruhan perpustakaan di sini. 257 00:10:55,490 --> 00:11:00,450 Dan jika kita mula menatal, apakah ini sebenarnya adalah sangat 258 00:11:00,450 --> 00:11:04,670 pertama, saya percaya, retak untuk iPhone asal. 259 00:11:04,670 --> 00:11:08,000 Apabila anda mahu untuk jailbreak iPhone asal, yang bermaksud untether 260 00:11:08,000 --> 00:11:11,800 daripada AT & T dan sebenarnya memasang perisian khas di atasnya dan melakukan perkara-perkara 261 00:11:11,800 --> 00:11:13,510 bahawa Apple tidak mahu orang untuk melakukan - 262 00:11:13,510 --> 00:11:17,020 baik, seseorang mengambil masa untuk memikirkan bagaimana mereka boleh mengeksploitasi 263 00:11:17,020 --> 00:11:20,880 perisian kelemahan, kesilapan, pepijat dalam perisian Apple. 264 00:11:20,880 --> 00:11:22,650 Dan demikianlah dilahirkan ilock.c. 265 00:11:22,650 --> 00:11:26,670 Bahawa jika anda disusun pada komputer dan dipasang ia ke bawah yang 266 00:11:26,670 --> 00:11:29,810 telah disambungkan ke komputer anda melalui, katakan, kabel USB, ini akan memberikan anda 267 00:11:29,810 --> 00:11:33,360 pentadbiran atau akar keistimewaan pada iPhone anda dan membiarkan anda lakukan cukup banyak 268 00:11:33,360 --> 00:11:34,170 apa sahaja yang anda mahu. 269 00:11:34,170 --> 00:11:36,740 >> Dan sebagainya telah ada ini kucing yang menarik dan permainan tetikus antara Apple dan 270 00:11:36,740 --> 00:11:39,920 seluruh dunia khususnya kerana mereka, seperti banyak syarikat, cuba untuk mengunci 271 00:11:39,920 --> 00:11:43,220 barangan mereka ke bawah supaya anda hanya boleh lakukan dengan apa yang mereka ingin. 272 00:11:43,220 --> 00:11:46,620 Tetapi terima kasih kepada orang-orang seperti ini dan pemahaman mereka tentang tahap rendah 273 00:11:46,620 --> 00:11:50,580 butiran dan, dalam kes ini, pengaturcaraan C dan banyak membina biasa 274 00:11:50,580 --> 00:11:54,630 bahawa kita telah mula bermain dengan, anda mampu untuk benar-benar memanfaatkan 275 00:11:54,630 --> 00:11:59,050 perkakasan dalam cara yang anda lihat patut dan tidak semestinya beberapa entiti korporat. 276 00:11:59,050 --> 00:12:01,360 Jadi, misalnya, saya tidak mempunyai idea apa yang semua ini adalah melakukan. 277 00:12:01,360 --> 00:12:03,220 Tetapi GetVersion bunyi agak mudah. 278 00:12:03,220 --> 00:12:05,480 Dan ia kelihatan seperti ini adalah fungsi yang orang ini menulis. 279 00:12:05,480 --> 00:12:09,240 Ambil beberapa jenis integer sebagai hujah, tidak mengembalikan apa-apa, tetapi 280 00:12:09,240 --> 00:12:13,080 nampaknya gelung dengan gelung sini dan jika keadaan itu, jika keadaan, 281 00:12:13,080 --> 00:12:15,620 memecahkan, dan entah bagaimana berkaitan dengan nombor versi. 282 00:12:15,620 --> 00:12:16,700 Jika kita tatal ke bawah - 283 00:12:16,700 --> 00:12:19,570 walaupun banyak kata kunci ini akan menjadi baru, dan terdapat 284 00:12:19,570 --> 00:12:22,590 banyak keseluruhan fungsi di sini tidak pernah kita lihat dan mungkin tidak pernah melihat lebih 285 00:12:22,590 --> 00:12:23,830 kursus semester - 286 00:12:23,830 --> 00:12:27,150 pada akhir hari, ia mengikut peraturan yang sama dan logik yang kita telah 287 00:12:27,150 --> 00:12:28,760 bermain dengan setakat ini. 288 00:12:28,760 --> 00:12:34,220 Jadi ini adalah terlalu lama untuk retak 3 iPhone anda atau 4s atau 5S tidak lama lagi, hari ini, 289 00:12:34,220 --> 00:12:37,320 tetapi tahu bahawa ia semua amat berasal dari dunia ini yang kami telah 290 00:12:37,320 --> 00:12:38,430 menyelam ke dalam. 291 00:12:38,430 --> 00:12:41,900 >> Jadi mari kita lihat pada contoh yang sedikit lebih mudah. 292 00:12:41,900 --> 00:12:46,100 Ini satu, hanya untuk mendapatkan panas dengan sintaks tertentu dan juga beberapa data lain 293 00:12:46,100 --> 00:12:49,240 jenis yang kita telah bercakap tentang tetapi tidak benar-benar dilihat dalam C. Jadi ini adalah 294 00:12:49,240 --> 00:12:51,680 file dipanggil positive1.c. 295 00:12:51,680 --> 00:12:55,120 Dan setiap komen-komen di atas, ini hanya menuntut bahawa pengguna menyediakan 296 00:12:55,120 --> 00:12:55,960 nombor positif. 297 00:12:55,960 --> 00:12:59,530 Jadi ia adalah satu contoh gelung do-sementara, yang bagus untuk interaktif pengguna 298 00:12:59,530 --> 00:13:01,980 program di mana anda perlu untuk memberitahu pengguna untuk melakukan sesuatu. 299 00:13:01,980 --> 00:13:05,190 Dan jika mereka tidak bekerjasama, anda menjerit pada mereka atau menolak input mereka. 300 00:13:05,190 --> 00:13:11,610 Kes di titik, saya akan melakukan garisan 19 melalui 24 begitu lama sebagai pengguna mempunyai 301 00:13:11,610 --> 00:13:14,310 tidak memberikan saya nombor positif. 302 00:13:14,310 --> 00:13:20,400 Sekarang ini terperinci di sini on line 18, kenapa Saya mengaku n atas ini keseluruhannya 303 00:13:20,400 --> 00:13:24,490 membina menggelung berbanding sebelah kepada 22 barisan di mana saya 304 00:13:24,490 --> 00:13:26,880 sebenarnya menjaga untuk mendapatkan n? 305 00:13:26,880 --> 00:13:27,330 Yeah? 306 00:13:27,330 --> 00:13:27,780 [Didengar] 307 00:13:27,780 --> 00:13:29,040 >> DAVID J. MALAN: Ya, jadi isu ini skop. 308 00:13:29,040 --> 00:13:30,850 Dan dalam jangka orang biasa, apakah skop merujuk kepada? 309 00:13:34,690 --> 00:13:36,610 Yeah? 310 00:13:36,610 --> 00:13:37,860 [Didengar] 311 00:13:40,040 --> 00:13:41,105 DAVID J. MALAN: Bolehkah anda bercakap sedikit lebih kuat? 312 00:13:41,105 --> 00:13:43,450 SPEAKER 1: Jika anda boleh mengakses pembolehubah tertentu. 313 00:13:43,450 --> 00:13:45,170 DAVID J. MALAN: Perfect. 314 00:13:45,170 --> 00:13:47,360 Di mana anda boleh mengakses pembolehubah tertentu. 315 00:13:47,360 --> 00:13:50,400 Dan secara amnya, kemestian setakat ini telah bahawa skop sesetengah 316 00:13:50,400 --> 00:13:55,860 pembolehubah ditakrifkan oleh pendakap kerinting yang paling terkini yang anda telah lihat. 317 00:13:55,860 --> 00:14:02,010 Dan demikian dalam kes ini, jika saya membuat kesilapan mengisytiharkan n on line 22, 318 00:14:02,010 --> 00:14:03,010 garis yang akan bekerja. 319 00:14:03,010 --> 00:14:10,990 Saya akan mendapat int, dan saya akan meletakkan ia ke dalam n yang berubah-ubah di baris 22. 320 00:14:10,990 --> 00:14:16,900 Tetapi yang baris kod sekarang akan tidak mempunyai idea apa yang saya bercakap tentang? 321 00:14:16,900 --> 00:14:22,650 Jadi, 25, dan ia ternyata 24, juga, kerana dalam kes ini, ia jatuh di luar 322 00:14:22,650 --> 00:14:23,610 pendakap kerinting. 323 00:14:23,610 --> 00:14:27,280 Jadi hanya sedikit kacau ganggu tetapi sangat mudah diselesaikan dengan hanya mengisytiharkan 324 00:14:27,280 --> 00:14:30,140 luar ubah fungsi sendiri. 325 00:14:30,140 --> 00:14:32,600 >> Sekarang kita akan melihat lewat hari ini, anda boleh pergi satu langkah ke hadapan. 326 00:14:32,600 --> 00:14:34,860 Dan anda juga boleh mendapatkan sedikit malas - 327 00:14:34,860 --> 00:14:37,320 dan ini tidak akan disyorkan, secara umum - 328 00:14:37,320 --> 00:14:42,260 tetapi anda juga boleh mendapatkan malas dan meletakkan pembolehubah global, jadi untuk bercakap, tidak 329 00:14:42,260 --> 00:14:46,670 di dalam fungsi, tidak di dalam gelung, tetapi dalam fail itu sendiri, di luar 330 00:14:46,670 --> 00:14:49,600 semua fungsi yang anda telah ditulis, seperti yang saya lakukan di sini on line 15. 331 00:14:49,600 --> 00:14:51,160 Tetapi ini umumnya disukai. 332 00:14:51,160 --> 00:14:55,680 Tetapi menyedari ini adalah kadang-kadang penyelesaian kepada masalah-masalah lain, kami akan 333 00:14:55,680 --> 00:14:56,620 akhirnya lihat. 334 00:14:56,620 --> 00:14:58,130 Jadi untuk sekarang, kita akan meninggalkan ia seperti ini. 335 00:14:58,130 --> 00:15:01,030 Tetapi mari kita lihat jika kita boleh menulis semula ini hanya untuk mula menyatakan diri kita 336 00:15:01,030 --> 00:15:01,990 sedikit berbeza. 337 00:15:01,990 --> 00:15:05,330 >> Jadi program ini, hanya perlu jelas, adalah positive1. 338 00:15:05,330 --> 00:15:11,810 Biar saya teruskan di sini dan dalam tetingkap terminal saya membuat positive1, Masukkan. 339 00:15:11,810 --> 00:15:12,740 Menyusun, okay. 340 00:15:12,740 --> 00:15:14,910 Saya akan untuk menjalankan positive1, tekan Enter. 341 00:15:14,910 --> 00:15:16,820 Saya menuntut bahawa anda memberi saya integer positif. 342 00:15:16,820 --> 00:15:18,260 Saya akan mengatakan -1. 343 00:15:18,260 --> 00:15:18,910 Yang tidak bekerja. 344 00:15:18,910 --> 00:15:22,150 0, 99, yang seolah-olah untuk bekerja. 345 00:15:22,150 --> 00:15:23,570 Mungkin bukan ujian paling ketat. 346 00:15:23,570 --> 00:15:26,480 Tetapi sekurang-kurangnya ia adalah cek kewarasan baik bahawa kita berada di landasan yang betul. 347 00:15:26,480 --> 00:15:29,240 Jadi sekarang mari saya pergi ke hadapan dan membuka versi dua ini. 348 00:15:29,240 --> 00:15:32,500 Dan apa yang berbeza sudah? 349 00:15:32,500 --> 00:15:35,140 Ia melaksanakan perkara yang sama. 350 00:15:35,140 --> 00:15:40,660 Tetapi apa yang melompat keluar sebagai jelas berbeza masa ini? 351 00:15:40,660 --> 00:15:42,560 Ya, jadi ini bool hijau. 352 00:15:42,560 --> 00:15:45,980 Gedit telah menekankan kata kunci hijau ini dikenali sebagai bool, 353 00:15:45,980 --> 00:15:47,000 yang merupakan jenis data. 354 00:15:47,000 --> 00:15:51,080 Ia tidak datang dibina dalam semua versi C. Anda perlu termasuk 355 00:15:51,080 --> 00:15:52,010 perpustakaan khusus. 356 00:15:52,010 --> 00:15:54,770 Dalam kes kami, saya termasuk perpustakaan CS50 supaya kita 357 00:15:54,770 --> 00:15:56,460 mempunyai akses kepada bool. 358 00:15:56,460 --> 00:15:59,810 Tetapi di baris 18, kita seolah-olah mempunyai nilai Boolean sini dipanggil bersyukur. 359 00:15:59,810 --> 00:16:01,040 Jadi saya boleh dipanggil apa-apa ini. 360 00:16:01,040 --> 00:16:04,500 Tetapi saya dipanggil ia bersyukur hanya untuk jenis menyampaikan beberapa makna semantik. 361 00:16:04,500 --> 00:16:07,930 Jadi pada mulanya on line 18, saya nampaknya tidak bersyukur kerana 362 00:16:07,930 --> 00:16:12,150 Nilai bersyukur Boolean dimulakan palsu dalam 18 baris. 363 00:16:12,150 --> 00:16:16,890 Dan kemudian ia seolah-olah apa yang saya telah dilakukan di sini dalam barisan 21 melalui 23 saya baru sahaja 364 00:16:16,890 --> 00:16:18,610 jenis ditulis semula logik saya. 365 00:16:18,610 --> 00:16:21,020 Jadi tidak berfungsi berbeza. 366 00:16:21,020 --> 00:16:26,940 Tetapi dalam 22 baris sekarang, saya memeriksa jika int pengguna telah disediakan adalah lebih besar daripada 367 00:16:26,940 --> 00:16:31,120 0, maka saya hanya menukar nilai berterima kasih kepada true. 368 00:16:31,120 --> 00:16:32,290 Dan mengapa saya berbuat demikian? 369 00:16:32,290 --> 00:16:35,600 Kerana di baris 25, nampaknya, saya akan untuk memeriksa keadaan. 370 00:16:35,600 --> 00:16:39,380 Adakah gelung ini manakala bersyukur adalah palsu. 371 00:16:39,380 --> 00:16:43,610 >> Jadi saya mencadangkan ini sebagai alternatif kepada satu versi kerana ia sekurang-kurangnya 372 00:16:43,610 --> 00:16:45,130 sedikit lebih intuitif, mungkin. 373 00:16:45,130 --> 00:16:46,900 Ia adalah sedikit lebih mendalam dalam Bahasa Inggeris. 374 00:16:46,900 --> 00:16:51,710 Jadi melakukan perkara-perkara berikut semasa anda tidak bersyukur atau sementara bersyukur adalah palsu. 375 00:16:51,710 --> 00:16:55,890 Dan kali ini, terlalu, saya nampaknya tidak ingati apa yang pengguna ditaip 376 00:16:55,890 --> 00:16:57,730 dalam notis kerana tidak ada n ubah. 377 00:16:57,730 --> 00:16:58,650 Jadi sebenarnya, I - 378 00:16:58,650 --> 00:17:00,080 sedikit pembohongan di sana. 379 00:17:00,080 --> 00:17:02,770 Fungsi, program ini adalah sedikit berbeza sekali kita sampai ke bahagian bawah 380 00:17:02,770 --> 00:17:04,819 ia kerana saya tidak mengingati apa yang n. 381 00:17:04,819 --> 00:17:09,579 Tetapi saya mahu untuk menunjukkan di sini juga bahawa walaupun kita telah melihat GetInt dan 382 00:17:09,579 --> 00:17:13,920 GetString sedang digunakan pada sebelah kanan tanda yang sama setakat ini supaya 383 00:17:13,920 --> 00:17:17,160 kita ingat nilai teknikalnya, yang tidak tegas perlu. 384 00:17:17,160 --> 00:17:20,950 Jika atas apa jua sebab anda hanya tidak peduli untuk menyimpan nilai, anda hanya mahu 385 00:17:20,950 --> 00:17:25,710 untuk memeriksa nilai, notis bahawa kita hanya boleh menulis ini sebagai terbuka GetInt 386 00:17:25,710 --> 00:17:27,000 paren, paren rapat. 387 00:17:27,000 --> 00:17:30,460 Bahawa fungsi akan kembali nilai, seperti yang kita telah berkata. 388 00:17:30,460 --> 00:17:32,010 Ia akan memberi anda kembali int. 389 00:17:32,010 --> 00:17:36,450 Dan jadi jika anda mental memikirkan perkara ini berlaku, apabila saya menaip dalam 99, GetInt 390 00:17:36,450 --> 00:17:38,160 mengembalikan bilangan 99. 391 00:17:38,160 --> 00:17:41,330 Dan sebagainya konsep, ia seolah-olah kod saya sebenarnya ini. 392 00:17:41,330 --> 00:17:45,880 Jadi, jika 99 memang lebih besar daripada 0, maka bersyukur menjadi benar. 393 00:17:45,880 --> 00:17:50,420 Kemudian talian 25 sedar aduh, kita dilakukan kerana saya kini bersyukur. 394 00:17:50,420 --> 00:17:54,590 Dan di baris 26, kita hanya mengatakan, terima kasih untuk integer positif, apa sahaja yang ia 395 00:17:54,590 --> 00:17:55,710 kebetulan berada. 396 00:17:55,710 --> 00:17:58,900 >> Sekarang mari kita buat gula sintaktik sedikit di sini, jadi untuk bercakap. 397 00:17:58,900 --> 00:18:02,990 Mari kita lihat jika kita boleh membersihkan sehingga 25 ini selaras dengan varians ini ketiga dan terakhir 398 00:18:02,990 --> 00:18:04,640 dalam positive3. 399 00:18:04,640 --> 00:18:08,250 Jadi notis satunya perbezaan sekarang ialah apa baris kod? 400 00:18:11,930 --> 00:18:13,260 Ya, jadi 25. 401 00:18:13,260 --> 00:18:15,520 Dan kita telah tidak benar-benar melihat silap mata ini hanya lagi. 402 00:18:15,520 --> 00:18:19,510 Tetapi kita tidak melihat tanda seru pada hari Isnin, yang menandakan apa? 403 00:18:19,510 --> 00:18:20,970 Jadi tidak, atau penafian. 404 00:18:20,970 --> 00:18:23,460 Jadi mengambil nilai Boolean dan flip nilainya. 405 00:18:23,460 --> 00:18:24,390 Benar menjadi palsu. 406 00:18:24,390 --> 00:18:25,500 Palsu menjadi benar. 407 00:18:25,500 --> 00:18:28,910 Jadi ini, saya akan mencadangkan, adalah lebih sedikit lebih intuitif cara 408 00:18:28,910 --> 00:18:32,200 menulis kod kerana saya masih memulakan berterima kasih kepada palsu. 409 00:18:32,200 --> 00:18:33,530 Saya masih melakukan yang berikut. 410 00:18:33,530 --> 00:18:35,700 Saya menetapkan berterima kasih kepada true apabila tiba masanya. 411 00:18:35,700 --> 00:18:40,690 Tetapi kini anda boleh benar-benar hanya menterjemahkan kod ini secara lisan kiri ke kanan, 412 00:18:40,690 --> 00:18:42,550 manakala tidak bersyukur. 413 00:18:42,550 --> 00:18:46,170 Kerana bang, atau tanda seru, menandakan tanggapan tidak, jadi sementara 414 00:18:46,170 --> 00:18:47,010 tidak bersyukur. 415 00:18:47,010 --> 00:18:49,740 >> Jadi sekali lagi, kita tidak memperkenalkan sebarang konsep baru per se. 416 00:18:49,740 --> 00:18:53,230 Kami telah berbincang tentang Booleans kembali apabila kita bermain dengan Scratch. 417 00:18:53,230 --> 00:18:55,690 Tetapi sedar sekarang kita hanya boleh mula menulis kod kami di 418 00:18:55,690 --> 00:18:56,550 banyak cara yang berbeza. 419 00:18:56,550 --> 00:19:00,010 Jadi, terutamanya dalam pset1, jika anda jenis berjuang untuk memikirkan cara untuk 420 00:19:00,010 --> 00:19:03,400 menulis beberapa program, kemungkinan yang anda berada dalam nasib kerana ada akan menjadi apa-apa 421 00:19:03,400 --> 00:19:05,780 bilangan penyelesaian yang anda boleh berlaku ke atas. 422 00:19:05,780 --> 00:19:09,850 Sebagai contoh, ini adalah hanya tiga bagi walaupun yang paling mudah program. 423 00:19:09,850 --> 00:19:10,180 Semua hak. 424 00:19:10,180 --> 00:19:13,860 Dan sekarang ingat pada hari Isnin, kami meninggalkan pada nota ini dengan nilai-nilai pulangan. 425 00:19:13,860 --> 00:19:18,280 Jadi untuk kali pertama, kita menulis satu program yang tidak hanya mempunyai utama, 426 00:19:18,280 --> 00:19:22,240 ia juga mempunyai fungsi tersendiri adat yang saya tulis di sini. 427 00:19:22,240 --> 00:19:26,640 Jadi dalam 31 line melalui 34, saya telah melaksanakan fungsi kiub. 428 00:19:26,640 --> 00:19:27,800 Ia tidak kompleks. 429 00:19:27,800 --> 00:19:29,830 Ia hanya satu kali kali, dalam kes ini. 430 00:19:29,830 --> 00:19:34,920 Tetapi apa yang penting tentang adalah bahawa saya mengambil input dalam bentuk dan 431 00:19:34,920 --> 00:19:38,910 Saya kembali output dalam bentuk kali kali. 432 00:19:38,910 --> 00:19:43,940 >> Jadi sekarang saya mempunyai keupayaan, sama seperti saya digunakan untuk dengan printf sahaja, untuk memanggil 433 00:19:43,940 --> 00:19:47,120 fungsi ini dengan memanggil fungsi kiub. 434 00:19:47,120 --> 00:19:49,470 Dan fungsi kiub mengambil beberapa input. 435 00:19:49,470 --> 00:19:52,030 Dan fungsi kiub kembali beberapa output. 436 00:19:52,030 --> 00:19:56,660 Dan begitu sebaliknya, printf hanya melakukan sesuatu. 437 00:19:56,660 --> 00:19:59,490 Ia tidak kembali apa-apa yang kita mengambil berat tentang - walaupun, sebagai 438 00:19:59,490 --> 00:20:00,820 diketepikan, ia tidak mengembalikan nilai. 439 00:20:00,820 --> 00:20:02,650 Anda hanya umumnya mengabaikan ia. 440 00:20:02,650 --> 00:20:04,000 Printf hanya melakukan sesuatu. 441 00:20:04,000 --> 00:20:06,220 Ia mempunyai kesan sampingan percetakan skrin. 442 00:20:06,220 --> 00:20:09,480 Sebaliknya di sini, kita mempunyai fungsi kiub, yang 443 00:20:09,480 --> 00:20:11,400 sebenarnya mengembalikan sesuatu. 444 00:20:11,400 --> 00:20:12,960 >> Jadi ini adalah umumnya - 445 00:20:12,960 --> 00:20:15,260 bagi mereka yang biasa dengan ini, ia adalah satu idea yang agak mudah. 446 00:20:15,260 --> 00:20:18,460 Tetapi bagi mereka yang kurang biasa dengan idea ini lulus dalam input dan mendapat 447 00:20:18,460 --> 00:20:21,700 output belakang, mari kita cuba hanya sesuatu yang mudah super. 448 00:20:21,700 --> 00:20:25,180 Adakah sesiapa yang selesa datang di atas pentas secara ringkas? 449 00:20:25,180 --> 00:20:27,460 Anda perlu selesa dengan kamera pada anda, serta. 450 00:20:27,460 --> 00:20:27,640 Yeah. 451 00:20:27,640 --> 00:20:28,610 Okay, apa nama anda? 452 00:20:28,610 --> 00:20:29,020 KEN: Ken. 453 00:20:29,020 --> 00:20:29,420 DAVID J. MALAN: Ken. 454 00:20:29,420 --> 00:20:29,810 Baiklah, Ken. 455 00:20:29,810 --> 00:20:31,060 Datang di atas. 456 00:20:31,060 --> 00:20:34,660 Jadi Ken akan menjadi fungsi kejayaannya di sini. 457 00:20:34,660 --> 00:20:35,760 Dan mari kita pergi ke hadapan dan melakukan ini. 458 00:20:35,760 --> 00:20:38,790 Mari kita mendapat mewah sedikit. 459 00:20:38,790 --> 00:20:39,770 Nice to meet you. 460 00:20:39,770 --> 00:20:41,010 Selamat datang ke peringkat pusat. 461 00:20:41,010 --> 00:20:41,980 Semua hak. 462 00:20:41,980 --> 00:20:45,590 Mari kita memukul butang ini di sini. 463 00:20:45,590 --> 00:20:46,420 Semua hak. 464 00:20:46,420 --> 00:20:49,490 Jadi di sini anda mempunyai papan hitam yang moden. 465 00:20:49,490 --> 00:20:53,050 Dan apa yang saya adalah fungsi utama, misalnya. 466 00:20:53,050 --> 00:20:55,990 Dan saya tidak mempunyai iPad dalam tangan saya. 467 00:20:55,990 --> 00:20:59,000 Saya tidak benar-benar ingat bagaimana - baik, sebenarnya, tidak boleh mengatakan bahawa. 468 00:20:59,000 --> 00:21:02,200 Saya tidak benar-benar mempunyai tulisan tangan yang baik. 469 00:21:02,200 --> 00:21:05,260 Dan sebagainya Oleh itu, saya mahu anda untuk mencetak sesuatu pada skrin bagi saya. 470 00:21:05,260 --> 00:21:07,470 >> Jadi saya menjadi program utama. 471 00:21:07,470 --> 00:21:15,060 Dan saya akan mempunyai anda katakan ini dengan menulis ia dalam calar ayam saya dan 472 00:21:15,060 --> 00:21:16,600 maka lulus anda input. 473 00:21:16,600 --> 00:21:20,000 Jadi bodoh walaupun latihan ini adalah, tanggapan fungsi dan memanggil 474 00:21:20,000 --> 00:21:22,260 fungsi dan mengembalikan fungsi benar-benar bisul turun ini. 475 00:21:22,260 --> 00:21:23,120 Saya utama. 476 00:21:23,120 --> 00:21:26,270 Saya baru sahaja ditulis printf ("sesuatu") pada skrin. 477 00:21:26,270 --> 00:21:27,470 Saya menjalankan program ini. 478 00:21:27,470 --> 00:21:30,900 Dan secepat printf mendapat dipanggil, ia mengambil satu hujah - atau satu parameter, 479 00:21:30,900 --> 00:21:31,660 kadang-kadang - 480 00:21:31,660 --> 00:21:32,780 antara petikan berganda. 481 00:21:32,780 --> 00:21:33,960 Berikut adalah hujah itu. 482 00:21:33,960 --> 00:21:35,740 Saya lulus ia ke Ken. 483 00:21:35,740 --> 00:21:39,390 Sekarang dia adalah sebuah kotak hitam yang ditulis beberapa beberapa tahun yang lalu yang nampaknya 484 00:21:39,390 --> 00:21:41,070 hanya tahu bagaimana untuk mencetak perkara pada skrin. 485 00:21:41,070 --> 00:21:42,320 >> Jadi, melaksanakan. 486 00:21:48,842 --> 00:21:49,900 Itu bukan buruk. 487 00:21:49,900 --> 00:21:50,890 Jadi, sangat baik. 488 00:21:50,890 --> 00:21:52,900 Jadi sekarang Ken dilakukan melaksanakan. 489 00:21:52,900 --> 00:21:55,810 Adakah dia perlu menyerahkan saya kembali apa-apa? 490 00:21:55,810 --> 00:21:57,240 Jadi tidak bahawa kita telah melihat setakat ini. 491 00:21:57,240 --> 00:21:59,230 Sekali lagi, printf tidak sebenarnya mengembalikan nombor. 492 00:21:59,230 --> 00:22:01,640 Tetapi kita akan mengabaikan bahawa buat masa sekarang kerana kita tidak pernah digunakan. 493 00:22:01,640 --> 00:22:03,400 Jadi itulah untuk Ken. 494 00:22:03,400 --> 00:22:06,650 Dan jadi sekarang utama datang kembali untuk melaksanakan - 495 00:22:06,650 --> 00:22:09,630 utama mengambil alih kawalan program lagi kerana bahawa baris kod, 496 00:22:09,630 --> 00:22:11,010 printf, dilakukan melaksanakan. 497 00:22:11,010 --> 00:22:13,890 Dan kita pergi tentang cara melaksanakan apa garisan lain terdapat. 498 00:22:13,890 --> 00:22:14,130 >> Semua hak. 499 00:22:14,130 --> 00:22:17,080 Jadi sekarang mari kita cuba satu contoh yang sedikit berbeza. 500 00:22:17,080 --> 00:22:22,430 Dan kali ini di sini, mari kita mula-mula mengosongkan skrin di sini. 501 00:22:22,430 --> 00:22:24,670 Dan kali ini, kita akan melakukan fungsi cubing. 502 00:22:24,670 --> 00:22:27,350 Tetapi kali ini, saya menjangkakan nilai output. 503 00:22:27,350 --> 00:22:28,630 Jadi mari kita pergi ke hadapan dan melakukan ini. 504 00:22:28,630 --> 00:22:35,680 Jadi sekarang saya mempunyai satu baris kod yang mengatakan x kiub = (x). 505 00:22:35,680 --> 00:22:36,930 Jadi sebenarnya let's - 506 00:22:41,450 --> 00:22:43,940 baris kod, ingat, kelihatan seperti ini. 507 00:22:43,940 --> 00:22:45,960 x kiub = (x). 508 00:22:45,960 --> 00:22:48,100 Jadi bagaimana ini akan bekerja? 509 00:22:48,100 --> 00:22:50,820 Jadi mari kita pergi ke hadapan dan memberikan anda skrin putih lagi. 510 00:22:50,820 --> 00:22:55,000 Dan saya akan menulis sekarang turun nilai x, yang pada masa ini dalam 511 00:22:55,000 --> 00:23:01,080 masa berlaku untuk, katakan, 2, untuk memastikan ia mudah. 512 00:23:01,080 --> 00:23:04,890 Jadi saya telah diturunkan di atas sekeping kertas nilai 2, 513 00:23:04,890 --> 00:23:06,100 yang merupakan nilai x saya. 514 00:23:06,100 --> 00:23:08,250 Saya menyerahkannya kepada Ken. 515 00:23:08,250 --> 00:23:09,200 KEN: Dan saya hanya menulis jawapannya? 516 00:23:09,200 --> 00:23:12,660 DAVID J. MALAN: Ya, mari kita hanya menulis jawapannya. 517 00:23:12,660 --> 00:23:13,030 Okay. 518 00:23:13,030 --> 00:23:16,280 Dan kini dia telah kembali saya sesuatu. 519 00:23:16,280 --> 00:23:17,560 Jadi - 520 00:23:17,560 --> 00:23:18,170 sempurna. 521 00:23:18,170 --> 00:23:18,840 Nice segue. 522 00:23:18,840 --> 00:23:21,970 >> Jadi sekarang dia tangan saya kembali nilai 8, dalam kes ini. 523 00:23:21,970 --> 00:23:23,220 Dan apa yang saya lakukan dengan ia? 524 00:23:23,220 --> 00:23:26,130 Well, sebenarnya, mari kita lihat. 525 00:23:26,130 --> 00:23:26,640 Dapatkan hak ini. 526 00:23:26,640 --> 00:23:27,880 Apa yang saya akan lakukan dengan ia? 527 00:23:27,880 --> 00:23:31,900 Sekarang saya akan mengambil nilai ini dan sebenarnya menyimpan ia dalam orang-orang 528 00:23:31,900 --> 00:23:33,400 bit sama dalam ingatan. 529 00:23:33,400 --> 00:23:35,030 Tetapi notis, aku jenis berjuang di sini. 530 00:23:35,030 --> 00:23:38,280 Saya sedikit keliru kerana di mana saya sebenarnya menulis nilai x? 531 00:23:38,280 --> 00:23:41,840 Kerana apa yang saya baru sahaja dilakukan secara fizikal tangan Ken sehelai kertas 532 00:23:41,840 --> 00:23:44,400 yang mempunyai nilai 2, yang x. 533 00:23:44,400 --> 00:23:46,300 Dan sesungguhnya, itulah sebenarnya apa yang berlaku. 534 00:23:46,300 --> 00:23:50,100 Jadi ternyata bahawa apabila anda memanggil fungsi, dan anda lulus dalam hujah 535 00:23:50,100 --> 00:23:54,130 seperti "hello dunia" atau anda lulus dalam hujah seperti 2, secara amnya, anda 536 00:23:54,130 --> 00:23:56,720 lulus dalam salinan hujah itu. 537 00:23:56,720 --> 00:24:01,020 Dan sebagainya hanya kerana saya menulis nombor 2 di sini dan menyerahkan kepada Ken; yang mesti 538 00:24:01,020 --> 00:24:04,760 bermakna bahawa saya masih ada satu salinan daripada 2 nilai tempat. 539 00:24:04,760 --> 00:24:08,140 Kerana sesungguhnya, sekarang bahawa saya telah mendapat kembali nilai 8, saya perlu kembali dalam 540 00:24:08,140 --> 00:24:12,010 RAM dan sebenarnya menulis 8 di mana saya pernah nombor 2. 541 00:24:12,010 --> 00:24:15,720 >> Jadi visual ingat ini tanggapan lulus dalam literal 542 00:24:15,720 --> 00:24:16,730 salinan nilai. 543 00:24:16,730 --> 00:24:19,570 Ken melakukan perkara itu, tangan saya kembali sesuatu - dalam kes ini, 544 00:24:19,570 --> 00:24:20,820 nilai seperti 8. 545 00:24:20,820 --> 00:24:22,660 Dan kemudian saya perlu melakukan sesuatu dengan nilai yang jika saya 546 00:24:22,660 --> 00:24:24,880 mahu memastikan ia sekitar. 547 00:24:24,880 --> 00:24:29,470 Jadi semua ini akan semua terlalu biasa tidak lama lagi. 548 00:24:29,470 --> 00:24:33,082 Thank you so much untuk demo ini di sini, Ken. 549 00:24:33,082 --> 00:24:34,820 Semua hak. 550 00:24:34,820 --> 00:24:36,720 Sangat baik dilakukan. 551 00:24:36,720 --> 00:24:40,610 Jadi mari kita lihat bagaimana yang akhirnya berkaitan dengan beberapa fungsi 552 00:24:40,610 --> 00:24:42,270 memanggil yang kita telah lakukan di sini. 553 00:24:42,270 --> 00:24:47,610 Jadi biarlah saya pergi ke hadapan dan membawa kita kembali kepada contoh cubing di sini. 554 00:24:47,610 --> 00:24:53,080 Dan melihat bahawa jika kita mahu sebenarnya mula mengambil ini dengan lebih lanjut, kita akan 555 00:24:53,080 --> 00:24:57,050 perlu sedar hakikat bahawa nombor x yang diluluskan dalam 556 00:24:57,050 --> 00:25:01,390 di sini adalah berbeza daripada apa yang sebenarnya sedang berpindah ke fungsi. 557 00:25:01,390 --> 00:25:03,940 Jadi sekali lagi, ini diluluskan oleh salinan akan menjadi agak 558 00:25:03,940 --> 00:25:05,620 yg dalam hanya seketika. 559 00:25:05,620 --> 00:25:09,320 >> Jadi mari kita melihat sesuatu yang tidak cukup berfungsi dengan betul lagi. 560 00:25:09,320 --> 00:25:11,790 Saya akan pergi ke hadapan dan membuka contoh buggy ketiga, yang 561 00:25:11,790 --> 00:25:13,560 tercacat oleh alam semula jadi. 562 00:25:13,560 --> 00:25:18,070 Dan ia dipanggil buggy3, dan ia melaksanakan fungsi bertukar-tukar. 563 00:25:18,070 --> 00:25:23,500 Jadi di sini kita mempunyai fungsi utama yang telah x dan y sewenang-wenangnya dimulakan untuk 564 00:25:23,500 --> 00:25:24,720 1 dan 2, masing-masing. 565 00:25:24,720 --> 00:25:27,590 Kita boleh menggunakan GetInt, tetapi kita hanya perlu senaman mudah. 566 00:25:27,590 --> 00:25:29,680 Jadi ia sukar dikodkan sebagai 1 dan 2. 567 00:25:29,680 --> 00:25:35,330 Dalam baris 21 dan 22, kita nampaknya mencetak x dan y, satu per baris. 568 00:25:35,330 --> 00:25:39,620 Kemudian, pada 23 baris, saya mendakwa saya bertukar-tukar nilai-nilai ini, dot, dot, dot. 569 00:25:39,620 --> 00:25:43,030 Saya nampaknya memanggil fungsi dalam 24 baris dipanggil swap 570 00:25:43,030 --> 00:25:44,000 yang mengambil dua hujah. 571 00:25:44,000 --> 00:25:46,430 Ia adalah benar-benar legit untuk fungsi untuk mengambil dua hujah. 572 00:25:46,430 --> 00:25:48,220 Kami telah melihat printf melakukannya sudah. 573 00:25:48,220 --> 00:25:50,370 Jadi swap nampaknya mengambil x dan y. 574 00:25:50,370 --> 00:25:53,010 Dan seperti namanya, saya akan berharap bahawa ia akan 575 00:25:53,010 --> 00:25:54,320 menukar kedua-dua nilai. 576 00:25:54,320 --> 00:25:57,560 Jadi maka saya menuntut on line 25, bertukar. 577 00:25:57,560 --> 00:26:01,570 Dan saya mencetak semula x dan y di bawah andaian bahawa 578 00:26:01,570 --> 00:26:02,830 Sesungguhnya mereka telah telah bertukar. 579 00:26:02,830 --> 00:26:04,370 Tetapi jika saya benar-benar menjalankan program ini - 580 00:26:04,370 --> 00:26:06,060 izinkan saya membuka tetingkap terminal. 581 00:26:06,060 --> 00:26:07,750 Mari saya membuat buggy3. 582 00:26:07,750 --> 00:26:09,970 Seperti namanya, ini tidak akan berakhir dengan baik. 583 00:26:09,970 --> 00:26:14,690 Kerana apabila saya tekan Enter, notis bahawa x ialah 1. 584 00:26:14,690 --> 00:26:15,720 y ialah 2. 585 00:26:15,720 --> 00:26:19,160 Dan lagi pada akhir program, mereka masih, pada hakikatnya, yang sama. 586 00:26:19,160 --> 00:26:22,760 >> Jadi berdasarkan demonstrasi tadi dengan Ken, apa yang sebenarnya berlaku? 587 00:26:22,760 --> 00:26:24,660 Nah, mari kita menyelam ke dalam fungsi swap ini. 588 00:26:24,660 --> 00:26:25,800 Ia adalah super pendek. 589 00:26:25,800 --> 00:26:28,020 Ia hanya beberapa baris kod lama. 590 00:26:28,020 --> 00:26:32,810 Tetapi apa masalah asas yang berdasarkan cerita yang mudah diberitahu 591 00:26:32,810 --> 00:26:34,270 di sini dengan Ken? 592 00:26:34,270 --> 00:26:36,115 Mengapa swap rosak? 593 00:26:36,115 --> 00:26:37,365 [Didengar] 594 00:26:39,840 --> 00:26:40,460 Tepat sekali. 595 00:26:40,460 --> 00:26:43,610 Jadi kita sedang menyimpan salinan, bukan pembolehubah sendiri. 596 00:26:43,610 --> 00:26:46,810 Dalam erti kata lain, swap nampaknya mengambil dua hujah, int. 597 00:26:46,810 --> 00:26:49,370 Dan ia sewenang-wenangnya dipanggil a dan b. 598 00:26:49,370 --> 00:26:54,430 Dan di sini, saya telah lulus dalam x dan y, yang masing-masing 1 dan 2. 599 00:26:54,430 --> 00:26:56,580 Tetapi saya tidak benar-benar lulus dalam x. 600 00:26:56,580 --> 00:26:58,410 Saya tidak benar-benar lulus dalam y. 601 00:26:58,410 --> 00:27:01,230 Saya lulus satu salinan x dan salinan y. 602 00:27:01,230 --> 00:27:05,180 Ia seperti hampir seolah-olah anda disalin dan ditampal ke dalam menukar nilai-nilai yang 603 00:27:05,180 --> 00:27:07,440 anda mahu ia untuk benar-benar memanipulasi. 604 00:27:07,440 --> 00:27:11,970 Jadi, jika itulah kes, apabila saya, program, mula melaksanakan 605 00:27:11,970 --> 00:27:14,140 line 35, kemudian 36 - 606 00:27:14,140 --> 00:27:17,740 apabila saya sampai ke garis 37, pada ketika ini dalam cerita, apakah nilai? 607 00:27:20,740 --> 00:27:24,850 Pada ketika ini dalam cerita, line 37, apakah nilai pada ketika ini? 608 00:27:24,850 --> 00:27:25,980 Jadi ia hanya perlu 1. 609 00:27:25,980 --> 00:27:26,170 Betul? 610 00:27:26,170 --> 00:27:29,100 Kerana x telah diluluskan pada sebagai hujah pertama. 611 00:27:29,100 --> 00:27:33,150 Dan fungsi ini hanya sewenang-wenangnya memanggil hujah pertama, a. 612 00:27:33,150 --> 00:27:35,130 Begitu juga adalah y, hujah kedua. 613 00:27:35,130 --> 00:27:37,930 Dan ia hanya sewenang-wenangnya memanggil b Hujah kedua. 614 00:27:37,930 --> 00:27:40,510 >> Sekarang dikotomi ini sebenarnya agak hanya dijelaskan. 615 00:27:40,510 --> 00:27:40,880 Fikirkanlah. 616 00:27:40,880 --> 00:27:42,980 Tiada seorang pun daripada kami telah bertemu dengan orang yang menulis printf. 617 00:27:42,980 --> 00:27:49,880 Jadi, sudah tentu, dia tidak mempunyai idea apa pembolehubah kami 30 tahun kemudian akan 618 00:27:49,880 --> 00:27:50,710 untuk dipanggil. 619 00:27:50,710 --> 00:27:55,110 Jadi perlu ada perbezaan antara apa yang anda memanggil pembolehubah dalam 620 00:27:55,110 --> 00:27:59,960 fungsi yang anda menulis dan apa yang anda memanggil pembolehubah dalam fungsi anda 621 00:27:59,960 --> 00:28:01,770 memanggil atau menggunakan. 622 00:28:01,770 --> 00:28:05,120 Jadi dalam erti kata lain, saya telah menulis pembolehubah saya sebagai x dan y. 623 00:28:05,120 --> 00:28:08,060 Tetapi jika orang lain telah menulis fungsi swap, dia pasti 624 00:28:08,060 --> 00:28:10,480 tidak akan tahu apa pembolehubah saya akan dipanggil. 625 00:28:10,480 --> 00:28:13,850 Jadi sedar bahawa ini adalah mengapa anda perlu berbelah bahagi ini nama. 626 00:28:13,850 --> 00:28:16,800 Secara teknikalnya, saya boleh melakukan ini secara kebetulan. 627 00:28:16,800 --> 00:28:19,750 Tetapi mereka masih akan lulus sebagai salinan. 628 00:28:19,750 --> 00:28:22,940 Ia hanya akan menjadi satu kebetulan tulen estetik jika orang itu yang menulis 629 00:28:22,940 --> 00:28:25,590 swap telah menggunakan nama yang sama. 630 00:28:25,590 --> 00:28:25,930 >> Semua hak. 631 00:28:25,930 --> 00:28:29,010 Jadi pada ketika ini dalam cerita, line 37, adalah 1. 632 00:28:29,010 --> 00:28:30,410 b ialah 2. 633 00:28:30,410 --> 00:28:32,040 Dan sekarang saya meneruskan untuk menukar mereka. 634 00:28:32,040 --> 00:28:34,730 Well, pertama sekali, izinkan saya sebenarnya melakukan ini lebih hanya. 635 00:28:34,730 --> 00:28:36,500 Saya tidak tahu apa yang mereka tiga baris kod telah lakukan. 636 00:28:36,500 --> 00:28:37,370 Biarkan saya hanya melakukan ini. 637 00:28:37,370 --> 00:28:38,850 b mendapat. 638 00:28:38,850 --> 00:28:40,170 mendapat b. 639 00:28:40,170 --> 00:28:41,450 Selesai. 640 00:28:41,450 --> 00:28:43,540 Mengapa ini pecah, secara logiknya? 641 00:28:46,980 --> 00:28:48,590 Ia adalah jenis perkara yang intuitif, bukan? 642 00:28:48,590 --> 00:28:50,640 Jadi menjadi b. 643 00:28:50,640 --> 00:28:52,450 Dan b menjadi. 644 00:28:52,450 --> 00:28:55,410 Tetapi masalahnya ialah bahawa secepat line 37 melaksanakan, apa 645 00:28:55,410 --> 00:28:58,170 nilai a dan b? 646 00:28:58,170 --> 00:28:59,070 Yang sama, 1. 647 00:28:59,070 --> 00:29:03,460 Kerana anda telah clobbered, jadi untuk bercakap, anda telah mengubah b menyamai. 648 00:29:03,460 --> 00:29:06,000 Jadi, apabila talian 37 dilaksanakan, itulah besar. 649 00:29:06,000 --> 00:29:09,940 Anda kini mempunyai dua salinan nombor 1 di dalam fungsi ini. 650 00:29:09,940 --> 00:29:14,720 Jadi maka apabila kamu katakan di baris 38, mendapat b, baik, anda jenis diskru. 651 00:29:14,720 --> 00:29:17,370 Kerana anda hanya memberikan 1-1. 652 00:29:17,370 --> 00:29:20,400 Anda telah jenis kehilangan nilai yang anda mengambil berat tentang. 653 00:29:20,400 --> 00:29:22,910 >> Jadi, dalam versi asal ini, notis apa yang saya lakukan. 654 00:29:22,910 --> 00:29:26,620 Saya bukannya mempunyai barisan ketiga kod yang kelihatan seperti ini. 655 00:29:26,620 --> 00:29:29,910 Saya mengisytiharkan pembolehubah sementara - tmp adalah nama yang sangat biasa 656 00:29:29,910 --> 00:29:31,240 bagi pembolehubah sementara. 657 00:29:31,240 --> 00:29:34,280 Ia adalah int kerana ia mempunyai untuk memadankan apa yang saya mahu untuk membuat salinan. 658 00:29:34,280 --> 00:29:39,720 Saya menyimpan satu salinan dalam satu tmp. Jadi, apabila talian 37 telah dilaksanakan, 659 00:29:39,720 --> 00:29:41,390 nilai a adalah - 660 00:29:41,390 --> 00:29:42,970 kewarasan cepat daftar 661 00:29:42,970 --> 00:29:43,460 1. 662 00:29:43,460 --> 00:29:45,780 Nilai b ialah 2. 663 00:29:45,780 --> 00:29:48,470 Dan nilai tmp adalah juga 1. 664 00:29:48,470 --> 00:29:51,470 Jadi sekarang saya melaksanakan garis 38. 665 00:29:51,470 --> 00:29:57,180 Jadi, sekali line 38 melaksanakan, mengambil nilai b. 666 00:29:57,180 --> 00:29:58,510 Dan b ialah 2. 667 00:29:58,510 --> 00:30:00,500 Jadi kini 2. 668 00:30:00,500 --> 00:30:03,110 Jadi pada ketika ini dalam cerita, adalah 2, b 2, 669 00:30:03,110 --> 00:30:05,130 dan tmp adalah 1. 670 00:30:05,130 --> 00:30:09,330 Jadi sekarang secara logik, kita boleh nilai hanya tmp mencebur ke dalam b. 671 00:30:09,330 --> 00:30:10,690 Dan kami sudah selesai. 672 00:30:10,690 --> 00:30:12,170 >> Jadi kita telah menyelesaikan masalah itu. 673 00:30:12,170 --> 00:30:16,040 Malangnya, apabila saya menjalankan program ini di dalam borang ini, ia tidak sebenarnya swap 674 00:30:16,040 --> 00:30:17,700 apa-apa nilai. 675 00:30:17,700 --> 00:30:18,950 Tetapi untuk menjadi jelas, mengapa? 676 00:30:23,420 --> 00:30:26,310 Saya tetap masalah logik daripada hanya seketika lalu. 677 00:30:26,310 --> 00:30:31,150 Tetapi sekali lagi, jika saya menjalankan program ini, x dan y kekal tidak berubah menjelang akhir 678 00:30:31,150 --> 00:30:33,834 pelaksanaan program ini. 679 00:30:33,834 --> 00:30:34,760 [Didengar] 680 00:30:34,760 --> 00:30:36,030 DAVID J. MALAN: Jadi kita telah tidak dikembalikan apa-apa. 681 00:30:36,030 --> 00:30:36,960 Jadi yang benar. 682 00:30:36,960 --> 00:30:39,880 , Tetapi ternyata ada sedikit masalah di sini kerana setakat 683 00:30:39,880 --> 00:30:42,460 satunya perkara yang kita telah dapat kembali adalah satu perkara. 684 00:30:42,460 --> 00:30:46,540 Dan ini adalah satu sekatan C. Anda hanya boleh kembali benar-benar satu nilai, 685 00:30:46,540 --> 00:30:48,970 di mana, saya jenis terperangkap di sini 686 00:30:48,970 --> 00:30:51,805 kerana saya dapat kembali nilai baru x atau saya boleh memulangkan 687 00:30:51,805 --> 00:30:53,160 nilai baru y. 688 00:30:53,160 --> 00:30:54,330 Tetapi saya mahu kedua-dua belakang. 689 00:30:54,330 --> 00:30:58,010 Jadi kembali tidak penyelesaian yang mudah di sini. 690 00:30:58,010 --> 00:30:59,770 Tetapi masalah yang asasnya ialah, mengapa? 691 00:30:59,770 --> 00:31:03,270 Apa yang telah kita sebenarnya bertukar? 692 00:31:03,270 --> 00:31:04,010 a dan b. 693 00:31:04,010 --> 00:31:07,670 Tetapi a dan b adalah salinan x dan y, yang bermakna kita hanya melakukan semua ini 694 00:31:07,670 --> 00:31:10,080 bekerja - kita hanya dibelanjakan seperti tiga minit bercakap mengenai swap 695 00:31:10,080 --> 00:31:11,680 fungsi dan ketiga-tiga pembolehubah ini. 696 00:31:11,680 --> 00:31:15,090 Dan yang hebat, sempurna betul dalam pengasingan. 697 00:31:15,090 --> 00:31:20,230 Tetapi dan skop b sahaja dalam ayat-ayat ini di sini. 698 00:31:20,230 --> 00:31:24,130 Jadi, seperti gelung, jika anda mengisytiharkan integer i bahagian dalam untuk 699 00:31:24,130 --> 00:31:27,400 gelung - sama, jika anda sedang mengisytiharkan a dan b dalam sesuatu fungsi yang 700 00:31:27,400 --> 00:31:30,550 anda telah ditulis, mereka hanya dalam sah fungsi itu. 701 00:31:30,550 --> 00:31:35,020 Yang bermaksud secepat swap dilakukan melaksanakan dan kita pergi dari 24 baris kepada 702 00:31:35,020 --> 00:31:38,380 line 25, x dan y tidak pernah berubah sama sekali. 703 00:31:38,380 --> 00:31:42,580 Anda hanya membazirkan banyak keseluruhan masa bertukar-tukar salinan pembolehubah. 704 00:31:42,580 --> 00:31:46,490 >> Jadi ternyata bahawa penyelesaian untuk ini sebenarnya tidak jelas. 705 00:31:46,490 --> 00:31:49,210 Ia tidak cukup mencukupi untuk mengembalikan nilai kerana kita boleh 706 00:31:49,210 --> 00:31:50,320 hanya memulangkan satu nilai. 707 00:31:50,320 --> 00:31:53,370 Dan saya benar-benar mahu untuk menukar kedua-dua x dan y pada masa yang sama. 708 00:31:53,370 --> 00:31:55,020 Jadi, kita akan kembali kepada ini. 709 00:31:55,020 --> 00:31:58,770 Tetapi untuk sekarang, menyedari bahawa isu asasnya berasal dari fakta 710 00:31:58,770 --> 00:32:00,660 a dan b adalah salinan. 711 00:32:00,660 --> 00:32:03,450 Dan mereka adalah dalam skop mereka sendiri. 712 00:32:03,450 --> 00:32:04,980 Nah, mari kita cuba untuk menyelesaikan masalah ini dalam beberapa cara. 713 00:32:04,980 --> 00:32:09,200 Biar saya sebenarnya tatal kembali ke sini dan membuka, katakan, varian keempat 714 00:32:09,200 --> 00:32:11,170 ini, buggy4. 715 00:32:11,170 --> 00:32:13,230 Dan apa tentang perkara ini? 716 00:32:13,230 --> 00:32:16,690 Ini adalah masalah yang serupa tetapi mudah untuk melihat sebelum kita mengambil menikam di 717 00:32:16,690 --> 00:32:17,530 menghuraikannya. 718 00:32:17,530 --> 00:32:19,440 Program ini dipanggil kenaikan. 719 00:32:19,440 --> 00:32:24,320 Dan ia nampaknya initializes integer x 1 di baris 18. 720 00:32:24,320 --> 00:32:25,950 Saya kemudian mendakwa x ialah 1. 721 00:32:25,950 --> 00:32:28,020 Saya kemudian tuntutan incrementing, dot, dot, dot. 722 00:32:28,020 --> 00:32:29,460 Saya kemudian memanggil kenaikan. 723 00:32:29,460 --> 00:32:33,480 Tetapi kemudian dalam baris 22 dan 23, saya menuntut ia telah incremented. 724 00:32:33,480 --> 00:32:37,780 Saya mendakwa x ialah kini apa pun, 2 mungkin. 725 00:32:37,780 --> 00:32:39,770 >> Tetapi program ini adalah kereta. 726 00:32:39,770 --> 00:32:41,020 Apa masalah? 727 00:32:43,450 --> 00:32:44,418 Yeah? 728 00:32:44,418 --> 00:32:45,668 [Didengar] 729 00:32:49,260 --> 00:32:49,850 DAVID J. MALAN: Tepat sekali. 730 00:32:49,850 --> 00:32:52,430 Jadi x telah menyatakan dengan jelas on line 18. 731 00:32:52,430 --> 00:32:54,410 Itu adalah di dalam pendakap kerinting utama. 732 00:32:54,410 --> 00:32:58,470 Jadi jawapan yang mudah di sini adalah bahawa, baik, x wujud di sini. 733 00:32:58,470 --> 00:33:01,510 Ia tidak wujud dalam 32 baris. 734 00:33:01,510 --> 00:33:03,710 Jadi program ini sebenarnya bahkan tidak akan menyusun. 735 00:33:03,710 --> 00:33:07,910 Pengkompil, apabila saya cuba menyusun kod ini, akan menjerit pada saya 736 00:33:07,910 --> 00:33:13,190 tentang beberapa pengecam yang tidak diisytiharkan atau sesuatu yang bermaksud sedemikian. 737 00:33:13,190 --> 00:33:13,870 Malah, mari kita cuba. 738 00:33:13,870 --> 00:33:15,235 Ini adalah membuat buggy4. 739 00:33:17,780 --> 00:33:18,190 Sana ia. 740 00:33:18,190 --> 00:33:22,030 Penggunaan x pengecam tidak diisytiharkan di baris 32. 741 00:33:22,030 --> 00:33:25,700 Dan sebenarnya, mari kita menjadi lebih jelas di sini hari ini supaya ini adalah berguna dalam 742 00:33:25,700 --> 00:33:27,140 waktu pejabat dan di rumah. 743 00:33:27,140 --> 00:33:29,000 Perhatikan bahawa ia adalah sedikit cryptically ditulis. 744 00:33:29,000 --> 00:33:31,560 Tetapi hakikat bahawa mempunyai dilafaz menjerit pada kami, berkata 745 00:33:31,560 --> 00:33:36,970 buggy4.c: 32:5, sebenarnya adalah berguna. 746 00:33:36,970 --> 00:33:41,970 Ia bermakna bahawa kesilapan adalah pada 32 baris pada kedudukan watak lima. 747 00:33:41,970 --> 00:33:44,670 Jadi satu, dua, tiga, empat, lima. 748 00:33:44,670 --> 00:33:46,640 Itulah, sebenarnya, mana masalah ini. 749 00:33:46,640 --> 00:33:49,710 Dan juga perlu diingat pada waktu pejabat dan di rumah, saya bernasib baik di sini. 750 00:33:49,710 --> 00:33:50,740 Saya mempunyai satu kesilapan. 751 00:33:50,740 --> 00:33:52,660 Ia akan menjadi agak mudah untuk menetapkan. 752 00:33:52,660 --> 00:33:56,220 Tetapi jika anda mendapat skrin sepenuh mesej ralat yang hangat, sekali lagi, 753 00:33:56,220 --> 00:33:59,240 menyedari bahawa satu panhandle hanya mungkin gejala 754 00:33:59,240 --> 00:34:00,320 orang-orang yang teratas. 755 00:34:00,320 --> 00:34:03,560 Jadi sentiasa mengejar turun bug anda dari atas ke bawah. 756 00:34:03,560 --> 00:34:06,720 Kerana hanya mungkin terdapat kesan rantaian daisy yang mencadangkan anda 757 00:34:06,720 --> 00:34:09,030 mempunyai cara yang lebih banyak masalah daripada anda sebenarnya lakukan. 758 00:34:09,030 --> 00:34:14,989 >> Jadi bagaimana kita boleh memperbaiki ini jika matlamat saya adalah untuk kenaikan x? 759 00:34:14,989 --> 00:34:15,370 Apa itu? 760 00:34:15,370 --> 00:34:15,620 Okay. 761 00:34:15,620 --> 00:34:16,679 Jadi kita boleh membuat x global. 762 00:34:16,679 --> 00:34:18,860 Mari kita mengambil jalan pintas bahawa saya memberi amaran tentang awal. 763 00:34:18,860 --> 00:34:20,550 Tetapi palang pintu, kita hanya perlu cepat. 764 00:34:20,550 --> 00:34:23,949 Jadi mari kita hanya mengatakan x int di sini. 765 00:34:23,949 --> 00:34:25,600 Itu membuatkan x global. 766 00:34:25,600 --> 00:34:28,460 Jadi sekarang utama mempunyai akses kepada maklumat itu. 767 00:34:28,460 --> 00:34:31,780 Dan kenaikan mempunyai akses kepadanya. 768 00:34:31,780 --> 00:34:33,860 Dan jadi biarlah saya pergi ke hadapan dan menyusun ini sekarang. 769 00:34:33,860 --> 00:34:36,330 Buat buggy4, Enter. 770 00:34:36,330 --> 00:34:37,440 Nampaknya untuk menyusun sekarang. 771 00:34:37,440 --> 00:34:40,949 Mari kita berjalan buggy4, dan ia seolah-olah benar-benar bekerja. 772 00:34:40,949 --> 00:34:42,780 Sekarang ini adalah salah satu daripada perkara-perkara ini - 773 00:34:42,780 --> 00:34:45,870 lakukan seperti yang saya katakan, tidak seperti yang saya lakukan, kerana saya baru sahaja dilakukan di sini. 774 00:34:45,870 --> 00:34:49,239 Kerana secara umum, program kami akan mendapat lebih menarik dan 775 00:34:49,239 --> 00:34:50,440 lebih lama daripada ini. 776 00:34:50,440 --> 00:34:53,199 Dan jika penyelesaian untuk masalah hidup hanya ah, meletakkan semua 777 00:34:53,199 --> 00:34:57,550 pembolehubah di atas fail anda, sangat cepat melakukan program mendapat 778 00:34:57,550 --> 00:34:59,700 horrifically sukar untuk menguruskan. 779 00:34:59,700 --> 00:35:02,050 Ia mendapat sukar untuk berfikir sehingga nama-nama pembolehubah baru. 780 00:35:02,050 --> 00:35:05,240 Ia menjadi lebih sukar untuk memahami apa jenis pemboleh ubah adalah melakukan apa. 781 00:35:05,240 --> 00:35:08,250 >> Dan sebagainya secara umum, ini tidak merupakan penyelesaian yang baik. 782 00:35:08,250 --> 00:35:09,780 Jadi mari kita buat ini lebih baik. 783 00:35:09,780 --> 00:35:11,920 Kita tidak mahu menggunakan pembolehubah global di sini. 784 00:35:11,920 --> 00:35:14,050 Saya tidak mahu kenaikan x. 785 00:35:14,050 --> 00:35:16,050 Jadi saya dapat jelas - 786 00:35:16,050 --> 00:35:18,450 pada akhir hari, ia adalah jenis cerita bodoh kerana kita hanya melakukan ini. 787 00:35:18,450 --> 00:35:22,050 Tetapi jika saya tidak tahu tentang pengendali itu, atau saya tidak dibenarkan untuk 788 00:35:22,050 --> 00:35:27,700 mengubahnya utama itu sendiri, bagaimana lagi saya boleh melaksanakan Ken di sini, ini 789 00:35:27,700 --> 00:35:31,450 masa tidak kiub tetapi untuk kenaikan? 790 00:35:31,450 --> 00:35:32,700 Bagaimana saya boleh mengubah perkara ini di sini? 791 00:35:32,700 --> 00:35:33,025 Yeah. 792 00:35:33,025 --> 00:35:34,275 [Didengar] 793 00:35:37,430 --> 00:35:38,000 DAVID J. MALAN: Okay, baik. 794 00:35:38,000 --> 00:35:40,490 Jadi mengapa saya tidak lulus dalam x? 795 00:35:40,490 --> 00:35:44,390 Dan kemudian bukannya kembali, mengapa tidak saya hanya melakukan pulangan x + 1? 796 00:35:44,390 --> 00:35:46,370 Kini, beberapa lagi perkara perlu mengubah di sini. 797 00:35:46,370 --> 00:35:47,530 Saya pada landasan yang betul. 798 00:35:47,530 --> 00:35:48,910 Apa lagi yang saya perlukan untuk tweak? 799 00:35:48,910 --> 00:35:49,470 Orang lain. 800 00:35:49,470 --> 00:35:49,882 Yeah? 801 00:35:49,882 --> 00:35:51,530 [Didengar] 802 00:35:51,530 --> 00:35:53,520 DAVID J. MALAN: Saya perlu untuk menukar jenis pulangan kenaikan 803 00:35:53,520 --> 00:35:54,590 kerana ia tidak membatalkan. 804 00:35:54,590 --> 00:35:56,650 Terbatal bermakna tiada dipulangkan. 805 00:35:56,650 --> 00:35:57,600 Tetapi jelas, kini ia adalah. 806 00:35:57,600 --> 00:36:01,280 Jadi ini keperluan untuk menukar int untuk menjadi konsisten dengan apa jua 807 00:36:01,280 --> 00:36:02,580 Saya sebenarnya kembali. 808 00:36:02,580 --> 00:36:04,580 >> Kini sesuatu yang lain masih kereta di sini. 809 00:36:04,580 --> 00:36:04,982 Yeah? 810 00:36:04,982 --> 00:36:06,590 [Didengar] 811 00:36:06,590 --> 00:36:07,630 DAVID J. MALAN: Jadi saya perlu kenaikan x? 812 00:36:07,630 --> 00:36:10,336 [Didengar] 813 00:36:10,336 --> 00:36:11,880 DAVID J. MALAN: Ah, jadi saya perlu untuk lulus x. 814 00:36:11,880 --> 00:36:13,300 Jadi saya perlu melakukan ini di sini. 815 00:36:17,590 --> 00:36:19,690 Jadi prototaip, saya perlu menukar ini di sini. 816 00:36:19,690 --> 00:36:21,290 Jadi ini telah menjadi int. 817 00:36:21,290 --> 00:36:22,820 Ini telah menjadi - 818 00:36:22,820 --> 00:36:23,670 hmm. 819 00:36:23,670 --> 00:36:24,710 Saya sebenarnya mempunyai bug di sini. 820 00:36:24,710 --> 00:36:25,780 Mari kita menetapkan ini yang pertama. 821 00:36:25,780 --> 00:36:27,990 Apakah yang perlu ini sebenarnya? 822 00:36:27,990 --> 00:36:29,330 Jadi ia mendapat untuk menjadi sesuatu int. 823 00:36:29,330 --> 00:36:30,340 Ia boleh x. 824 00:36:30,340 --> 00:36:33,120 Tetapi terus-terang, jika anda mula memanggil semua x pembolehubah anda, ia akan mendapat 825 00:36:33,120 --> 00:36:35,250 kurang dan kurang jelas yang mana. 826 00:36:35,250 --> 00:36:38,210 Jadi mari kita hanya sewenang-wenangnya memilih konvensyen penamaan yang berlainan bagi saya 827 00:36:38,210 --> 00:36:40,220 pembantu fungsi, fungsi Saya menulis. 828 00:36:40,220 --> 00:36:41,100 Kami akan memanggilnya. 829 00:36:41,100 --> 00:36:44,500 Atau kita boleh memanggil ia - mari kita memanggilnya even_number untuk menjadi lebih jelas. 830 00:36:44,500 --> 00:36:47,610 Jadi maka saya perlu kembali apa jua nombor campur 1. 831 00:36:47,610 --> 00:36:49,720 Dan kini saya mempunyai untuk menukar satu perkara lain sehingga di sini dan satu 832 00:36:49,720 --> 00:36:50,700 benda lain di sini. 833 00:36:50,700 --> 00:36:54,150 Apa yang saya perlu untuk menukar pada 21 baris pertama? 834 00:36:54,150 --> 00:36:55,390 Saya perlu sediakan x. 835 00:36:55,390 --> 00:36:57,480 Jadi saya tidak boleh hanya memanggil x kenaikan. 836 00:36:57,480 --> 00:37:01,000 Saya perlu ingat jawapannya dengan menukar nilai x 837 00:37:01,000 --> 00:37:02,020 tangan sebelah kiri. 838 00:37:02,020 --> 00:37:04,930 Dan walaupun x kini di kiri dan kanan, yang benar-benar halus kerana 839 00:37:04,930 --> 00:37:08,370 sebelah kanan mendapat dilaksanakan terlebih dahulu kemudian mendapat plopped ke kiri 840 00:37:08,370 --> 00:37:10,240 perkara tangan, x dalam kes ini. 841 00:37:10,240 --> 00:37:11,900 Dan kemudian akhir sekali, ini adalah menetapkan yang mudah sekarang. 842 00:37:11,900 --> 00:37:15,080 Ini hanya perlu menandingi apa yang turun di bawah. 843 00:37:15,080 --> 00:37:17,120 Nombor Int. 844 00:37:17,120 --> 00:37:17,320 >> Semua hak. 845 00:37:17,320 --> 00:37:20,290 Jadi sekumpulan keseluruhan perubahan untuk fungsi benar-benar bodoh. 846 00:37:20,290 --> 00:37:24,250 Tetapi wakil-wakil daripada perkara-perkara yang kita semakin akan mahu lakukan. 847 00:37:24,250 --> 00:37:25,490 Supaya membuat buggy4. 848 00:37:25,490 --> 00:37:26,485 Saya diskrukan sehingga suatu tempat. 849 00:37:26,485 --> 00:37:27,520 Oh Tuhan saya. 850 00:37:27,520 --> 00:37:29,660 Lima kesilapan dalam, seperti, program garis enam. 851 00:37:29,660 --> 00:37:36,500 Jadi apa yang salah on line 18, watak 5? 852 00:37:36,500 --> 00:37:36,970 Semua hak. 853 00:37:36,970 --> 00:37:39,330 Jadi saya perlu mengisytiharkan int ini. 854 00:37:39,330 --> 00:37:39,630 Semua hak. 855 00:37:39,630 --> 00:37:41,790 Jadi mari kita lihat, sekumpulan keseluruhan kesilapan lain. 856 00:37:41,790 --> 00:37:42,230 Oh tuhan saya. 857 00:37:42,230 --> 00:37:43,880 19, 18, 21. 858 00:37:43,880 --> 00:37:46,020 Tetapi sekali lagi, mari kita hanya mengosongkan skrin - 859 00:37:46,020 --> 00:37:48,660 L Kawalan sini - dan dikendalikan semula dilafaz. 860 00:37:48,660 --> 00:37:51,340 Jadi lima masalah sebenarnya cuma satu. 861 00:37:51,340 --> 00:37:53,500 Jadi sekarang mari kita menjalankan buggy4, Enter. 862 00:37:53,500 --> 00:37:54,150 Huh. 863 00:37:54,150 --> 00:37:57,434 x telah incremented betul. 864 00:37:57,434 --> 00:37:58,420 >> Semua hak. 865 00:37:58,420 --> 00:38:01,700 Sebarang pertanyaan mengenai bagaimana untuk menokokkan nombor? 866 00:38:01,700 --> 00:38:02,896 Yeah? 867 00:38:02,896 --> 00:38:06,864 SPEAKER 2: Mengapa ia bahawa anda hanya boleh menukar x kepada bilangan pembolehubah 868 00:38:06,864 --> 00:38:08,860 menamakan dan ia akan tahu apa yang anda maksudkan? 869 00:38:08,860 --> 00:38:09,600 DAVID J. MALAN: Baik soalan. 870 00:38:09,600 --> 00:38:13,130 Bagaimana ia bahawa saya hanya boleh menukar x ke nombor dan program akan tahu 871 00:38:13,130 --> 00:38:13,990 serta-merta? 872 00:38:13,990 --> 00:38:16,120 Jadi sekali lagi, fikirkan ia sebagai abstraksi ini. 873 00:38:16,120 --> 00:38:20,110 Jadi jika saya utama dan Ken adalah tambahan, terus-terang, saya tidak peduli 874 00:38:20,110 --> 00:38:21,540 apa Ken panggilan iPad beliau. 875 00:38:21,540 --> 00:38:25,350 Saya tidak peduli apa yang dia memanggil apa-apa yang mempunyai kaitan dengan pelaksanaan 876 00:38:25,350 --> 00:38:26,550 fungsi ini. 877 00:38:26,550 --> 00:38:32,130 Jadi ini adalah terperinci pelaksanaan yang saya, utama, tidak 878 00:38:32,130 --> 00:38:33,010 perlu mengambil berat tentang. 879 00:38:33,010 --> 00:38:37,440 Dan sebagainya hanya menukarkan ia konsisten dalam fungsi, nombor sini 880 00:38:37,440 --> 00:38:41,340 dan nombor di sini, adalah semua ia mengambil masa begitu lama seperti yang saya susun semula. 881 00:38:41,340 --> 00:38:43,820 Ia adalah jenis suka jika anda berfikir tentang - ramai di antara kita, anda dengan pemandu 882 00:38:43,820 --> 00:38:46,590 lesen yang telah didorong, atau jika anda telah pun dipandu dalam kereta - 883 00:38:46,590 --> 00:38:50,710 kebanyakan kita tidak mempunyai idea bagaimana sebuah kereta berfungsi di bawah hood. 884 00:38:50,710 --> 00:38:54,710 Dan benar-benar, jika anda membuka hud, kebanyakan kita - termasuk saya sendiri - 885 00:38:54,710 --> 00:38:56,580 tidak akan benar-benar tahu apa yang kita sedang melihat. 886 00:38:56,580 --> 00:38:58,850 Jenis seperti anda mungkin merasakan dengan barangan seperti hak ini sekarang. 887 00:38:58,850 --> 00:39:01,380 Tetapi kita tidak benar-benar perlu untuk menjaga bagaimana kereta berfungsi. 888 00:39:01,380 --> 00:39:05,000 Kami tidak mempunyai untuk menjaga apa yang semua rod dan omboh dan kabel di dalam 889 00:39:05,000 --> 00:39:07,700 kereta sebenarnya lakukan. 890 00:39:07,700 --> 00:39:11,360 >> Jadi sesuatu seperti apa yang anda memanggil omboh tidak kira 891 00:39:11,360 --> 00:39:11,920 di sini dalam kes ini. 892 00:39:11,920 --> 00:39:12,490 Idea yang sama. 893 00:39:12,490 --> 00:39:12,670 Yeah? 894 00:39:12,670 --> 00:39:13,920 [Didengar] 895 00:39:25,250 --> 00:39:29,530 DAVID J. MALAN: Jika terdapat lebih banyak kegunaan masa xa ubah yang lalu, 896 00:39:29,530 --> 00:39:32,220 anda, pengaturcara, akan mempunyai untuk menukar mereka di mana-mana. 897 00:39:32,220 --> 00:39:35,230 Atau anda benar-benar boleh melakukan File, Menu, dan kemudian Cari / Ganti, 898 00:39:35,230 --> 00:39:36,270 sesuatu seperti itu. 899 00:39:36,270 --> 00:39:40,110 Tetapi anda akan mempunyai untuk membuat perubahan-perubahan sendiri. 900 00:39:40,110 --> 00:39:41,200 Anda perlu konsisten. 901 00:39:41,200 --> 00:39:42,450 [Didengar] 902 00:39:47,200 --> 00:39:48,960 DAVID J. MALAN: Sesuatu perintah tertentu seperti sini? 903 00:39:48,960 --> 00:39:52,660 Jika ini adalah int nombor lain? 904 00:39:52,660 --> 00:39:52,940 Yeah. 905 00:39:52,940 --> 00:39:56,430 Jadi perintah perkara yang apabila anda memanggil fungsi. 906 00:39:56,430 --> 00:40:00,350 Jadi, jika saya telah memanggil kenaikan di sini dengan sesuatu koma sesuatu, 907 00:40:00,350 --> 00:40:01,400 ada pemetaan langsung. 908 00:40:01,400 --> 00:40:04,490 Pembolehubah pertama, apa sahaja yang ia dipanggil, dibuat salinan yang pertama 909 00:40:04,490 --> 00:40:05,480 hujah di sini. 910 00:40:05,480 --> 00:40:07,280 Maaf, ini tidak sepatutnya menjadi sebuah kurungan. 911 00:40:07,280 --> 00:40:09,300 Hujah barisan kedua dengan satu kedua. 912 00:40:09,300 --> 00:40:11,220 >> Jadi perintah, ya, perkara-perkara. 913 00:40:11,220 --> 00:40:11,490 Semua hak. 914 00:40:11,490 --> 00:40:13,360 Maaf saya mengambil satu cara yang lama untuk sampai ke sana. 915 00:40:13,360 --> 00:40:14,610 Soalan-soalan lain? 916 00:40:16,460 --> 00:40:16,850 Semua hak. 917 00:40:16,850 --> 00:40:20,300 Jadi mari kita lihat jika kita tidak dapat gambaran apa yang sebenarnya berlaku di 918 00:40:20,300 --> 00:40:22,160 di sini di bawah hood, jadi untuk bercakap. 919 00:40:22,160 --> 00:40:26,310 Jadi ini adalah sebuah segiempat tepat yang mungkin mewakili memori komputer anda. 920 00:40:26,310 --> 00:40:31,240 Jadi, walaupun anda tidak mempunyai idea bagaimana memori berfungsi atau bagaimana kerja-kerja RAM, sekurang-kurangnya 921 00:40:31,240 --> 00:40:33,590 menganggap bahawa anda mempunyai tandan ia hari ini. 922 00:40:33,590 --> 00:40:34,740 Anda telah mendapat megabait ia. 923 00:40:34,740 --> 00:40:35,760 Anda telah mendapat gigabait. 924 00:40:35,760 --> 00:40:40,690 Dan kita tahu dari sifar minggu bahawa bait hanya apa? 925 00:40:40,690 --> 00:40:41,280 8 bit. 926 00:40:41,280 --> 00:40:42,730 Betul, jadi 8 sifar dan orang-orang. 927 00:40:42,730 --> 00:40:46,300 Jadi, jika komputer anda mempunyai persembahan RAM, dua gig RAM pada hari ini, anda mempunyai 928 00:40:46,300 --> 00:40:54,450 bilion atau 2 bilion bait memori, atau kira-kira 8 bilion atau 16 bilion 929 00:40:54,450 --> 00:40:56,560 bit, di dalam komputer anda. 930 00:40:56,560 --> 00:40:59,710 Sekarang tidak seperti sedikit Kusut Willy contoh, ia bukan zarah magnet 931 00:40:59,710 --> 00:41:00,560 biasanya lagi. 932 00:41:00,560 --> 00:41:04,470 Semakin dalam komputer riba sekurang-kurangnya, ia adalah pemacu keadaan pepejal, SSDs, yang 933 00:41:04,470 --> 00:41:05,560 hanya ada bahagian yang bergerak. 934 00:41:05,560 --> 00:41:06,710 Ia adalah semua elektronik. 935 00:41:06,710 --> 00:41:08,070 Ia berasaskan semua elektrik. 936 00:41:08,070 --> 00:41:12,360 Jadi berfikir, walaupun, segi empat ini sebagai hanya mewakili satu atau dua 937 00:41:12,360 --> 00:41:13,930 gigabait memori yang anda ada. 938 00:41:13,930 --> 00:41:15,500 >> Jadi ia adalah sebahagian memori. 939 00:41:15,500 --> 00:41:20,460 Sekarang dunia sains komputer mempunyai jenis ketulan dibahagikan kira 940 00:41:20,460 --> 00:41:22,570 ingatan untuk melakukan perkara-perkara yang berbeza. 941 00:41:22,570 --> 00:41:25,930 Jadi, misalnya, jika ini adalah RAM komputer anda - seperti yang dicadangkan oleh 942 00:41:25,930 --> 00:41:30,400 segiempat tepat sana - ternyata bahawa oleh konvensyen, di atas RAM anda, jadi 943 00:41:30,400 --> 00:41:33,170 untuk bercakap, secara umumnya apa yang dipanggil segmen teks. 944 00:41:33,170 --> 00:41:35,910 Mereka adalah sifar dan orang-orang yang anda telah kumpulkan. 945 00:41:35,910 --> 00:41:39,040 Jadi, apabila kita telah melihat di bawah hood apa a.out, semua 946 00:41:39,040 --> 00:41:40,360 sifar dan orang - 947 00:41:40,360 --> 00:41:44,000 apabila anda menjalankan program, mereka sifar dan orang-orang yang dimuatkan dari keras anda 948 00:41:44,000 --> 00:41:46,290 memandu ke dalam sesuatu yang dinamakan RAM. 949 00:41:46,290 --> 00:41:48,950 Dan dalam RAM, mereka meletakkan di atas. 950 00:41:48,950 --> 00:41:50,330 Sekarang Sementara itu, anda mempunyai perkara-perkara lain. 951 00:41:50,330 --> 00:41:53,060 Dimulakan data, data tidak diisytiharkan. 952 00:41:53,060 --> 00:41:56,440 Kedua-dua swaths memori merujuk kepada pembolehubah global, yang 953 00:41:56,440 --> 00:41:57,530 anda tidak sering menggunakan. 954 00:41:57,530 --> 00:42:00,630 Tetapi kadang-kadang jika anda lakukan, mereka akhirnya di sana juga. 955 00:42:00,630 --> 00:42:01,620 Kemudian terdapat beberapa barangan lain. 956 00:42:01,620 --> 00:42:04,130 Persekitaran pembolehubah, yang kita tidak akan banyak menghabiskan masa di. 957 00:42:04,130 --> 00:42:06,120 Tetapi kemudian dua perkara penting yang akan datang kembali sepanjang 958 00:42:06,120 --> 00:42:08,130 semester, timbunan dan longgokan. 959 00:42:08,130 --> 00:42:12,280 >> Jadi kebanyakan memori komputer anda dikhaskan apabila menjalankan satu program untuk 960 00:42:12,280 --> 00:42:14,880 sesuatu yang dipanggil timbunan dan sesuatu yang dipanggil timbunan itu. 961 00:42:14,880 --> 00:42:16,940 Dan kita tidak akan bercakap mengenai timbunan itu hari ini, tetapi kita akan 962 00:42:16,940 --> 00:42:18,180 bercakap tentang timbunan. 963 00:42:18,180 --> 00:42:22,910 Dan timbunan bertujuan untuk nampak visual seperti dewan makan 964 00:42:22,910 --> 00:42:26,120 dulang hidangan di Mather House, atau di mana sahaja anda berada, di mana 965 00:42:26,120 --> 00:42:27,810 kakitangan dewan makan membersihkan mereka setiap hari. 966 00:42:27,810 --> 00:42:30,180 Mereka timbunan mereka dari tingkat atas sehingga. 967 00:42:30,180 --> 00:42:33,800 Dan begitu juga dalam ingatan, terdapat idea ini meletakkan sesuatu pada 968 00:42:33,800 --> 00:42:36,740 timbunan, meletakkan sesuatu pada timbunan, meletakkan sesuatu pada timbunan. 969 00:42:36,740 --> 00:42:38,000 Dan apa yang kita maksudkan dengan ini? 970 00:42:38,000 --> 00:42:41,430 Nah, mari kita zoom di atas hanya separuh lebih rendah daripada gambar ini, komputer anda 971 00:42:41,430 --> 00:42:43,990 RAM, untuk mencadangkan perkara-perkara berikut. 972 00:42:43,990 --> 00:42:48,300 Ia ternyata bahawa apabila anda menjalankan program seperti a.out atau hello, apa jua 973 00:42:48,300 --> 00:42:49,920 program ini adalah bahawa anda telah ditulis, 974 00:42:49,920 --> 00:42:53,030 lagi, orang-orang sifar dan orang-orang yang dimuatkan dari cakera keras anda - yang merupakan 975 00:42:53,030 --> 00:42:56,190 penyimpanan jangka panjang, kekal di sana walaupun apabila anda tarik palamnya - 976 00:42:56,190 --> 00:42:57,220 dimuatkan ke dalam RAM. 977 00:42:57,220 --> 00:42:59,020 RAM adalah lebih cepat daripada cakera keras. 978 00:42:59,020 --> 00:43:00,700 Ia adalah lebih kecil daripada cakera keras. 979 00:43:00,700 --> 00:43:03,490 Tetapi ia adalah di mana program-program hidup semasa anda menjalankan mereka. 980 00:43:03,490 --> 00:43:06,380 >> Jadi anda klik dua kali program pada Mac atau PC - ia dimuatkan dari 981 00:43:06,380 --> 00:43:07,750 cakera keras ke dalam RAM. 982 00:43:07,750 --> 00:43:11,760 Sebaik sahaja ia dimuatkan ke dalam RAM, sifar dan orang-orang yang pergi di atas jalan, 983 00:43:11,760 --> 00:43:13,130 yang dipanggil segmen teks. 984 00:43:13,130 --> 00:43:17,040 Tetapi kemudian secepat program anda sebenarnya bermula berlari, utama 985 00:43:17,040 --> 00:43:18,140 fungsi dipanggil. 986 00:43:18,140 --> 00:43:21,070 Dan utama, seperti yang kita telah melihat, sering mempunyai pembolehubah tempatan. 987 00:43:21,070 --> 00:43:24,560 Dan ia mempunyai ints dan rentetan dan aksara dan sebagainya. 988 00:43:24,560 --> 00:43:28,300 Jadi, jika program anda yang telah bertulis atau program yang anda mempunyai 989 00:43:28,300 --> 00:43:33,680 double klik digunakan beberapa pembolehubah dalam utama, mereka akhirnya di 990 00:43:33,680 --> 00:43:37,020 bawah timbunan memori anda, jadi untuk bercakap. 991 00:43:37,020 --> 00:43:39,160 Sekarang, lebih kukuh, apakah ini sebenarnya bermakna? 992 00:43:39,160 --> 00:43:44,080 Ini hanya bermaksud bahawa jika kita akan bilangannya perkara - 993 00:43:44,080 --> 00:43:49,380 jika kita telah pergi ke nombor bait RAM dalam komputer anda, notis bahawa 994 00:43:49,380 --> 00:43:51,650 ini mungkin nombor sifar bait. 995 00:43:51,650 --> 00:43:56,130 Ini mungkin bilangan bait satu, dua, tiga, empat, lima, enam, semua 996 00:43:56,130 --> 00:43:57,290 cara untuk suka - 997 00:43:57,290 --> 00:44:01,520 2000000000 akan semua cara sehingga ada di bahagian atas. 998 00:44:01,520 --> 00:44:05,960 Jadi dalam erti kata lain, apabila kita bercakap tentang RAM atau ingatan dari segi bait, ia 999 00:44:05,960 --> 00:44:09,680 hanya bermaksud seseorang yang telah memutuskan apa yang menentukan bilangannya setiap 1000 00:44:09,680 --> 00:44:11,110 mereka ketulan memori. 1001 00:44:11,110 --> 00:44:16,950 >> Jadi, apabila anda memerlukan 32 bit untuk int, atau anda memerlukan 8 bit untuk char, di mana 1002 00:44:16,950 --> 00:44:18,320 adakah mereka akhirnya dalam ingatan? 1003 00:44:18,320 --> 00:44:20,650 Nah konsep, mereka hanya berakhir di bawah ini 1004 00:44:20,650 --> 00:44:21,780 perkara yang dipanggil timbunan. 1005 00:44:21,780 --> 00:44:25,670 Tetapi apa yang menarik sekarang ialah apabila utama panggilan fungsi. 1006 00:44:25,670 --> 00:44:28,830 Katakan fungsi dipanggil foo, hanya nama arbitrari. 1007 00:44:28,830 --> 00:44:32,480 Apa yang berlaku yang utama adalah di bahagian bawah timbunan ini memori. 1008 00:44:32,480 --> 00:44:35,630 Foo kini diletakkan di atas utama dalam ingatan. 1009 00:44:35,630 --> 00:44:40,020 Jadi, mana-mana pembolehubah tempatan bahawa foo telah berakhir jenis konsep di atas 1010 00:44:40,020 --> 00:44:40,770 mereka yang utama. 1011 00:44:40,770 --> 00:44:46,920 Jika foo panggilan lagi fungsi yang dipanggil bar, pembolehubah-pembolehubah berakhir di sini. 1012 00:44:46,920 --> 00:44:49,790 Jika bar menyeru sesuatu yang lain, di sini, di sini, di sini. 1013 00:44:49,790 --> 00:44:53,900 Jadi apa yang menarik tentang menjalankan program adalah bahawa anda memanggil fungsi, 1014 00:44:53,900 --> 00:44:57,720 dan sebagai fungsi panggilan fungsi, dan seperti fungsi panggilan fungsi, 1015 00:44:57,720 --> 00:45:00,980 anda membina ini timbunan fungsi dalam ingatan. 1016 00:45:00,980 --> 00:45:06,740 Dan hanya sekali pulangan fungsi manakah anda mula mendapat memori yang kembali. 1017 00:45:06,740 --> 00:45:11,190 Jadi salah satu cara paling mudah kehabisan memori dalam program komputer adalah untuk 1018 00:45:11,190 --> 00:45:14,170 menulis fungsi yang tidak pernah kembali. 1019 00:45:14,170 --> 00:45:16,650 >> Jadi, sebagai contoh, mari kita menunjukkan seberapa banyak dengan 1020 00:45:16,650 --> 00:45:18,460 program sengaja kereta. 1021 00:45:18,460 --> 00:45:24,690 Biar saya pergi ke hadapan dan # include , int utama (tidak sah). 1022 00:45:24,690 --> 00:45:31,270 Dan saya akan lakukan semasa (2> 1), yang mungkin tidak akan pernah 1023 00:45:31,270 --> 00:45:33,370 perubahan ke atas kita. 1024 00:45:33,370 --> 00:45:37,720 Dan biarlah saya pergi ke hadapan sekarang dan melakukan printf. 1025 00:45:37,720 --> 00:45:39,950 Sebenarnya, itu akan menjadi kurang menarik visual. 1026 00:45:39,950 --> 00:45:40,460 Mari kita melakukan ini. 1027 00:45:40,460 --> 00:45:44,840 Untuk int (i = 0; i> 0). 1028 00:45:44,840 --> 00:45:49,740 Mari kita membuat kesilapan ini, i + +. 1029 00:45:49,740 --> 00:45:51,150 Dan jangan printf sini. 1030 00:45:51,150 --> 00:45:52,550 Mari kita mengamalkan apa yang saya telah berkhotbah. 1031 00:45:52,550 --> 00:45:54,090 Mari kita mempunyai kaedah di sini. 1032 00:45:54,090 --> 00:46:00,860 Korus terbatal, dan kami akan mengatakan int i. 1033 00:46:00,860 --> 00:46:02,295 Dan kemudian saya akan mengatakan, printf - 1034 00:46:04,871 --> 00:46:06,790 oh, mari kita membuat ini lebih menarik. 1035 00:46:06,790 --> 00:46:08,350 Mari kita sebenarnya tidak mencetak apa-apa pada semua. 1036 00:46:08,350 --> 00:46:10,530 Mari kita hanya melakukan ini. 1037 00:46:10,530 --> 00:46:11,780 Chorus (i). 1038 00:46:16,630 --> 00:46:17,000 >> Semua hak. 1039 00:46:17,000 --> 00:46:20,040 Jadi ini adalah kereta kerana mengapa? 1040 00:46:20,040 --> 00:46:22,850 Saya membuat ini sebagai saya pergi kerana program ini sebenarnya tidak berbuat apa-apa 1041 00:46:22,850 --> 00:46:23,420 kepentingan. 1042 00:46:23,420 --> 00:46:24,670 Tetapi itu bukan matlamat. 1043 00:46:24,670 --> 00:46:30,440 Matlamatnya adalah untuk menulis program yang utama fungsi melakukan apa, nampaknya? 1044 00:46:30,440 --> 00:46:31,370 Memanggil sendiri. 1045 00:46:31,370 --> 00:46:32,600 Dan sebenarnya, kita tidak perlu gelung. 1046 00:46:32,600 --> 00:46:36,070 Mari kita walaupun memudahkan ini hanya supaya tidak kehilangan penglihatan benar-benar 1047 00:46:36,070 --> 00:46:37,310 pepijat asas. 1048 00:46:37,310 --> 00:46:39,200 Panggilan Utama korus untuk menyanyi korus beberapa. 1049 00:46:39,200 --> 00:46:41,760 Kemudian saya melakukan sesuatu yang bodoh, dan saya terpaksa korus korus panggilan kerana saya menganggap 1050 00:46:41,760 --> 00:46:43,550 orang lain telah pergi untuk melaksanakan ia mungkin. 1051 00:46:43,550 --> 00:46:45,960 Dan sekarang ini tidak akan untuk menyusun lagi. 1052 00:46:45,960 --> 00:46:48,340 Saya perlu melakukan apa? 1053 00:46:48,340 --> 00:46:49,700 Saya memerlukan prototaip, ingat. 1054 00:46:49,700 --> 00:46:55,520 Jadi saya perlu mempunyai sehingga sini korus terbatal (int i);. 1055 00:46:55,520 --> 00:46:57,470 >> Jadi sekarang, jika saya pergi ke sini - 1056 00:46:57,470 --> 00:46:59,030 sebenarnya, mari kita gunakan tetingkap yang lebih besar. 1057 00:46:59,030 --> 00:47:01,670 Mari kita pergi ke hadapan dan membuat korus. 1058 00:47:01,670 --> 00:47:06,000 Mari kita pergi ke hadapan dan membuat korus. 1059 00:47:06,000 --> 00:47:08,302 Penggunaan declarer tidak dikenali i. 1060 00:47:08,302 --> 00:47:09,860 Oh, yang bodoh. 1061 00:47:09,860 --> 00:47:11,020 Kita tidak memerlukan hujah. 1062 00:47:11,020 --> 00:47:13,680 Mari kita hanya melakukan ini. 1063 00:47:13,680 --> 00:47:14,550 Wish kita telah mula cara ini. 1064 00:47:14,550 --> 00:47:16,160 Ia akan menjadi satu program yang lebih mudah untuk menulis. 1065 00:47:16,160 --> 00:47:20,100 Jadi di sana. 1066 00:47:20,100 --> 00:47:23,870 Sekarang mari kita pergi ke tetingkap terminal saya, dilafaz-run semula. 1067 00:47:23,870 --> 00:47:26,900 Dan di sini kita pergi. 1068 00:47:26,900 --> 00:47:28,020 Itu adalah benar-benar berpuasa. 1069 00:47:28,020 --> 00:47:30,690 Apa yang sebenarnya hanya berlaku, walaupun? 1070 00:47:30,690 --> 00:47:33,430 Nah, sekarang saya akan tambah baris cetak, jadi kita boleh lihat. 1071 00:47:33,430 --> 00:47:41,330 Jadi biarlah saya katakan printf, katakan, saya di sini. 1072 00:47:41,330 --> 00:47:43,470 Okay, tiada pembolehubah, kita akan meninggalkan ia seperti itu. 1073 00:47:43,470 --> 00:47:44,860 Izinkan saya jalankan semula membuat. 1074 00:47:44,860 --> 00:47:47,940 Biar saya yang dikendalikan semula korus. 1075 00:47:47,940 --> 00:47:51,235 Dan datang. 1076 00:47:53,880 --> 00:47:55,130 Terus pergi. 1077 00:47:57,630 --> 00:47:59,750 Sebagai mengetepikan, mengapa ia tidak terhempas lagi? 1078 00:47:59,750 --> 00:48:02,050 Kesalahan segmentasi berlaku cepat super sebelum ini. 1079 00:48:02,050 --> 00:48:04,250 [Didengar] 1080 00:48:04,250 --> 00:48:04,830 DAVID J. MALAN: Tepat sekali. 1081 00:48:04,830 --> 00:48:06,350 Jadi ia mengambil masa untuk mencetak. 1082 00:48:06,350 --> 00:48:08,370 Ia hanya mengambil kerja lebih pada bahagian komputer. 1083 00:48:08,370 --> 00:48:09,550 Dan ada ia adalah. 1084 00:48:09,550 --> 00:48:10,620 Kesalahan segmentasi. 1085 00:48:10,620 --> 00:48:12,140 >> Jadi melihat betapa cepat program berjalan. 1086 00:48:12,140 --> 00:48:14,110 Jika anda tidak mencetak apa-apa, puasa super. 1087 00:48:14,110 --> 00:48:18,100 Tetapi kita masih mendapat ini kesilapan segmentasi kerana apa yang telah berlaku? 1088 00:48:18,100 --> 00:48:21,310 Nah, jika anda berfikir tentang bagaimana memori komputer anda dibentangkan, ini 1089 00:48:21,310 --> 00:48:22,890 berlaku untuk menjadi utama. 1090 00:48:22,890 --> 00:48:23,800 Tetapi di sini - 1091 00:48:23,800 --> 00:48:28,670 mari kita hanya memanggil korus ini, dan mari kita memanggil korus ini. 1092 00:48:28,670 --> 00:48:33,420 Dan kini jika saya lakukan estetika saya, ini hanya akan mengatakan korus, 1093 00:48:33,420 --> 00:48:38,060 korus, korus, korus, korus, korus, korus, iklan nauseum. 1094 00:48:38,060 --> 00:48:39,920 Dan akhirnya, apa yang akan berlaku? 1095 00:48:39,920 --> 00:48:46,690 Jika gambar besar literal ini, apa yang hanya berlaku konsepnya? 1096 00:48:46,690 --> 00:48:48,320 Timbunan lebihan longgokan itu. 1097 00:48:48,320 --> 00:48:52,400 Atau lebih teruk lagi, anda hanya ditakluki segala-galanya, termasuk segmen teks, yang merupakan 1098 00:48:52,400 --> 00:48:54,530 sifar dan orang-orang yang mewakili program anda. 1099 00:48:54,530 --> 00:48:56,690 Secara ringkas, ini adalah hanya super, buruk super. 1100 00:48:56,690 --> 00:48:56,860 Betul? 1101 00:48:56,860 --> 00:48:58,620 Program anda telah melambung di luar kawalan. 1102 00:48:58,620 --> 00:49:02,840 Anda menggunakan memori cara yang lebih daripada yang anda hendak semua kerana bodoh 1103 00:49:02,840 --> 00:49:03,920 kesilapan, dalam kes ini. 1104 00:49:03,920 --> 00:49:08,160 Atau dalam kes ini, fungsi yang sangat sengaja dilakukan memanggil sendiri. 1105 00:49:08,160 --> 00:49:09,210 Sekarang ini tidak semua yang buruk. 1106 00:49:09,210 --> 00:49:12,540 Fungsi yang menggelarkan diri mereka sebenarnya mempunyai kuasa yang besar 1107 00:49:12,540 --> 00:49:13,700 apabila anda menggunakannya dengan betul. 1108 00:49:13,700 --> 00:49:15,650 Saya telah tidak digunakan dengan betul di sini. 1109 00:49:15,650 --> 00:49:16,940 >> Jadi ini tidak semua yang buruk. 1110 00:49:16,940 --> 00:49:20,620 Tetapi hakikat bahawa saya tidak pernah benar-benar berhenti memanggil diri adalah asas 1111 00:49:20,620 --> 00:49:23,050 kelemahan di sini program ini. 1112 00:49:23,050 --> 00:49:25,090 Jadi di mana kita akan pergi dengan semua ini? 1113 00:49:25,090 --> 00:49:26,230 Nah, apa yang benar-benar berlaku? 1114 00:49:26,230 --> 00:49:30,010 Apabila saya memanggil fungsi kenaikan, seperti yang kita telah lakukan pada mereka contoh, 1115 00:49:30,010 --> 00:49:33,290 Saya mempunyai nilai seperti 1 yang saya lulus masuk 1116 00:49:33,290 --> 00:49:35,820 Saya lulus dalam satu salinan nombor satu. 1117 00:49:35,820 --> 00:49:37,080 Jadi berikut berlaku. 1118 00:49:37,080 --> 00:49:40,390 Jadi mari kita pergi ke contoh kenaikan. 1119 00:49:40,390 --> 00:49:44,230 Dan lelaki ini betul-betul di sini. 1120 00:49:44,230 --> 00:49:46,800 Jadi di sini adalah apa yang sebenarnya berlaku. 1121 00:49:46,800 --> 00:49:50,770 Apabila saya dipanggil kenaikan, dan saya lulus dalam x, bergambar apa yang 1122 00:49:50,770 --> 00:49:53,660 berlaku di sini adalah ini - 1123 00:49:53,660 --> 00:50:00,240 jika saya mempunyai nilai 1 disimpan di sini, dan saya sebenarnya menyeru kenaikan, yang 1124 00:50:00,240 --> 00:50:02,680 kini dipanggil korus - 1125 00:50:02,680 --> 00:50:04,010 yeah, itu membuang saya di sini. 1126 00:50:04,010 --> 00:50:06,750 Jadi mari kita memanggil kenaikan ini. 1127 00:50:06,750 --> 00:50:09,420 Dan kita tidak tahu apa fungsi ini seterusnya akan menjadi. 1128 00:50:09,420 --> 00:50:14,270 Jadi apa yang sebenarnya berlaku di sini tempat utama, saya mempunyai sebahagian 1129 00:50:14,270 --> 00:50:16,670 memori yang menyimpan nombor 1. 1130 00:50:16,670 --> 00:50:19,730 Apabila saya memanggil kenaikan, saya menggunakan satu lagi sebahagian memori, tetapi sekarang saya 1131 00:50:19,730 --> 00:50:20,840 mempunyai salinan 1. 1132 00:50:20,840 --> 00:50:25,480 Apabila saya kenaikan nilai itu, ini menjadi 2 - teruk ditulis pada 1133 00:50:25,480 --> 00:50:26,420 skrin di sini. 1134 00:50:26,420 --> 00:50:30,550 Tetapi kemudian, apa yang berlaku secepat pulangan kenaikan? 1135 00:50:30,550 --> 00:50:34,610 Memori ini hanya akan diserahkan kembali kepada sistem operasi, yang bermakna semua 1136 00:50:34,610 --> 00:50:37,470 anda telah melakukan apa-apa yang berguna. 1137 00:50:37,470 --> 00:50:43,460 Salah satu yang pada asalnya terkandung dalam utama masih sebenarnya di sana. 1138 00:50:43,460 --> 00:50:44,650 >> Jadi di mana kita akan pergi dengan ini? 1139 00:50:44,650 --> 00:50:49,400 Nah, ternyata bahawa dalam ingatan anda mempunyai belakang ini untuk menyokong urutan 1140 00:50:49,400 --> 00:50:50,940 bait yang anda boleh meletakkan barangan masuk 1141 00:50:50,940 --> 00:50:53,760 Dan ternyata bahawa kita sudah melihat sesuatu yang melibatkan meletakkan 1142 00:50:53,760 --> 00:50:55,100 perkara yang kembali ke belakang untuk kembali ke belakang. 1143 00:50:55,100 --> 00:51:00,170 Apakah rentetan, berdasarkan pada satu minggu dan kini Minggu two? 1144 00:51:00,170 --> 00:51:01,840 Jadi ia hanya koleksi aksara. 1145 00:51:01,840 --> 00:51:05,290 Jadi ternyata, hanya kerana anda boleh meletakkan nombor dalam ingatan, begitu juga anda boleh 1146 00:51:05,290 --> 00:51:06,900 meletakkan watak-watak dalam ingatan. 1147 00:51:06,900 --> 00:51:09,810 Dan apabila kita mula meletakkan watak-watak dalam ingatan kembali ke belakang untuk kembali ke 1148 00:51:09,810 --> 00:51:12,800 belakang, ia ternyata bahawa menggunakan mudah perkara seperti untuk gelung atau 1149 00:51:12,800 --> 00:51:14,510 gelung sementara, kita boleh melelar - 1150 00:51:14,510 --> 00:51:17,130 dari kiri ke kanan ke atas watak-watak dalam rentetan - 1151 00:51:17,130 --> 00:51:20,720 dan mula mengurut mereka ke dalam watak yang berbeza sama sekali. 1152 00:51:20,720 --> 00:51:25,550 A boleh menjadi B. B boleh menjadi C. Supaya akhirnya, kita boleh mengambil 1153 00:51:25,550 --> 00:51:28,830 Ayat Bahasa Inggeris yang benar-benar masuk akal dan menukar setiap orang 1154 00:51:28,830 --> 00:51:32,440 huruf pada satu masa dengan berjalan melalui memori komputer kita meninggalkan 1155 00:51:32,440 --> 00:51:34,300 hak untuk benar-benar menyulitkan. 1156 00:51:34,300 --> 00:51:36,590 >> Jadi mari kita rehat lima minit kami di sini, dan apabila kita kembali, kami akan 1157 00:51:36,590 --> 00:51:39,060 memulakan proses ini maklumat bergegas. 1158 00:51:41,640 --> 00:51:43,180 >> Semua hak. 1159 00:51:43,180 --> 00:51:48,440 Jadi sebelum kita menyelam di kepada beberapa kripto dan perkara-perkara yang dipanggil array, izinkan saya 1160 00:51:48,440 --> 00:51:51,610 berhenti untuk sebarang pertanyaan kerana saya rasa seperti saya benar-benar jenis kelam-kabut beberapa 1161 00:51:51,610 --> 00:51:52,230 topik tersebut. 1162 00:51:52,230 --> 00:51:53,940 Jadi mari kita menetapkan sekarang jika kita boleh. 1163 00:51:53,940 --> 00:51:56,480 Jadi kita hanya bercakap tentang nilai-nilai pulangan. 1164 00:51:56,480 --> 00:51:58,630 Kita bercakap tentang hujah. 1165 00:51:58,630 --> 00:52:02,330 Dan kita bercakap tentang idea ini, yang kita akan datang kembali ke dalam minggu 1166 00:52:02,330 --> 00:52:07,140 datang, melihat memori sebagai sekumpulan keseluruhan ini disusun 1167 00:52:07,140 --> 00:52:08,540 dulang, jadi untuk bercakap. 1168 00:52:08,540 --> 00:52:13,460 Dari bawah ke atas sehingga, bahawa setiap dulang yang mendapat diletakkan di atas timbunan mewakili 1169 00:52:13,460 --> 00:52:15,160 fungsi yang sedang dipanggil. 1170 00:52:17,970 --> 00:52:20,300 Apa-apa soalan? 1171 00:52:20,300 --> 00:52:22,890 Jadi bagaimana pula - biarlah saya cuba bertanya soalan. 1172 00:52:22,890 --> 00:52:25,520 Saya terus rosak, tetapi sekarang it's - you've semua melihat muka budak itu. 1173 00:52:25,520 --> 00:52:27,020 Jadi kita akan kembali itu. 1174 00:52:27,020 --> 00:52:29,700 >> Jadi biarlah saya bertanya soalan di sini. 1175 00:52:29,700 --> 00:52:34,810 Biar saya memudahkan belakang ini kepada apa yang ia sebelum beberapa Q & A. awal kami 1176 00:52:34,810 --> 00:52:41,730 Dan hakikat bahawa kenaikan mempunyai kurungan terbuka, nombor int, ditutup 1177 00:52:41,730 --> 00:52:42,260 kurungan. 1178 00:52:42,260 --> 00:52:46,370 Apa tidak mewakili nombor int? 1179 00:52:46,370 --> 00:52:47,250 [Didengar] 1180 00:52:47,250 --> 00:52:47,870 DAVID J. MALAN: hujah Satu. 1181 00:52:47,870 --> 00:52:50,732 Okay, tetapi apa hujah? 1182 00:52:50,732 --> 00:52:51,620 [Didengar] 1183 00:52:51,620 --> 00:52:52,500 DAVID J. MALAN: Maaf, apa itu? 1184 00:52:52,500 --> 00:52:53,150 SPEAKER 3: Sesuatu yang anda lulus masuk 1185 00:52:53,150 --> 00:52:53,570 DAVID J. MALAN: Okay. 1186 00:52:53,570 --> 00:52:54,780 Jadi sesuatu yang anda lulus masuk 1187 00:52:54,780 --> 00:52:56,560 Dan lebih amnya, ia hanya input. 1188 00:52:56,560 --> 00:52:59,860 Jika anda sedang menulis fungsi dan tujuan yang berfungsi dalam kehidupan adalah untuk melakukan 1189 00:52:59,860 --> 00:53:03,290 sesuatu yang sedikit berbeza setiap kali anda menggunakannya, maka satu-satunya cara untuk 1190 00:53:03,290 --> 00:53:07,710 yang berlaku benar-benar akan kelihatan untuk menyediakan ia dengan input supaya ia 1191 00:53:07,710 --> 00:53:10,180 boleh melakukan sesuatu yang berbeza dengan input itu setiap masa. 1192 00:53:10,180 --> 00:53:13,590 >> Jadi, anda perlu untuk menentukan dua perkara apabila fungsi mengambil input. 1193 00:53:13,590 --> 00:53:17,240 Anda perlu nyatakan nama yang anda mahu untuk memberi input yang, semata-mata untuk 1194 00:53:17,240 --> 00:53:20,790 kemudahan anda sendiri supaya anda boleh merujuk kepada fungsi yang anda 1195 00:53:20,790 --> 00:53:23,610 diri sendiri menulis, seperti yang saya lakukan di sini dalam 32 baris. 1196 00:53:23,610 --> 00:53:27,840 Tetapi anda juga perlu untuk menentukan jenis kerana C adalah bahasa pengaturcaraan 1197 00:53:27,840 --> 00:53:28,840 yang hanya memerlukan 1198 00:53:28,840 --> 00:53:31,810 bahawa jika anda mahu pembolehubah, anda perlu untuk memberitahu komputer apa 1199 00:53:31,810 --> 00:53:32,790 data menaip ia adalah, 1200 00:53:32,790 --> 00:53:35,540 sebahagian besar supaya ia tahu berapa banyak bit untuk 1201 00:53:35,540 --> 00:53:37,230 memperuntukkan bagi pembolehubah yang. 1202 00:53:37,230 --> 00:53:38,600 Kerana ia boleh menjadi enam - 1203 00:53:38,600 --> 00:53:39,990 maaf, ia tidak akan menjadi enam. 1204 00:53:39,990 --> 00:53:41,050 Ia boleh menjadi 16. 1205 00:53:41,050 --> 00:53:41,630 Ia boleh menjadi 8. 1206 00:53:41,630 --> 00:53:44,410 Ia boleh menjadi 32, walaupun 64. 1207 00:53:44,410 --> 00:53:45,820 Tetapi komputer perlu tahu. 1208 00:53:45,820 --> 00:53:49,110 Sekarang int di sebelah kiri mewakili apa, sebaliknya? 1209 00:53:52,825 --> 00:53:53,780 [Didengar] 1210 00:53:53,780 --> 00:53:54,570 DAVID J. MALAN: Apa itu? 1211 00:53:54,570 --> 00:53:55,390 [Didengar] 1212 00:53:55,390 --> 00:53:57,920 J. DAVID MALAN: Jenis fungsi dan, lebih khusus, 1213 00:53:57,920 --> 00:53:59,755 jenis output. 1214 00:53:59,755 --> 00:54:00,220 Betul. 1215 00:54:00,220 --> 00:54:04,220 Jadi, manakala perkara dalam kurungan mewakili input, jika ada, 1216 00:54:04,220 --> 00:54:06,640 perkara ke kiri mewakili output. 1217 00:54:06,640 --> 00:54:10,560 Dan dalam kes ini, kenaikan nampaknya kembali int. 1218 00:54:10,560 --> 00:54:14,590 Dan sebagainya int adalah jenis pulangan fungsi ini. 1219 00:54:14,590 --> 00:54:16,090 >> Apakah maknanya untuk pulangan? 1220 00:54:16,090 --> 00:54:19,810 Secara harfiah, anda menggunakan pulangan kata kunci. 1221 00:54:19,810 --> 00:54:24,640 Dan kemudian jika apa yang anda akan kembali kepada hak kata kunci adalah 1222 00:54:24,640 --> 00:54:28,340 integer, maka itu adalah memang selaras dengan apa yang kita telah dijanjikan. 1223 00:54:28,340 --> 00:54:31,110 Anda tidak dapat melakukan sesuatu seperti ini - 1224 00:54:31,110 --> 00:54:32,280 hello, dunia 1225 00:54:32,280 --> 00:54:33,500 kerana itu adalah rentetan. 1226 00:54:33,500 --> 00:54:35,440 Jelas sekali ia bukan integer. 1227 00:54:35,440 --> 00:54:40,450 Jadi dalam jangka pendek, beban adalah benar-benar kepada kami, pengaturcara, khusus sebagai 1228 00:54:40,450 --> 00:54:44,730 apa yang kita sedang kembali dan kemudian sebenarnya pergi tentang kembali ia. 1229 00:54:44,730 --> 00:54:49,030 Dan kemudian untuk membuat anak lelaki lebih jelas konteks - 1230 00:54:49,030 --> 00:54:50,080 ada dia sekali lagi. 1231 00:54:50,080 --> 00:54:51,060 Konteks - 1232 00:54:51,060 --> 00:54:52,830 kejutan besar datang dalam hanya seketika. 1233 00:54:52,830 --> 00:54:57,720 Konteks di sini sekarang ialah bahawa memori komputer anda, sekali lagi, 1234 00:54:57,720 --> 00:54:59,070 gigabyte, dua gigabait, apa sahaja. 1235 00:54:59,070 --> 00:54:59,630 Mungkin ia lebih. 1236 00:54:59,630 --> 00:55:00,540 Mungkin ia adalah kurang. 1237 00:55:00,540 --> 00:55:03,750 Tetapi komputer memandang ia sebagai mempunyai bahagian yang berbeza. 1238 00:55:03,750 --> 00:55:04,860 Sesuatu yang pergi bawah sana. 1239 00:55:04,860 --> 00:55:06,020 Sesuatu yang lain naik sana. 1240 00:55:06,020 --> 00:55:07,540 Barangan yang berbeza berlaku di tengah-tengah. 1241 00:55:07,540 --> 00:55:09,300 Dan hari ini, kami hanya mula menceritakan kisah ini. 1242 00:55:09,300 --> 00:55:11,130 >> Tetapi kami akan datang kembali ke masa ini lebih. 1243 00:55:11,130 --> 00:55:15,000 Buat masa sekarang, hanya sekeping memori kita benar-benar mengambil berat tentang adalah segmen teks 1244 00:55:15,000 --> 00:55:17,160 kerana yang hanya mewakili sifar dan orang-orang yang 1245 00:55:17,160 --> 00:55:18,460 dilafaz telah outputted. 1246 00:55:18,460 --> 00:55:21,570 Jadi, apabila anda menjalankan arahan pada keyboard seperti a.out, atau anda dua kali ganda 1247 00:55:21,570 --> 00:55:25,350 klik ikon pada Mac OS atau Windows, program anda dimuatkan dari keras anda 1248 00:55:25,350 --> 00:55:26,930 memandu ke dalam RAM. 1249 00:55:26,930 --> 00:55:30,850 Dan ia plopped di atas RAM komputer anda, jadi untuk bercakap. 1250 00:55:30,850 --> 00:55:35,470 Sekarang Sementara itu, sebagai program anda mula berjalan utama dan mendapat dipanggil dalam 1251 00:55:35,470 --> 00:55:39,240 program yang anda menulis atau program Microsoft atau Apple menulis, mana-mana 1252 00:55:39,240 --> 00:55:42,930 pembolehubah tempatan akhirnya di bawah sana di bahagian bawah memori komputer anda. 1253 00:55:42,930 --> 00:55:46,490 Tetapi jika utama memanggil fungsi yang lain itu sendiri mempunyai pembolehubah atau 1254 00:55:46,490 --> 00:55:48,340 hujah, mereka akhirnya di atasnya. 1255 00:55:48,340 --> 00:55:50,670 Dan jika fungsi yang menyeru sesuatu, mereka akhirnya di atasnya, 1256 00:55:50,670 --> 00:55:51,840 atas, di atas ia. 1257 00:55:51,840 --> 00:55:56,100 Dan hanya sekali fungsi dilakukan melaksanakan tidak timbunan dulang, jadi 1258 00:55:56,100 --> 00:55:58,320 untuk bercakap, mula untuk mendapatkan lebih rendah dan lebih rendah. 1259 00:55:58,320 --> 00:56:03,370 Dan ini adalah apa itu, secara ringkas, menjelaskan mengapa, apabila anda memanggil kiub - 1260 00:56:03,370 --> 00:56:04,660 atau anda memanggil kenaikan - 1261 00:56:04,660 --> 00:56:06,490 anda lulus dalam salinan nilai. 1262 00:56:06,490 --> 00:56:09,840 Dan apa yang bermakna bergambar adalah bahawa anda benar-benar menulis 1263 00:56:09,840 --> 00:56:14,540 nombor 1 dalam bahagian lain ingatan, perubahan yang 1 ke 2, dalam kes 1264 00:56:14,540 --> 00:56:15,360 kenaikan - 1265 00:56:15,360 --> 00:56:17,450 atau 8 lagi, dalam kes kiub - 1266 00:56:17,450 --> 00:56:21,450 dan kemudian membuang memori yang jauh secepat kenaikan atau kiub 1267 00:56:21,450 --> 00:56:23,410 fungsi pulangan. 1268 00:56:23,410 --> 00:56:24,267 >> Soalan. 1269 00:56:24,267 --> 00:56:25,517 [Didengar] 1270 00:56:28,090 --> 00:56:29,970 DAVID J. MALAN: Jika - pembolehubah global disimpan dalam apa 1271 00:56:29,970 --> 00:56:32,960 kini dipanggil data dimulakan atau data yang tidak diisytiharkan. 1272 00:56:32,960 --> 00:56:35,900 Perbezaannya, jika anda mempunyai pembolehubah global, dan anda mengatakan ia 1273 00:56:35,900 --> 00:56:39,530 segera nilai dengan sama menandatangani, ia berakhir di atas sana. 1274 00:56:39,530 --> 00:56:43,390 Dan jika anda hanya mengatakan int x koma bernoktah dengan tiada nilai, ia berakhir sedikit 1275 00:56:43,390 --> 00:56:46,670 lebih rendah dalam RAM hanya dengan konvensyen. 1276 00:56:46,670 --> 00:56:49,308 Soalan lain. 1277 00:56:49,308 --> 00:56:49,750 Semua hak. 1278 00:56:49,750 --> 00:56:53,040 >> Jadi gambar ini akan kembali seperti yang kita mendapatkan lebih berkuasa dengan apa yang kita boleh lakukan 1279 00:56:53,040 --> 00:56:53,830 dengan komputer. 1280 00:56:53,830 --> 00:56:58,790 Tetapi untuk sekarang, mari kita mempunyai intro ringkas untuk kriptografi, jenis tertentu 1281 00:56:58,790 --> 00:57:01,910 kriptografi yang tidak menyelesaikan semua masalah di dunia tetapi tidak menyelesaikan 1282 00:57:01,910 --> 00:57:02,480 sebahagian daripada mereka. 1283 00:57:02,480 --> 00:57:06,090 Dalam kes ini di sini, kita mempunyai sesuatu yang dipanggil kriptografi kunci rahsia. 1284 00:57:06,090 --> 00:57:10,430 Dan kriptografi kunci rahsia, seperti namanya, mendapat keselamatan 1285 00:57:10,430 --> 00:57:11,330 dari rahsia. 1286 00:57:11,330 --> 00:57:14,720 Jadi, sebagai contoh, jika anda kembali di sekolah gred dan anda lulus 1287 00:57:14,720 --> 00:57:18,040 sedikit surat cinta rahsia untuk lelaki atau perempuan anda menghancurkan - jika anda 1288 00:57:18,040 --> 00:57:20,820 mahu lulus bahawa melalui penonton, anda mungkin tidak akan menulis 1289 00:57:20,820 --> 00:57:24,120 seperti nota dalam Bahasa Inggeris atau apa sahaja bahasa ibunda anda, sebaliknya, anda 1290 00:57:24,120 --> 00:57:25,800 mungkin menyulitkan. 1291 00:57:25,800 --> 00:57:27,820 Atau anda mungkin hanya menghantar mereka mesej teks pada hari ini. 1292 00:57:27,820 --> 00:57:30,310 Tetapi anda sebenarnya mungkin pas mereka nota sepanjang kelas. 1293 00:57:30,310 --> 00:57:33,820 Dan untuk melakukan ini selamat, dalam apa-apa cara yang anda rakan-rakan dan guru 1294 00:57:33,820 --> 00:57:36,820 tidak tahu apa yang anda menulis, anda mungkin tampil dengan agak mudah 1295 00:57:36,820 --> 00:57:37,800 algoritma - 1296 00:57:37,800 --> 00:57:39,290 muda walaupun anda mungkin - 1297 00:57:39,290 --> 00:57:40,780 hanya perebutan perkataan. 1298 00:57:40,780 --> 00:57:44,390 Jadi, daripada menulis A, anda mungkin menulis B. Sebaliknya B, anda mungkin menulis 1299 00:57:44,390 --> 00:57:46,670 C. Sebaliknya C, anda mungkin menulis D, dan sebagainya. 1300 00:57:46,670 --> 00:57:50,020 Atau anda boleh tampil dengan terjemahan yang lebih canggih surat 1301 00:57:50,020 --> 00:57:51,300 surat yang berbeza. 1302 00:57:51,300 --> 00:57:55,440 Tetapi tangkapan adalah lelaki atau perempuan kepada siapa anda menghantar nota ini perlu 1303 00:57:55,440 --> 00:57:56,850 tahu sesuatu. 1304 00:57:56,850 --> 00:57:59,620 Yang adalah apa yang jelas? 1305 00:57:59,620 --> 00:58:01,400 Seperti, apa rahsia anda. 1306 00:58:01,400 --> 00:58:04,620 Seperti, apakah bahawa pemetaan antara A dan B dan C. dan Ds? 1307 00:58:04,620 --> 00:58:08,780 Adakah ia hanya menambah satu, jadi untuk bercakap, untuk setiap huruf untuk pergi dari 1308 00:58:08,780 --> 00:58:09,730 A ke B, B ke C? 1309 00:58:09,730 --> 00:58:11,350 Adakah ia lebih kompleks daripada itu? 1310 00:58:11,350 --> 00:58:16,450 Jadi anda dan menghancurkan anda perlu mempunyai maklumat ini rahsia. 1311 00:58:16,450 --> 00:58:18,170 Tetapi ada jenis tangkapan-22 di sini. 1312 00:58:18,170 --> 00:58:20,760 Jika ini adalah kali pertama anda menghantar surat cinta ini melalui 1313 00:58:20,760 --> 00:58:25,590 kelas, bagaimana bahawa lelaki atau perempuan akan tahu apa rahsia walaupun? 1314 00:58:25,590 --> 00:58:28,450 Jadi rahsia utama kripto tidak menyelesaikan semua masalah di dunia. 1315 00:58:28,450 --> 00:58:30,490 Dan sebenarnya ada hubungan kita akan kembali ke arah 1316 00:58:30,490 --> 00:58:31,370 semester akhir. 1317 00:58:31,370 --> 00:58:35,970 >> Begitu juga, tidak seorang pun daripada kami mungkin pernah menghantar - 1318 00:58:35,970 --> 00:58:39,453 begitu juga, adakah kebanyakan kita tidak tahu seseorang yang bekerja, misalnya, pada 1319 00:58:39,453 --> 00:58:40,300 Amazon.com. 1320 00:58:40,300 --> 00:58:43,130 Dan lagi, ramai di antara kita mungkin telah membeli barangan di Amazon.com. 1321 00:58:43,130 --> 00:58:45,670 Dan kita telah diajar untuk menganggap bahawa ini e-dagang 1322 00:58:45,670 --> 00:58:47,060 transaksi adalah selamat. 1323 00:58:47,060 --> 00:58:47,210 Betul? 1324 00:58:47,210 --> 00:58:49,310 URL mungkin mengatakan https. 1325 00:58:49,310 --> 00:58:51,590 Ada mungkin ikon mangga sedikit bodoh tempat. 1326 00:58:51,590 --> 00:58:54,680 Terdapat beberapa jenis kriptografi mendapatkan maklumat kad kredit anda 1327 00:58:54,680 --> 00:58:56,980 antara anda dan Amazon.com. 1328 00:58:56,980 --> 00:59:00,410 Dan lagi, jika kriptografi melibatkan mengetahui rahsia sesetengah orang, tetapi saya tidak 1329 00:59:00,410 --> 00:59:03,330 tahu sesiapa di Amazon, dan saya pasti tidak mengatur sebarang 1330 00:59:03,330 --> 00:59:07,350 rahsia dengan seseorang di Amazon, bagaimana komputer saya atau pelayar saya melakukan ini? 1331 00:59:07,350 --> 00:59:10,100 Nah, ternyata terdapat lain-lain jenis kriptografi sama sekali yang menyelesaikan 1332 00:59:10,100 --> 00:59:10,740 masalah itu. 1333 00:59:10,740 --> 00:59:13,610 Tetapi hari ini, kita akan memberi tumpuan pada satu yang mudah, di mana anda boleh menguruskan dalam 1334 00:59:13,610 --> 00:59:18,480 memajukan tahu beberapa rahsia, seperti campur 1 atau beberapa pemetaan antara As dan Bs. 1335 00:59:18,480 --> 00:59:20,710 >> Dan proses kriptografi umumnya melibatkan ini. 1336 00:59:20,710 --> 00:59:23,550 Anda mempunyai beberapa teks biasa, digambarkan di sini di sebelah kiri. 1337 00:59:23,550 --> 00:59:26,260 Anda menjalankan melalui beberapa jenis algoritma atau prosedur 1338 00:59:26,260 --> 00:59:27,670 untuk menyulitkan ia. 1339 00:59:27,670 --> 00:59:31,390 Mungkin itu hanya menjadi B, B menjadi C. Dan kemudian anda berakhir dengan 1340 00:59:31,390 --> 00:59:32,260 cipher teks. 1341 00:59:32,260 --> 00:59:36,450 Sementara itu, sekali menghancurkan anda menerima nota rahsia, dia mempunyai untuk kemudian 1342 00:59:36,450 --> 00:59:39,950 menyahsulit oleh amnya menterbalikkan algoritma yang supaya dapat 1343 00:59:39,950 --> 00:59:41,640 kembali teks biasa. 1344 00:59:41,640 --> 00:59:43,860 Sekarang terdapat jelmaan fizikal ini. 1345 00:59:43,860 --> 00:59:46,720 Sebagai contoh, ini adalah cincin penyahkod rahsia sedikit. 1346 00:59:46,720 --> 00:59:50,060 Dan ini adalah cincin dalam erti kata bahawa terdapat dua cepat di sini. 1347 00:59:50,060 --> 00:59:53,630 Di pinggir luar perkara ini, ada huruf A hingga Z, 1348 00:59:53,630 --> 00:59:55,110 walaupun mereka berada dalam susunan rawak. 1349 00:59:55,110 --> 00:59:58,410 Dan di bahagian dalam, terdapat sebenarnya beberapa nombor, seperti yang dengan ini 1350 00:59:58,410 --> 01:00:02,940 cincin, anda jenis boleh bertukar luar tetapi tidak dalam untuk beratur 1351 01:00:02,940 --> 01:00:04,110 nombor dengan huruf. 1352 01:00:04,110 --> 01:00:08,290 Dan dalam klip anda kira-kira untuk melihat - beberapa yang anda mungkin telah melihat 24/7 1353 01:00:08,290 --> 01:00:11,120 sekitar musim Krismas dari filem yang dipanggil A Story Krismas. 1354 01:00:11,120 --> 01:00:16,050 Anda akan melihat bahawa Ralphie sedikit adalah begitu bersemangat untuk mengetahui apa yang anak yatim sedikit 1355 01:00:16,050 --> 01:00:19,810 Mesej rahsia Annie adalah kepadanya yang telah disampaikan, saya fikir, dalam 1356 01:00:19,810 --> 01:00:22,810 membentuk mesej angka pada kotak bersiri. 1357 01:00:22,810 --> 01:00:26,760 Dan anda terpaksa mengumpul semua kad kecil yang datang 1358 01:00:26,760 --> 01:00:27,480 di dalam kotak bijirin. 1359 01:00:27,480 --> 01:00:28,320 Anda terpaksa untuk mel mereka masuk 1360 01:00:28,320 --> 01:00:31,060 Anda terpaksa mendapatkan kembali cincin penyahkod rahsia, supaya anda akhirnya boleh memahami 1361 01:00:31,060 --> 01:00:34,190 keluar apa pemetaan adalah antara huruf dan nombor, 1362 01:00:34,190 --> 01:00:35,420 atau surat dan surat. 1363 01:00:35,420 --> 01:00:39,790 Jadi saya memberi anda ini klip pendek dari Kisah Krismas A untuk memotivasikan pset 2 dan 1364 01:00:39,790 --> 01:00:42,340 perbincangan, dalam seketika, tatasusunan. 1365 01:00:42,340 --> 01:00:43,773 Jadi di sini kita mempunyai Ralphie. 1366 01:00:43,773 --> 01:00:44,126 >> [Video main] 1367 01:00:44,126 --> 01:00:47,470 -Jadilah ia dikenali untuk segala-galanya bahawa Ralph Parker adalah dengan ini dilantik sebagai 1368 01:00:47,470 --> 01:00:50,690 ahli Anak-Anak Yatim Little Secret Circle Annie dan adalah berhak kepada semua 1369 01:00:50,690 --> 01:00:53,500 penghormatan dan faedah yang berlaku dengannya. 1370 01:00:53,500 --> 01:00:56,040 -Ditandatangani, Anak-Anak Yatim Little Annie. 1371 01:00:56,040 --> 01:00:58,730 Ditandatangan balas, Pierre Andre! 1372 01:00:58,730 --> 01:01:00,150 Dalam dakwat! 1373 01:01:00,150 --> 01:01:02,910 Kepujian dan faedah, sudah pada usia sembilan tahun. 1374 01:01:09,970 --> 01:01:10,730 Ayuh, mari kita mendapatkan dengan ia. 1375 01:01:10,730 --> 01:01:15,000 Saya tidak perlu semua bahawa jazz tentang penyeludup dan lanun. 1376 01:01:15,000 --> 01:01:17,624 Dengar malam esok untuk pengembaraan penutup Hitam 1377 01:01:17,624 --> 01:01:19,710 Kapal lanun. 1378 01:01:19,710 --> 01:01:23,380 Kini sudah tiba masanya untuk mesej rahsia Annie untuk anda ahli 1379 01:01:23,380 --> 01:01:25,670 Circle Rahsia. 1380 01:01:25,670 --> 01:01:30,260 Ingat, anak-anak, ahli sahaja Circle Rahsia Annie boleh decode 1381 01:01:30,260 --> 01:01:31,660 Annie mesej rahsia. 1382 01:01:31,660 --> 01:01:36,230 Ingat, Annie adalah bergantung kepada anda. 1383 01:01:36,230 --> 01:01:38,720 Tetapkan pin anda kepada B2. 1384 01:01:38,720 --> 01:01:41,040 Berikut adalah mesej. 1385 01:01:41,040 --> 01:01:42,470 12, 11 - 1386 01:01:42,470 --> 01:01:46,000 Saya dalam mesyuarat rahsia pertama saya. 1387 01:01:46,000 --> 01:01:49,440 -14, 11, 18, 16 - 1388 01:01:49,440 --> 01:01:51,700 -Pierre berada di malam suara yang besar. 1389 01:01:51,700 --> 01:01:54,890 Saya boleh memberitahu bahawa mesej malam ini adalah benar-benar penting. 1390 01:01:54,890 --> 01:01:56,750 -3, 25. 1391 01:01:56,750 --> 01:01:58,590 Itulah mesej dari Annie dirinya. 1392 01:01:58,590 --> 01:01:59,840 Ingat, jangan beritahu sesiapa. 1393 01:02:04,570 --> 01:02:08,750 -90 Seconds kemudian, saya di dalam bilik hanya di dalam rumah di mana seorang budak sembilan 1394 01:02:08,750 --> 01:02:12,980 boleh duduk dalam privasi dan decode. 1395 01:02:12,980 --> 01:02:17,130 Aha, B. Saya pergi ke depan. 1396 01:02:17,130 --> 01:02:20,330 E. Perkataan pertama adalah. 1397 01:02:20,330 --> 01:02:22,670 S. Ia telah datang lebih mudah sekarang. 1398 01:02:22,670 --> 01:02:24,590 U. 1399 01:02:24,590 --> 01:02:26,510 -Oh, datang pada, Ralphie. 1400 01:02:26,510 --> 01:02:28,430 Saya mendapat untuk pergi. 1401 01:02:28,430 --> 01:02:30,350 -I'll menjadi sampai, ma. 1402 01:02:30,350 --> 01:02:33,720 Gee jagoan. 1403 01:02:33,720 --> 01:02:38,270 -T, O. Pastikan. 1404 01:02:38,270 --> 01:02:40,000 Pastikan kepada apa? 1405 01:02:40,000 --> 01:02:42,105 Apa yang Anak-Anak Yatim Little Annie cuba katakan? 1406 01:02:42,105 --> 01:02:43,095 Pastikan kepada apa? 1407 01:02:43,095 --> 01:02:43,590 -Ralphie! 1408 01:02:43,590 --> 01:02:44,580 Randy telah mendapat untuk pergi. 1409 01:02:44,580 --> 01:02:45,570 Anda akan sila keluar? 1410 01:02:45,570 --> 01:02:46,560 Baiklah, ma. 1411 01:02:46,560 --> 01:02:48,540 Saya akan segera keluar. 1412 01:02:48,540 --> 01:02:50,580 Saya semakin hampir sekarang. 1413 01:02:50,580 --> 01:02:52,550 Ketegangan was terrible. 1414 01:02:52,550 --> 01:02:53,355 Apakah ia? 1415 01:02:53,355 --> 01:02:56,315 Nasib planet ini boleh meragukan. 1416 01:02:56,315 --> 01:02:56,790 -Ralphie! 1417 01:02:56,790 --> 01:02:59,165 Randy mendapat untuk pergi. 1418 01:02:59,165 --> 01:03:02,310 -I'll menjadi hak keluar, Astaga. 1419 01:03:02,310 --> 01:03:04,000 Gee, hampir di sana. 1420 01:03:04,000 --> 01:03:05,180 Jari saya terbang. 1421 01:03:05,180 --> 01:03:07,150 Fikiran saya adalah perangkap keluli. 1422 01:03:07,150 --> 01:03:08,790 Setiap liang digetarkan. 1423 01:03:08,790 --> 01:03:10,040 Ia adalah hampir jelas. 1424 01:03:10,040 --> 01:03:13,400 Ya, ya, ya, ya. 1425 01:03:13,400 --> 01:03:18,960 Pastikan untuk minum Ovaltine anda. 1426 01:03:18,960 --> 01:03:20,210 Ovaltine? 1427 01:03:24,010 --> 01:03:25,260 A komersial tdk bagus? 1428 01:03:28,200 --> 01:03:29,640 Bedebah. 1429 01:03:29,640 --> 01:03:33,340 [Video main AKHIR] 1430 01:03:33,340 --> 01:03:36,040 >> DAVID J. MALAN: Jadi ada kita mempunyai kriptografi. 1431 01:03:36,040 --> 01:03:39,670 Jadi bagaimana dalam komputer kita boleh pergi tentang melaksanakan atau 1432 01:03:39,670 --> 01:03:40,950 mewakili perkara-perkara seperti ini? 1433 01:03:40,950 --> 01:03:44,430 Nah, kita memerlukan satu cara untuk menyatakan diri kita sedikit lebih fleksibel daripada 1434 01:03:44,430 --> 01:03:46,420 pembolehubah kami setakat ini telah dibenarkan. 1435 01:03:46,420 --> 01:03:47,370 Kami telah ints. 1436 01:03:47,370 --> 01:03:48,380 Kami telah aksara. 1437 01:03:48,380 --> 01:03:50,790 Kami telah terapung dan beregu dan beberapa yang lain. 1438 01:03:50,790 --> 01:03:55,050 Tetapi orang-orang yang keping individu memori yang tidak benar-benar membolehkan kita untuk 1439 01:03:55,050 --> 01:03:58,010 menyatakan perkara seperti perkataan dan ayat dan frasa. 1440 01:03:58,010 --> 01:04:00,200 Malah, kita telah dipanggil rentetan perkara-perkara. 1441 01:04:00,200 --> 01:04:03,650 Tetapi kita berjanji bahawa ini adalah benar-benar hanya pemudahan dalam CS50 1442 01:04:03,650 --> 01:04:07,020 perpustakaan yang kita sedang berniat untuk mengupas kembali. 1443 01:04:07,020 --> 01:04:08,970 >> Dan jadi mari kita mulakan untuk berbuat demikian di sini. 1444 01:04:08,970 --> 01:04:11,130 Biar saya pergi ke hadapan dan membuka fail - 1445 01:04:11,130 --> 01:04:13,770 semua fail-fail ini boleh didapati sebagai talian biasa - 1446 01:04:13,770 --> 01:04:19,120 dipanggil array.c untuk menyelesaikan masalah yang berkaitan dengan rentetan tetapi yang cat 1447 01:04:19,120 --> 01:04:23,040 gambar di sini bagaimana kita boleh menggunakan sesuatu yang dipanggil array. 1448 01:04:23,040 --> 01:04:25,530 Pelbagai jenis data. 1449 01:04:25,530 --> 01:04:31,320 Ia adalah sejenis pembolehubah, macam, yang mempunyai pelbagai jenis data yang lebih kecil 1450 01:04:31,320 --> 01:04:34,150 dalamnya kembali ke belakang untuk kembali ke belakang. 1451 01:04:34,150 --> 01:04:37,700 Jadi, sebagai contoh, jika kita mahu menulis program kecil yang memberikan anda 1452 01:04:37,700 --> 01:04:42,110 kuiz purata bagi kursus seperti 50 yang mempunyai dua kuiz, anda boleh sangat mudah 1453 01:04:42,110 --> 01:04:45,170 menulis program ini berasaskan walaupun pada beberapa bahan minggu lepas - 1454 01:04:45,170 --> 01:04:47,770 dengan menggunakan GetInt dan beberapa pembolehubah. 1455 01:04:47,770 --> 01:04:51,920 Int quiz1, int quiz2, dan ia agak mudah. 1456 01:04:51,920 --> 01:04:55,930 Ia mungkin 10, 20 baris kod, maks, untuk melaksanakan program yang meminta 1457 01:04:55,930 --> 01:05:01,170 pengguna untuk dua skor kuiz dan kemudian mengira purata mereka dengan menambah mereka 1458 01:05:01,170 --> 01:05:03,850 bersama-sama, terbahagi kepada dua, dan kemudian mencetak keputusan. 1459 01:05:03,850 --> 01:05:06,380 Kita mungkin boleh berbuat demikian cukup mudah sekarang selepas 1460 01:05:06,380 --> 01:05:07,510 beberapa beberapa minit. 1461 01:05:07,510 --> 01:05:11,005 >> Tetapi masalahnya ialah yang mengandaikan bahawa 50 mempunyai tiga kuiz atau empat. 1462 01:05:11,005 --> 01:05:13,510 Katakan bahawa anda mahu menggunakan program yang sama untuk kelas yang mempunyai 1463 01:05:13,510 --> 01:05:14,850 mingguan kuiz. 1464 01:05:14,850 --> 01:05:16,610 Fikirkan tentang kelas yang telah mingguan kuiz. 1465 01:05:16,610 --> 01:05:20,610 Jika ada seperti 16 atau jadi minggu dalam satu semester, sekarang anda mempunyai 16 pembolehubah - 1466 01:05:20,610 --> 01:05:24,270 int quiz1, int quiz2, int quiz3, quiz4 int. 1467 01:05:24,270 --> 01:05:27,560 Sebaik sahaja anda mula melihat lebihan ini, ini menyalin dan menampal 1468 01:05:27,560 --> 01:05:31,390 kod, ia harus bermula untuk membuat anda ingin terdapat satu cara yang lebih baik. 1469 01:05:31,390 --> 01:05:33,930 Dan bersyukur, kerana tatasusunan, ada. 1470 01:05:33,930 --> 01:05:34,980 Jadi mari kita buat ini. 1471 01:05:34,980 --> 01:05:38,430 Pertama, izinkan saya memperkenalkan satu perkara yang sangat mudah bahawa kita telah tidak digunakan setakat ini, 1472 01:05:38,430 --> 01:05:40,140 tetapi anda akan melihat ia kadang-kadang dalam kod. 1473 01:05:40,140 --> 01:05:42,360 Ini adalah apa yang biasanya dipanggil pemalar. 1474 01:05:42,360 --> 01:05:45,790 Jadi ia adalah berterusan dalam erti kata bahawa nilai ini tidak pernah berubah. 1475 01:05:45,790 --> 01:05:49,210 Konvensyen manusia apabila mewujudkan pemalar adalah untuk menggunakan semua modal 1476 01:05:49,210 --> 01:05:51,940 surat, hanya supaya ia benar-benar menonjol dalam kod anda. 1477 01:05:51,940 --> 01:05:55,960 Dan kata kunci khas yang anda gunakan dalam C # menentukan. 1478 01:05:55,960 --> 01:06:00,250 Jadi, jika anda katakan # menentukan, maka ruang, maka perkataan yang anda mahu gunakan untuk 1479 01:06:00,250 --> 01:06:03,260 pemalar nama, dan kemudian nilai pemalar. 1480 01:06:03,260 --> 01:06:06,180 Jadi notis, ini adalah berbeza daripada memberikan sesuatu kepada pembolehubah. 1481 01:06:06,180 --> 01:06:07,020 Tiada tanda sama. 1482 01:06:07,020 --> 01:06:08,240 Ada tiada koma bernoktah. 1483 01:06:08,240 --> 01:06:11,410 Ini adalah apa yang umumnya dikenali sebagai arahan prapemproses, tetapi lebih kepada 1484 01:06:11,410 --> 01:06:12,210 bahawa masa yang lain. 1485 01:06:12,210 --> 01:06:18,540 >> Buat masa sekarang, ini mewujudkan nilai yang tidak berubah dipanggil kuiz sebenar yang 1486 01:06:18,540 --> 01:06:19,940 nilai berangka ialah 2. 1487 01:06:19,940 --> 01:06:24,020 Jadi di mana-mana anda melihat kuiz, kuiz, kuiz seluruh fail ini, itulah 1488 01:06:24,020 --> 01:06:25,410 hanya nombor 2. 1489 01:06:25,410 --> 01:06:28,100 Sekarang, jika saya melihat utama sekarang, mari kita lihat bagaimana kerja-kerja ini. 1490 01:06:28,100 --> 01:06:29,500 Pada mulanya, ia kelihatan sedikit samar. 1491 01:06:29,500 --> 01:06:31,340 Tetapi ia adalah semua barangan dari satu minggu. 1492 01:06:31,340 --> 01:06:32,710 Tanya pengguna untuk gred. 1493 01:06:32,710 --> 01:06:33,630 Bagaimana kita melakukan ini? 1494 01:06:33,630 --> 01:06:35,470 Nah, dalam 22 baris - 1495 01:06:35,470 --> 01:06:37,210 ini adalah benar-benar bahagian yang berair - 1496 01:06:37,210 --> 01:06:40,960 Saya mengaku apungan, tetapi tidak hanya apungan tunggal. 1497 01:06:40,960 --> 01:06:44,620 Saya mengisytiharkan, sebaliknya, pelbagai nilai titik terapung. 1498 01:06:44,620 --> 01:06:49,100 Itu ubah akan dipanggil gred, seperti yang tersirat di sini. 1499 01:06:49,100 --> 01:06:53,080 Tetapi sekeping hanya sintaks baru maka ini kurungan persegi, hakikat 1500 01:06:53,080 --> 01:06:59,350 bahawa saya telah berkata gred apungan dan kemudian kurungan terbuka dan kemudian nombor. 1501 01:06:59,350 --> 01:07:02,460 Notis, jika ini adalah pemalar, ini adalah sama seperti yang kita lakukan ini. 1502 01:07:02,460 --> 01:07:06,890 Ini bermakna hey komputer, memberi saya dua terapung, dan mari kita secara kolektif memanggil 1503 01:07:06,890 --> 01:07:08,220 mereka gred. 1504 01:07:08,220 --> 01:07:11,920 Ini adalah Berbeza dengan proses yang lebih membosankan seperti ini. 1505 01:07:11,920 --> 01:07:15,850 Terapung grade1, terapung grade2, dan sebagainya. 1506 01:07:15,850 --> 01:07:20,010 Jadi array membolehkan kita untuk melaksanakan idea ini tetapi lebih kurang messily, dalam 1507 01:07:20,010 --> 01:07:24,630 apa-apa cara bahawa kita boleh menulis satu baris kod dan bukannya, katakan, 16 untuk 16 1508 01:07:24,630 --> 01:07:25,740 semester minggu. 1509 01:07:25,740 --> 01:07:29,950 Jadi saya tidak mahu keras-kod 2 kerana jika anda berfikir tentang perkara ini sekarang 1510 01:07:29,950 --> 01:07:34,160 logik - andaikan tahun depan CS50 perubahan kepada 3 kuiz sebaliknya. 1511 01:07:34,160 --> 01:07:35,510 Dan saya mempunyai nombor 2 di sini. 1512 01:07:35,510 --> 01:07:36,600 Saya mempunyai nombor 2 di sini. 1513 01:07:36,600 --> 01:07:37,580 Saya mempunyai nombor 2 di sini. 1514 01:07:37,580 --> 01:07:38,560 Saya mempunyai nombor 2 di sini. 1515 01:07:38,560 --> 01:07:43,180 Ia menjadi sangat membosankan dan sangat mudah untuk skru dan sengaja menukar 1516 01:07:43,180 --> 01:07:47,690 satu nilai kepada 3 dan terlepas beberapa nilai lain 2. 1517 01:07:47,690 --> 01:07:52,460 Jadi saya akan sebaliknya abstrak ini jauh dan menggunakan ini berterusan bahawa, seperti yang 1518 01:07:52,460 --> 01:07:54,120 nama mencadangkan, tidak pernah berubah. 1519 01:07:54,120 --> 01:07:57,710 Dan kini, tidak kira sama ada kita mempunyai berbeza kuiz tahun ini atau seterusnya, saya 1520 01:07:57,710 --> 01:08:01,210 hanya perlu untuk menukar ia di satu tempat, di sini di atas. 1521 01:08:01,210 --> 01:08:02,720 >> Jadi itulah semua yang berterusan adalah. 1522 01:08:02,720 --> 01:08:08,680 Sementara itu, ciri konsep baru yang pelbagai. 1523 01:08:08,680 --> 01:08:14,660 Jadi kurungan persegi memberikan saya ini terapung yang banyak dan membolehkan saya kolektif 1524 01:08:14,660 --> 01:08:16,630 memanggil mereka gred sini. 1525 01:08:16,630 --> 01:08:17,990 Jadi sekarang mari kita lihat apa yang saya akan lakukan. 1526 01:08:17,990 --> 01:08:20,359 Di sini dalam 24 baris adalah permulaan untuk gelung. 1527 01:08:20,359 --> 01:08:22,260 Ini adalah benar-benar mewah tiada. 1528 01:08:22,260 --> 01:08:25,060 Ia hanya menggunakan kuiz bukannya beberapa berkod keras. 1529 01:08:25,060 --> 01:08:27,790 Tetapi tiada apa-apa yang intelektual berbeza ada dari minggu lepas. 1530 01:08:27,790 --> 01:08:29,040 Ini adalah hanya printf. 1531 01:08:29,040 --> 01:08:35,490 Jadi printf ("kuiz nombor% d% d") kerana saya hanya mahu mencetak memberi saya kuiz 1532 01:08:35,490 --> 01:08:38,050 nombor salah satu daripada dua dan kemudian dua dua. 1533 01:08:38,050 --> 01:08:39,850 Jadi ini adalah semata-mata satu perkara yang estetik. 1534 01:08:39,850 --> 01:08:42,500 Tetapi bahagian yang menarik sekarang adalah dalam 27 baris. 1535 01:08:42,500 --> 01:08:48,310 Dalam usaha untuk mengisi salah satu daripada dua ruang letak dengan terapung-titik 1536 01:08:48,310 --> 01:08:51,029 nilai, anda sekali lagi menggunakan kurungan persegi. 1537 01:08:51,029 --> 01:08:55,620 Dalam kes ini, saya menggunakan i kerana ini untuk gelung telah bermula dengan i menyamai 1538 01:08:55,620 --> 01:08:57,560 apa nilai, nampaknya? 1539 01:08:57,560 --> 01:08:58,279 0. 1540 01:08:58,279 --> 01:09:01,350 >> Jadi pada lelaran pertama gelung ini, ia seolah-olah saya 1541 01:09:01,350 --> 01:09:02,689 menulis ini dalam kod. 1542 01:09:02,689 --> 01:09:05,580 Tetapi pada lelaran kedua gelung ini, ia seolah-olah saya 1543 01:09:05,580 --> 01:09:07,750 menulis ini dalam kod saya. 1544 01:09:07,750 --> 01:09:10,750 Tetapi hakikat bahawa saya menggunakan pembolehubah adalah sempurna kerana, sebagai nama 1545 01:09:10,750 --> 01:09:14,300 mencadangkan, ia mengubah nilai pada setiap lelaran. 1546 01:09:14,300 --> 01:09:17,370 Jadi saya mengisi array ini satu tempat pada satu masa. 1547 01:09:17,370 --> 01:09:18,910 Apakah array ini kelihatan seperti? 1548 01:09:18,910 --> 01:09:21,430 Nah, sebab saya menarik ini segiempat tepat super mudah pada skrin di sini 1549 01:09:21,430 --> 01:09:23,350 sebelum ini adalah atas sebab ini. 1550 01:09:23,350 --> 01:09:27,279 Pelbagai adalah hanya sebahagian memori yang diikuti oleh sebahagian yang lain memori, 1551 01:09:27,279 --> 01:09:30,109 diikuti oleh sebahagian yang lain memori, dan sebagainya. 1552 01:09:30,109 --> 01:09:35,260 Jadi, jika pelbagai saya adalah saiz 2, dalam kes ini di sini, semua saya akan dilakukan oleh 1553 01:09:35,260 --> 01:09:37,590 menaip dalam skor kuiz saya, seperti di sini. 1554 01:09:37,590 --> 01:09:39,430 Saya mendapat 100 pada satu ini. 1555 01:09:39,430 --> 01:09:42,020 Dan kemudian saya mendapat 99 pada satu ini. 1556 01:09:42,020 --> 01:09:46,040 Kemudian memori ini mungkin tidak boleh digunakan kerana saya hanya meminta 1557 01:09:46,040 --> 01:09:48,689 komputer untuk pelbagai saiz 2. 1558 01:09:48,689 --> 01:09:50,180 Mereka dataran masih ada. 1559 01:09:50,180 --> 01:09:50,340 Betul? 1560 01:09:50,340 --> 01:09:52,500 Anda masih mempunyai dua gigabait RAM, walaupun anda hanya 1561 01:09:52,500 --> 01:09:53,979 meminta untuk dua terapung. 1562 01:09:53,979 --> 01:09:58,710 Jadi idea di sebalik tatasusunan adalah bahawa komputer hanya mengambil sebahagian memori 1563 01:09:58,710 --> 01:10:03,230 dan kemudian apportions lebih kecil keping kembali ke belakang untuk kembali ke belakang. 1564 01:10:03,230 --> 01:10:04,740 Dan supaya semua pelbagai. 1565 01:10:04,740 --> 01:10:09,080 Ia adalah sebahagian memori yang berdampingan, di dalam mana anda boleh meletakkan perkara. 1566 01:10:09,080 --> 01:10:12,400 >> Sekarang ini berlaku kemudian melakukan hanya beberapa aritmetik membosankan. 1567 01:10:12,400 --> 01:10:16,170 Jika saya skrol ke bawah sini, ini adalah di mana saya kemudian melelar lebih array. 1568 01:10:16,170 --> 01:10:19,410 Saya datang dengan hasil tambah semua nilai dalam array. 1569 01:10:19,410 --> 01:10:22,390 Dan kemudian saya menggunakan fungsi bulat di sini untuk benar-benar melakukan 1570 01:10:22,390 --> 01:10:23,940 kesimpulan dibahagikan dengan kuiz. 1571 01:10:23,940 --> 01:10:27,450 Tetapi biarlah saya melambai tangan saya pada itu sebagai jenis aritmetik yang cukup untuk sekarang. 1572 01:10:27,450 --> 01:10:30,010 Tetapi semua itu melakukan untuk saya akhirnya mengira purata. 1573 01:10:30,010 --> 01:10:33,640 Jadi pertama kuiz ditambah kuiz kedua, dibahagikan dengan 2, dan kemudian percetakan 1574 01:10:33,640 --> 01:10:34,700 ia keluar sebagai int. 1575 01:10:34,700 --> 01:10:39,030 >> Tetapi mari kita kini peralihan kepada contoh yang berbeza dipanggil string1, 1576 01:10:39,030 --> 01:10:42,370 yang cat gambar yang sama tetapi menggunakan tali. 1577 01:10:42,370 --> 01:10:45,550 Biar saya pergi ke hadapan dan memudahkan ini hanya seketika. 1578 01:10:45,550 --> 01:10:48,340 Dan memaafkan lekukan sekarang. 1579 01:10:48,340 --> 01:10:52,280 Notis dalam 19 barisan contoh ini, saya mendapat satu rentetan dari pengguna. 1580 01:10:52,280 --> 01:10:55,780 Tetapi notis apa yang saya seterusnya melakukan dalam baris 22 dan seterusnya. 1581 01:10:55,780 --> 01:11:00,260 Saya sebenarnya iterating i sehingga - dan ini adalah helah baru - 1582 01:11:00,260 --> 01:11:02,730 strlen, tali panjang. 1583 01:11:02,730 --> 01:11:07,010 Ini adalah fungsi yang datang dengan C bahawa jika anda lulus rentetan, ia memberitahu 1584 01:11:07,010 --> 01:11:08,950 anda berapa banyak aksara dalam rentetan itu. 1585 01:11:08,950 --> 01:11:09,440 Itu semua. 1586 01:11:09,440 --> 01:11:12,520 Hakikat bahawa ia adalah strlen bukannya panjang rentetan adalah hanya kerana ia adalah 1587 01:11:12,520 --> 01:11:13,040 ringkas banyak lagi. 1588 01:11:13,040 --> 01:11:17,100 30 tahun lalu, orang suka untuk menulis perkara yang ringkas yang mungkin. 1589 01:11:17,100 --> 01:11:19,080 Jadi kami telah disimpan konvensyen itu di sini. 1590 01:11:19,080 --> 01:11:21,730 i + + hanya bermakna kenaikan i dalam setiap lelaran. 1591 01:11:21,730 --> 01:11:24,310 Dan kini notis ini, yang benar-benar menarik. 1592 01:11:24,310 --> 01:11:28,730 Jadi di baris 24, saya katakan komputer, memberikan saya watak, lapan 1593 01:11:28,730 --> 01:11:30,770 bit, dan memanggil ia c. 1594 01:11:30,770 --> 01:11:35,370 Tetapi apakah ini di sebelah kanan berkata? 1595 01:11:35,370 --> 01:11:38,150 Dalam bahasa Inggeris, apakah yang mewakili? 1596 01:11:38,150 --> 01:11:40,070 [Didengar] 1597 01:11:40,070 --> 01:11:40,490 DAVID J. MALAN: Tepat sekali. 1598 01:11:40,490 --> 01:11:42,390 Berikan saya watak pertama dalam array. 1599 01:11:42,390 --> 01:11:45,400 Atau lebih amnya, memberikan saya watak i-ke dalam array. 1600 01:11:45,400 --> 01:11:48,230 Dan menyedari ia adalah penting kini bahawa sebagai ahli-ahli sains komputer, kita sebenarnya 1601 01:11:48,230 --> 01:11:49,330 mengira dari 0. 1602 01:11:49,330 --> 01:11:51,290 Anda tidak mempunyai budi bicara sekarang untuk memulakan melakukan ini. 1603 01:11:51,290 --> 01:11:54,580 Sekarang anda perlu berkelakuan selaras dengan jangkaan komputer dan 1604 01:11:54,580 --> 01:11:58,010 mengira dari sifar kerana [0] akan menjadi yang pertama 1605 01:11:58,010 --> 01:11:59,670 watak dalam rentetan. 1606 01:11:59,670 --> 01:12:01,320 [1] akan menjadi yang kedua. 1607 01:12:01,320 --> 01:12:03,610 [2] akan menjadi ketiga, dan sebagainya. 1608 01:12:03,610 --> 01:12:08,840 Jadi program ini, jika saya menyusun - ini adalah, sekali lagi, string1. 1609 01:12:08,840 --> 01:12:11,040 >> Supaya membuat string1. 1610 01:12:11,040 --> 01:12:16,730 Dan sekarang saya menjalankan string1 dalam tetingkap terminal saya. 1611 01:12:16,730 --> 01:12:19,180 Ia menunggu untuk input, jadi saya akan menaip dalam, katakan, David. 1612 01:12:19,180 --> 01:12:20,080 Enter. 1613 01:12:20,080 --> 01:12:23,350 Dan kini ia mencetak DAVID semua pada garisan yang berbeza kerana 1614 01:12:23,350 --> 01:12:24,430 notis apa yang saya lakukan. 1615 01:12:24,430 --> 01:12:27,510 Saya mencetak satu aksara pada satu masa. 1616 01:12:27,510 --> 01:12:29,100 Sekarang kita tidak akan pergi ke terperinci hari ini mengenai perkara ini. 1617 01:12:29,100 --> 01:12:31,610 Tetapi saya dipadam seketika lalu semakan ini di sini. 1618 01:12:31,610 --> 01:12:36,310 Ia ternyata bahawa jika pengguna berkelakuan tidak senonoh, pertentangan, atau hanya 1619 01:12:36,310 --> 01:12:41,780 keliru, anda sebenarnya boleh gagal untuk memberi rentetan beberapa panjang. 1620 01:12:41,780 --> 01:12:43,640 Jika anda memukul kunci yang salah pada papan kekunci, anda mungkin memberi 1621 01:12:43,640 --> 01:12:44,390 tiada tali pada semua. 1622 01:12:44,390 --> 01:12:47,790 Atau jika anda berniat jahat, anda mungkin cuba untuk paste dalam bernilai gigabit sesuatu 1623 01:12:47,790 --> 01:12:49,380 esei untuk mengisi rentetan ini. 1624 01:12:49,380 --> 01:12:52,060 Dan jika komputer kehabisan memori, ternyata bahawa kita akan 1625 01:12:52,060 --> 01:12:54,310 untuk mendapatkan kembali nilai ini khas dipanggil batal. 1626 01:12:54,310 --> 01:12:57,550 Jadi untuk sekarang, hanya tahu bahawa terdapat nilai ini khas dipanggil nol bahawa 1627 01:12:57,550 --> 01:13:01,000 akan membolehkan kita untuk memeriksa apabila kita berada di luar ingatan, antara perkara-perkara lain. 1628 01:13:01,000 --> 01:13:07,330 >> Tetapi jika saya membuka sehingga kini string2, notis satu perbezaan di sini. 1629 01:13:07,330 --> 01:13:09,760 Notis satu perbezaan di sini dengan string2. 1630 01:13:09,760 --> 01:13:13,260 Mempunyai Dengan string2, ini bagi gelung adalah sedikit berbeza. 1631 01:13:13,260 --> 01:13:16,350 Biar saya memadam nulls supaya kita boleh bercakap tentang mereka masa yang lain. 1632 01:13:16,350 --> 01:13:18,460 Tetapi apa yang berbeza tentang gelung masa ini? 1633 01:13:21,580 --> 01:13:23,160 Dan saya boleh kembali ke contoh sebelumnya. 1634 01:13:23,160 --> 01:13:24,800 Jadi itulah versi kedua. 1635 01:13:24,800 --> 01:13:27,020 Ini adalah versi satu. 1636 01:13:27,020 --> 01:13:31,935 Satu, dua, satu 2. 1637 01:13:35,030 --> 01:13:38,240 Jadi panggilan strlen adalah di mana? 1638 01:13:38,240 --> 01:13:40,420 Ia adalah di bahagian pertama untuk gelung. 1639 01:13:40,420 --> 01:13:43,060 Mana-mana pemikiran tentang mengapa saya lakukan ini? 1640 01:13:43,060 --> 01:13:43,690 Yeah. 1641 01:13:43,690 --> 01:13:46,010 [Didengar] 1642 01:13:46,010 --> 01:13:47,630 DAVID J. MALAN: Jadi kita tidak memanggil fungsi setiap kali tunggal. 1643 01:13:47,630 --> 01:13:48,040 Tepat sekali. 1644 01:13:48,040 --> 01:13:50,350 Ingat dari untuk gelung yang mereka sangat mudah sebaik sahaja anda jenis 1645 01:13:50,350 --> 01:13:52,180 faham bahawa ini adalah pengawalan, 1646 01:13:52,180 --> 01:13:53,330 keadaan, dan kemas kini. 1647 01:13:53,330 --> 01:13:55,430 Masalahnya ialah bahawa keadaan yang berlaku pada setiap 1648 01:13:55,430 --> 01:13:56,600 lelaran gelung. 1649 01:13:56,600 --> 01:13:59,930 Dan sebagainya dalam contoh ini di sini, apa yang buruk tentang hakikat 1650 01:13:59,930 --> 01:14:03,500 bahawa ini adalah keadaan saya? 1651 01:14:03,500 --> 01:14:05,920 Anda memanggil strlen lagi dan lagi dan lagi. 1652 01:14:05,920 --> 01:14:08,990 Tetapi apabila saya telah ditaip di DAVID, panjang tali itu adalah lima. 1653 01:14:08,990 --> 01:14:11,560 Dan ia tidak akan berubah pada setiap lelaran gelung kerana 1654 01:14:11,560 --> 01:14:15,560 rentetan masih D-A-V-I-D. Jadi ini adalah satu petunjuk pada apa yang akan menjadi 1655 01:14:15,560 --> 01:14:19,650 idea yang semakin penting yang dikenali sebagai keputusan reka bentuk, di mana hanya tidak melakukan 1656 01:14:19,650 --> 01:14:21,640 membuat komputer melakukan kerja-kerja yang tidak perlu. 1657 01:14:21,640 --> 01:14:25,630 >> Sekarang hanya sebagai pratonton menyelinap pset 2, pset 2 dalam edisi standard 1658 01:14:25,630 --> 01:14:28,850 akan mencabar anda untuk benar-benar melaksanakan beberapa nombor sifer, beberapa 1659 01:14:28,850 --> 01:14:32,650 bilangan algoritma penyulitan, supaya anda boleh kedua-dua menyulitkan dan menyahsulit 1660 01:14:32,650 --> 01:14:35,530 mesej rahsia, sama seperti satu Ralphie sana dinyahkod. 1661 01:14:35,530 --> 01:14:38,720 Dalam edisi penggodam daripada pset 2, kita akan pergi sedikit lagi. 1662 01:14:38,720 --> 01:14:42,010 Kami akan tangan anda fail dari sistem komputer sebenar yang mengandungi 1663 01:14:42,010 --> 01:14:45,690 sekumpulan keseluruhan sebenar nama pengguna dan kata laluan disulitkan, dan cabaran 1664 01:14:45,690 --> 01:14:49,110 untuk edisi hacker akan menjadi retak mereka kata laluan dan angka 1665 01:14:49,110 --> 01:14:53,060 keluar apa kriptografi atau apa rahsia telah digunakan untuk benar-benar 1666 01:14:53,060 --> 01:14:55,080 menjana kata laluan tersebut. 1667 01:14:55,080 --> 01:14:58,360 Dan kita akan melakukan ini dengan menggunakan ciri baru di sini C yang saya akan memberikan 1668 01:14:58,360 --> 01:15:02,200 anda hanya demo, yang dikenali sebagai hujah baris arahan. 1669 01:15:02,200 --> 01:15:05,930 >> Jadi ternyata, kerana sesetengah daripada anda mungkin telah dilihat dalam seksyen atau di dalam buku teks, 1670 01:15:05,930 --> 01:15:09,850 utama tidak semestinya perlu menjadi tidak sah dalam kurungan. 1671 01:15:09,850 --> 01:15:14,060 Ia ternyata bahawa utama juga boleh ditulis seperti ini, dengan dua hujah, 1672 01:15:14,060 --> 01:15:19,690 argc dan argv, di mana argc adalah bilangan perkataan yang anda menaip selepas 1673 01:15:19,690 --> 01:15:21,940 nama program pada baris arahan anda. 1674 01:15:21,940 --> 01:15:24,550 Dan argv adalah perkataan yang sebenar. 1675 01:15:24,550 --> 01:15:29,470 Dan sebagai kurungan persegi di sana mencadangkan, argv nampaknya array. 1676 01:15:29,470 --> 01:15:33,720 Ia akan menjadi rentetan selepas rentetan selepas rentetan dalam ingatan. 1677 01:15:33,720 --> 01:15:36,170 Jadi apa yang kita akan dapat melakukan, bermula dengan pset 2, 1678 01:15:36,170 --> 01:15:37,310 sesuatu seperti ini. 1679 01:15:37,310 --> 01:15:42,450 Jika saya membuat argv1, yang merupakan contoh kita akan kembali ke pada hari Isnin, dan menjalankan 1680 01:15:42,450 --> 01:15:45,180 , notis bahawa ia tidak kelihatan untuk berbuat apa-apa lagi. 1681 01:15:45,180 --> 01:15:47,050 Ia hanya mencetak namanya sendiri. 1682 01:15:47,050 --> 01:15:53,220 Tetapi jika saya katakan kelas selamat tinggal, notis bahawa program ini nampaknya lelaran 1683 01:15:53,220 --> 01:15:57,030 atas setiap perkataan yang telah ditaip di prompt. 1684 01:15:57,030 --> 01:16:02,050 Dan cara-cara di mana kita akan mendapat akses kepada kata-kata yang pengguna mempunyai 1685 01:16:02,050 --> 01:16:06,780 ditaip di prompt adalah dengan menukar utama, bermula hujung minggu ini, dari int 1686 01:16:06,780 --> 01:16:10,710 utama (sah) untuk int utama (argc, argv). 1687 01:16:10,710 --> 01:16:13,700 Dan itu akan dilahirkan hujah baris arahan. 1688 01:16:13,700 --> 01:16:17,210 Dan apabila anda mendapat benar-benar canggih di ini, anda akan dapat untuk menulis 1689 01:16:17,210 --> 01:16:21,370 benar-benar trippy program, seperti yang satu ini di sini, yang pergi di atas dan di luar 1690 01:16:21,370 --> 01:16:25,520 beberapa fungsi yang kita lakukan setakat ini tetapi semua agak kuat. 1691 01:16:25,520 --> 01:16:27,330 >> Jadi kita akan meninggalkan ini dengan ini pada skrin. 1692 01:16:27,330 --> 01:16:29,160 Dan kita akan melihat anda pada hari Isnin.