1 00:00:08,119 --> 00:00:11,630 [Powered by Google Translate] DAVID J. MALAN: Baiklah, ini adalah CS50, dan ini adalah 2 00:00:11,630 --> 00:00:14,790 bermula dua minggu. 3 00:00:14,790 --> 00:00:16,300 Terima kasih. 4 00:00:16,300 --> 00:00:19,000 Mari kita bermula di sini dengan panggilan telefon. 5 00:00:19,000 --> 00:00:30,005 Saya kira-kira untuk mendail 617-bug-CS50. 6 00:00:30,005 --> 00:00:31,230 CS50: Ini adalah CS50. 7 00:00:31,230 --> 00:00:33,930 Untuk Ulang-alik Boy, tekan 1. 8 00:00:33,930 --> 00:00:36,660 Untuk memulakan, tekan 9. 9 00:00:36,660 --> 00:00:38,180 DAVID J. MALAN: Jadi dia berkata bagi Boy Terbang, tekan 1. 10 00:00:38,180 --> 00:00:41,560 Jadi kita akan tekan 1. 11 00:00:41,560 --> 00:00:43,230 CS50: Apakah asal anda? 12 00:00:43,230 --> 00:00:45,340 Untuk quad, tekan 1. 13 00:00:45,340 --> 00:00:47,080 Mather, tekan 2. 14 00:00:47,080 --> 00:00:49,240 Boylston, tekan 3. 15 00:00:49,240 --> 00:00:51,280 Lamont, tekan 4. 16 00:00:51,280 --> 00:00:53,210 Mem Hall, tekan 5. 17 00:00:53,210 --> 00:00:55,660 Untuk memulakan, tekan 0. 18 00:00:55,660 --> 00:00:59,590 DAVID J. MALAN: Kami akan tekan 1 untuk quad. 19 00:00:59,590 --> 00:01:03,610 CS50: ulang-alik Seterusnya daun ini sangat minit pada 1:10 PM, dan 20 00:01:03,610 --> 00:01:09,820 maka pada 01:20, 01:30, 01:40. 21 00:01:09,820 --> 00:01:12,030 Ini adalah CS50. 22 00:01:12,030 --> 00:01:15,570 >> DAVID J. MALAN: Jadi ini adalah suara CS50. 23 00:01:15,570 --> 00:01:18,030 Dan ia adalah satu contoh daripada pelbagai projek akhir, 24 00:01:18,030 --> 00:01:19,500 contoh, anda boleh menggigit ke arah 25 00:01:19,500 --> 00:01:20,600 akhir semester. 26 00:01:20,600 --> 00:01:23,840 Sebagai contoh, shuttleboy.cs50.net bahawa wujud - 27 00:01:23,840 --> 00:01:28,200 sebenarnya satu projek yang saya mula-mula menulis selepas mengambil CS51 28 00:01:28,200 --> 00:01:29,740 kembali apabila saya adalah seorang siswazah. 29 00:01:29,740 --> 00:01:32,250 Dan inspirasi di sini ketika itu, semua mereka mempunyai 30 00:01:32,250 --> 00:01:34,320 jadual bas ulang-alik dicetak, dan tiada 31 00:01:34,320 --> 00:01:35,970 tanggapan mencari perkara talian. 32 00:01:35,970 --> 00:01:38,730 Dan jadi saya jenis merpati dalam satu hujung minggu, dicurahkan melalui 33 00:01:38,730 --> 00:01:41,460 dicetak jadual, dan dialihkan ke program komputer. 34 00:01:41,460 --> 00:01:43,790 Pada masa itu, program komputer berlaku untuk ditulis 35 00:01:43,790 --> 00:01:47,110 di C. Dan anda sebenarnya berlari menaip oleh Boy Ulang-alik pada 36 00:01:47,110 --> 00:01:48,600 berkelip segera seperti yang kita telah melakukan setakat. 37 00:01:48,600 --> 00:01:50,450 Tetapi sejak beberapa tahun, ia berkembang menjadi sebuah segera 38 00:01:50,450 --> 00:01:51,390 pesanan bot. 39 00:01:51,390 --> 00:01:53,970 Ia berkembang lebih baru-baru ini ke dalam laman web ini, kepada 40 00:01:53,970 --> 00:01:57,720 Berasaskan SMS alat, serta menjadi alat ini berasaskan suara. 41 00:01:57,720 --> 00:02:00,170 Dan ini adalah untuk membayangkan pelbagai perkara yang anda boleh 42 00:02:00,170 --> 00:02:02,380 lakukan untuk diri sendiri dengan akhir semester. 43 00:02:02,380 --> 00:02:05,490 >> Sebagai contoh, terdapat, versi SMS Boy Ulang-alik yang berlaku 44 00:02:05,490 --> 00:02:06,510 beroperasi sebagai berikut. 45 00:02:06,510 --> 00:02:10,880 Jika, pada telefon bimbit anda, anda menghantar mesej teks kepada 41411 dan 46 00:02:10,880 --> 00:02:14,300 kemudian menghantar sboy simbol khas, Ulang-alik Boy, 47 00:02:14,300 --> 00:02:18,350 diikuti oleh A dan B, di mana A ialah asalan dan B adalah 48 00:02:18,350 --> 00:02:19,070 destinasi - 49 00:02:19,070 --> 00:02:21,030 misalnya, Boylston Angkasa Quad - 50 00:02:21,030 --> 00:02:23,330 apa yang anda perlu mendapatkan kembali dalam masa beberapa saat adalah teks 51 00:02:23,330 --> 00:02:25,820 mesej dari Boy Ulang-alik memberitahu anda tepat apabila 52 00:02:25,820 --> 00:02:28,990 seterusnya ulang-alik beberapa, dari sudut yang pergi itu 53 00:02:28,990 --> 00:02:29,640 titik B. 54 00:02:29,640 --> 00:02:32,510 Dan ini adalah satu contoh yang lebih umum daripada apa yang dikenali sebagai 55 00:02:32,510 --> 00:02:33,920 menggunakan API. 56 00:02:33,920 --> 00:02:36,930 >> Jadi, sebagai contoh, ini di sini adalah hanya shuttleboy.cs50.net, 57 00:02:36,930 --> 00:02:39,300 penjelmaan sebenar berasaskan web ini. 58 00:02:39,300 --> 00:02:42,480 Tetapi data yang menggariskan ini dan lain-lain aplikasi yang CS50 59 00:02:42,480 --> 00:02:45,560 telah membangunkan semua terdedah kepada semua orang di sini dalam bentuk 60 00:02:45,560 --> 00:02:49,340 API, antara muka pengaturcaraan aplikasi. 61 00:02:49,340 --> 00:02:52,220 Dan itu hanya satu cara yang mewah untuk mengatakan bahawa orang-orang seperti kita di 62 00:02:52,220 --> 00:02:56,010 Internet dan lain-lain telah menghabiskan masa beberapa mewujudkan 63 00:02:56,010 --> 00:02:59,970 perisian yang anda boleh gunakan untuk merebut data dari kami dan 64 00:02:59,970 --> 00:03:02,510 kemudian membina aplikasi anda sendiri di atas 65 00:03:02,510 --> 00:03:03,840 set data yang. 66 00:03:03,840 --> 00:03:06,610 Jadi untuk contoh, ini Boy Ulang-alik API halaman di sini, yang 67 00:03:06,610 --> 00:03:09,390 berlaku untuk menjadi pengguna CS50, pada asasnya dokumen 68 00:03:09,390 --> 00:03:13,080 bagaimana anda boleh pergi tentang meminta CS50 pelayan untuk data. 69 00:03:13,080 --> 00:03:16,240 Sebagai contoh, jika anda biasa dengan fail CSV, koma 70 00:03:16,240 --> 00:03:18,940 dipisahkan nilai, ini adalah hanya jenis cepat dan kotor 71 00:03:18,940 --> 00:03:20,310 Fail Excel seperti. 72 00:03:20,310 --> 00:03:23,110 Jadi, anda boleh meminta Ulang-alik Boy untuk semua data pada semua 73 00:03:23,110 --> 00:03:25,090 rumah dan Koordinat GPS mereka, dan anda akan mendapat 74 00:03:25,090 --> 00:03:27,300 kembali, pada dasarnya, spreadsheet seperti itu, 75 00:03:27,300 --> 00:03:30,820 maka anda boleh membaca ke dalam program anda sendiri dan kemudian 76 00:03:30,820 --> 00:03:33,250 menjana hasil, seperti Boy Ulang-alik sendiri 77 00:03:33,250 --> 00:03:34,160 berlaku untuk melakukan. 78 00:03:34,160 --> 00:03:37,030 Bagi mereka yang lebih biasa, perwakilan data yang lebih moden 79 00:03:37,030 --> 00:03:39,420 termasuk JSON, JavaScript Objek Tatatanda. 80 00:03:39,420 --> 00:03:40,620 Sesuatu yang akan datang kembali kepada anda ke arah 81 00:03:40,620 --> 00:03:41,720 akhir semester. 82 00:03:41,720 --> 00:03:45,440 >> Tetapi sekali lagi, ini adalah hanya salah satu daripada beberapa API sendiri CS50. 83 00:03:45,440 --> 00:03:48,320 Dan perkara yang menarik ialah sekarang, hari ini, Facebook dan 84 00:03:48,320 --> 00:03:51,110 Twitter dan Google dan cukup banyak setiap laman web yang popular di luar 85 00:03:51,110 --> 00:03:54,130 ada mempunyai beberapa jenis API, yang bermakna jika anda membaca 86 00:03:54,130 --> 00:03:56,620 dokumentasi di laman web mereka, anda mendaftar untuk satu 87 00:03:56,620 --> 00:03:59,980 akaun, maka anda boleh mula menulis perisian di atas 88 00:03:59,980 --> 00:04:03,680 apa-apa alat atau data bahawa syarikat ada menyediakan. 89 00:04:03,680 --> 00:04:06,210 Dan jadi satu felo pengajaran kita sendiri beberapa tahun ke belakang 90 00:04:06,210 --> 00:04:07,620 menulis versi Mac ini. 91 00:04:07,620 --> 00:04:10,990 Jadi pada pautan bertajuk Mac sini di sebelah kiri atas, anda boleh sebenarnya 92 00:04:10,990 --> 00:04:13,940 memuat turun widget Mac OS yang berjalan pada Mac anda sendiri untuk melakukan 93 00:04:13,940 --> 00:04:15,040 jenis yang sama perkara. 94 00:04:15,040 --> 00:04:17,970 Jadi ia adalah semua tentang membina di atas set data seperti ini. 95 00:04:17,970 --> 00:04:21,839 Tetapi lebih kepada itu ke arah akhir semester. 96 00:04:21,839 --> 00:04:25,780 >> Jadi mari menyelam di cepat sebenar pepijat, hanya jenis mendapatkan 97 00:04:25,780 --> 00:04:27,990 perkara panas hari ini, dan berfikir kembali pada beberapa 98 00:04:27,990 --> 00:04:29,660 perkara yang kita melihat pada minggu lepas. 99 00:04:29,660 --> 00:04:32,840 Secara khususnya, izinkan saya pergi ke hadapan dan tarik sehingga, katakan, 100 00:04:32,840 --> 00:04:34,080 ini contoh di sini. 101 00:04:34,080 --> 00:04:37,500 Buggy1.c, ini boleh didapati di laman web kursus jika anda mahu 102 00:04:37,500 --> 00:04:40,250 suka untuk memuat turun dan mencucuk di sekitar diri sendiri. 103 00:04:40,250 --> 00:04:43,520 Tetapi mari mengezum di sini pada program ini agak pendek, dan hanya 104 00:04:43,520 --> 00:04:46,550 recap super cepat beberapa blok bangunan asas yang 105 00:04:46,550 --> 00:04:48,880 kita benar-benar akan hanya mula mengambil untuk diberikan. 106 00:04:48,880 --> 00:04:51,860 >> Jadi barangan biru, dalam baris 1 hingga 9, hanya 107 00:04:51,860 --> 00:04:53,670 lisut soalan. 108 00:04:53,670 --> 00:04:54,590 Jadi ini adalah sekadar komen. 109 00:04:54,590 --> 00:04:56,230 Mereka tidak mempunyai makna berfungsi. 110 00:04:56,230 --> 00:04:58,460 Tetapi mereka komen dalam erti kata bahawa mereka nota yang 111 00:04:58,460 --> 00:05:02,010 Saya, manusia, yang dibuat kepada diri saya sendiri supaya dalam kuliah dan selepas 112 00:05:02,010 --> 00:05:04,340 kuliah, saya sebenarnya boleh ingat apa yang program ini 113 00:05:04,340 --> 00:05:07,120 tidak tanpa perlu membaca melalui talian ia demi baris dan 114 00:05:07,120 --> 00:05:08,990 mencipta sejarah dalam fikiran saya. 115 00:05:08,990 --> 00:05:11,000 Selain itu, jika saya bawanya program ini kepada orang lain seperti 116 00:05:11,000 --> 00:05:14,420 anda, ia adalah lebih jelas kepada anda, kerana komen seperti ini, 117 00:05:14,420 --> 00:05:16,680 apa program sebenarnya melakukan, atau sekurang-kurangnya apa yang 118 00:05:16,680 --> 00:05:18,210 program yang sepatutnya lakukan. 119 00:05:18,210 --> 00:05:20,760 Sama ada atau tidak ia adalah betul adalah perkara lain sama sekali. 120 00:05:20,760 --> 00:05:25,040 Sekarang, dalam C, dengan komen berbilang talian, ingat bahawa on-line 121 00:05:25,040 --> 00:05:27,880 satu di sini adalah simbol sihir, / *. 122 00:05:27,880 --> 00:05:30,380 Ia bermakna di sini datang permulaan komen. 123 00:05:30,380 --> 00:05:34,560 Dan apa-apa lagi perkara-perkara sehingga anda sampai ke terminator akhir, 124 00:05:34,560 --> 00:05:36,700 yang * /, sebaliknya. 125 00:05:36,700 --> 00:05:39,120 Jadi hakikat bahawa saya mempunyai 80-beberapa bintang ganjil sini dari 126 00:05:39,120 --> 00:05:41,550 kiri ke kanan adalah benar-benar hanya detail estetik. 127 00:05:41,550 --> 00:05:43,370 Ia tidak mempunyai makna yang berfungsi. 128 00:05:43,370 --> 00:05:44,490 >> Sekarang bagaimana mengenai barisan 11? 129 00:05:44,490 --> 00:05:46,940 Apakah ini lakukan dari segi orang biasa? 130 00:05:51,560 --> 00:05:52,540 Apa itu? 131 00:05:52,540 --> 00:05:54,280 PENONTON: Termasuk standard. 132 00:05:54,280 --> 00:05:54,740 DAVID J. MALAN: OK, baik. 133 00:05:54,740 --> 00:05:57,500 Jadi ia termasuk perpustakaan stdio.h. 134 00:05:57,500 --> 00:05:58,230 Jadi apa maksudnya? 135 00:05:58,230 --> 00:06:01,570 Nah, di dalam fail itu, stdio.h, sekumpulan keseluruhan 136 00:06:01,570 --> 00:06:03,320 fungsi pengisytiharan - 137 00:06:03,320 --> 00:06:05,290 yang, kod yang orang lain menulis. 138 00:06:05,290 --> 00:06:08,160 Dan satu contoh yang sempurna fungsi yang diisytiharkan di 139 00:06:08,160 --> 00:06:10,250 stdio.h - 140 00:06:10,250 --> 00:06:11,980 yang kegemaran sekarang? 141 00:06:11,980 --> 00:06:14,300 Jadi printf, salah satu yang paling biasa digunakan, sudah tentu 142 00:06:14,300 --> 00:06:15,840 awal, dari perpustakaan yang ada. 143 00:06:15,840 --> 00:06:19,290 Jika saya tidak termasuk bahawa baris kod, dilafaz akan menjerit 144 00:06:19,290 --> 00:06:22,550 pada saya sesuatu tentang menggunakan simbol yang tidak diisytiharkan. 145 00:06:22,550 --> 00:06:24,930 Sesuatu yang tidak diisytiharkan adalah mungkin kata kunci, kerana 146 00:06:24,930 --> 00:06:27,770 kita telah tidak dimaklumkan pengumpul apa printf kelihatan 147 00:06:27,770 --> 00:06:29,230 suka melainkan kita termasuk baris itu. 148 00:06:29,230 --> 00:06:31,830 Dan lebih turun ke Bumi, benar-benar, apa garis yang mengatakan 149 00:06:31,830 --> 00:06:34,890 membuka fail tersebut, stdio.h, di mana-mana jua ia berada dalam pelayan 150 00:06:34,890 --> 00:06:38,200 cakera keras, atau cakera keras perkakas, dan salin-tampal 151 00:06:38,200 --> 00:06:40,240 betul ada ke dalam fail saya, tanpa saya 152 00:06:40,240 --> 00:06:41,730 perlu untuk berbuat demikian secara manual. 153 00:06:41,730 --> 00:06:44,420 >> Sekarang, apabila kita turun di sini to main, tidak lama lagi kita akan mula 154 00:06:44,420 --> 00:06:46,900 mengusik selain apa int dan apa yang tidak sah adalah. 155 00:06:46,900 --> 00:06:48,430 Tetapi untuk sekarang, mari kita melihat tiga baris 156 00:06:48,430 --> 00:06:50,350 dalam tempoh 15 melalui 17. 157 00:06:50,350 --> 00:06:52,250 Ini di sini saya menuntut sebagai kereta. 158 00:06:52,250 --> 00:06:54,900 Line 7 dalam komen saya mengatakan "Sekiranya mencetak 10 159 00:06:54,900 --> 00:06:59,410 asterisk tetapi tidak. "Mengapa ini tidak mencetak, pada hakikatnya, 160 00:06:59,410 --> 00:07:01,097 10 bintang tersebut? 161 00:07:01,097 --> 00:07:02,347 PENONTON: [didengar]. 162 00:07:05,210 --> 00:07:05,800 DAVID J. MALAN: Tepat sekali. 163 00:07:05,800 --> 00:07:08,720 Jadi notis bahawa kita mula mengira dari 0. 164 00:07:08,720 --> 00:07:10,780 Dan ini sebenarnya adalah satu konvensyen dalam pengaturcaraan dan 165 00:07:10,780 --> 00:07:13,230 sains komputer yang lebih amnya, mula mengira 166 00:07:13,230 --> 00:07:14,610 dari 0 bukan 1. 167 00:07:14,610 --> 00:07:16,690 Dan ini benar-benar hanya berasal dari fakta bahawa, untuk 168 00:07:16,690 --> 00:07:18,940 contoh, apabila kita mempunyai lapan orang di atas pentas, apabila 169 00:07:18,940 --> 00:07:20,680 tiada siapa yang mengangkat tangan mereka, mereka 170 00:07:20,680 --> 00:07:22,340 semua sifar berkesan. 171 00:07:22,340 --> 00:07:24,260 Dan sebagainya ia hanya jenis konvensyen komputer, 172 00:07:24,260 --> 00:07:26,030 Oleh itu, untuk mula mengira dari 0. 173 00:07:26,030 --> 00:07:29,130 Jika itulah bilangan terendah anda boleh mewakili dalam perduaan. 174 00:07:29,130 --> 00:07:32,270 >> Jadi di sini kita telah mula Memulakan i untuk 0. 175 00:07:32,270 --> 00:07:34,230 Kami telah menetapkan i bersamaan dengan 0. 176 00:07:34,230 --> 00:07:37,780 Tetapi kemudian saya membuat kesilapan ini di sini, berkata i adalah kurang daripada atau 177 00:07:37,780 --> 00:07:38,820 sama dengan 10. 178 00:07:38,820 --> 00:07:41,700 Tetapi jika anda berfikir bahawa melalui, jika saya bermula pada 0 dan kemudian saya pergi 179 00:07:41,700 --> 00:07:46,410 sehingga 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, saya sebenarnya akan 180 00:07:46,410 --> 00:07:49,980 mencetak 11 bintang ke skrin, kerana saya telah pergi 181 00:07:49,980 --> 00:07:52,410 kepada dan sama dengan 10. 182 00:07:52,410 --> 00:07:55,090 Jadi menetapkan mudah di sini maka apa? 183 00:07:55,090 --> 00:07:56,070 PENONTON: [didengar]. 184 00:07:56,070 --> 00:07:57,350 DAVID J. MALAN: Hanya mengubahnya kepada kurang daripada. 185 00:07:57,350 --> 00:07:59,700 Jika anda benar-benar mahu, anda boleh melakukan ini. 186 00:07:59,700 --> 00:08:01,370 Tetapi secara umum, yang disukai. 187 00:08:01,370 --> 00:08:04,020 Dan sebagainya mula mengira dari 0 adalah hanya sesuatu yang anda perlu 188 00:08:04,020 --> 00:08:05,510 biasanya digunakan untuk mendapatkan. 189 00:08:05,510 --> 00:08:07,810 Kini, apa yang kira-kira membina ini keseluruhannya dalam dan dengan sendirinya? 190 00:08:07,810 --> 00:08:10,640 Ini sejajar 15 demarks untuk gelung. 191 00:08:10,640 --> 00:08:12,510 Jadi untuk tidak berfungsi. 192 00:08:12,510 --> 00:08:13,640 Ia hanya satu kenyataan. 193 00:08:13,640 --> 00:08:16,180 Ia membina gelung, seperti yang kita lihat dalam Scratch. 194 00:08:16,180 --> 00:08:17,600 Dan ia mempunyai tiga bahagian. 195 00:08:17,600 --> 00:08:19,740 Perhatikan bahawa terdapat bahagian pertama 196 00:08:19,740 --> 00:08:21,350 kiri koma bernoktah. 197 00:08:21,350 --> 00:08:24,200 Ada bahagian tengah di antara dua koma bertitik. 198 00:08:24,200 --> 00:08:26,250 Dan kemudian ada bahagian kanan ke kanan 199 00:08:26,250 --> 00:08:27,640 koma bernoktah kedua. 200 00:08:27,640 --> 00:08:31,822 Sekarang, yang pertama ini tidak apa? 201 00:08:31,822 --> 00:08:33,679 PENONTON: [didengar]. 202 00:08:33,679 --> 00:08:34,270 DAVID J. MALAN: Kembali sana? 203 00:08:34,270 --> 00:08:34,816 Yeah? 204 00:08:34,816 --> 00:08:35,980 PENONTON: pengawalan. 205 00:08:35,980 --> 00:08:36,850 >> DAVID J. MALAN: pengawalan. 206 00:08:36,850 --> 00:08:37,840 Jadi apa maknanya? 207 00:08:37,840 --> 00:08:40,690 Kami telah mengisytiharkan pembolehubah yang dipanggil i. 208 00:08:40,690 --> 00:08:43,840 Ia adalah jenis int, kerana saya telah dinyatakan int i. 209 00:08:43,840 --> 00:08:46,470 Dan saya Memulakan i kepada nilai 0. 210 00:08:46,470 --> 00:08:47,730 Jadi apa yang ini benar-benar mengatakan? 211 00:08:47,730 --> 00:08:50,680 Ia berkesan berkata kepada komputer hey, memberi saya cukup 212 00:08:50,680 --> 00:08:53,660 ingatan, RAM yang mencukupi, untuk memenuhi nombor, dan kemudian meletakkan 213 00:08:53,660 --> 00:08:56,130 nombor 0 dalam sebahagian yang RAM. 214 00:08:56,130 --> 00:08:59,100 Dan sebagai diketepikan, berapa besar adalah int biasanya, sekurang-kurangnya di dalam 215 00:08:59,100 --> 00:09:00,280 perkakas? 216 00:09:00,280 --> 00:09:01,000 PENONTON: 32 bit. 217 00:09:01,000 --> 00:09:01,670 DAVID J. MALAN: 32-bit. 218 00:09:01,670 --> 00:09:04,890 Jadi ini bermakna memberi saya 32 bit, atau dikenali sebagai 4 bait, 219 00:09:04,890 --> 00:09:07,250 dan meletakkan 0 nilai di dalamnya, yang adalah agak mudah kerana 220 00:09:07,250 --> 00:09:09,110 ia hanya bermaksud menetapkan semua bit kepada 0. 221 00:09:09,110 --> 00:09:11,690 >> Jadi sekarang, bahagian kedua di sini adalah keadaan. 222 00:09:11,690 --> 00:09:14,590 Dan keadaan, seperti namanya, adalah apa yang diperiksa 223 00:09:14,590 --> 00:09:18,100 lagi dan lagi dan sekali lagi sama ada ia benar atau palsu. 224 00:09:18,100 --> 00:09:21,410 Jadi ini hanya mengatakan melakukan baris berikut kod - 225 00:09:21,410 --> 00:09:23,950 iaitu baris 16, kerana itulah satu-satunya yang dilekukan 226 00:09:23,950 --> 00:09:24,820 bawahnya atau tidak - 227 00:09:24,820 --> 00:09:26,980 selagi i adalah kurang daripada 10. 228 00:09:26,980 --> 00:09:30,520 Dan selepas setiap lelaran melalui gelung ini, melakukan 229 00:09:30,520 --> 00:09:33,840 incrementation, yang dalam kes ini adalah i + +. 230 00:09:33,840 --> 00:09:35,580 Kini, ia tidak perlu untuk menjadi i + +. 231 00:09:35,580 --> 00:09:37,610 Ia boleh i -. 232 00:09:37,610 --> 00:09:39,860 Tetapi jika saya melakukan ini, apa yang tingkah laku akan 233 00:09:39,860 --> 00:09:41,370 untuk program ini? 234 00:09:41,370 --> 00:09:42,290 PENONTON: Ia akan menjadi satu gelung tak terhingga. 235 00:09:42,290 --> 00:09:44,060 DAVID J. MALAN: Ia akan menjadi beberapa jenis gelung tak terhingga, 236 00:09:44,060 --> 00:09:47,720 melainkan jika kita mendapatkan bertuah selepas 2 negatif bilion atau lebih. 237 00:09:47,720 --> 00:09:51,320 Mungkin perkara akan membalut di sekitar, hanya dengan sifat terhingga 238 00:09:51,320 --> 00:09:53,930 bilangan bit yang kita telah diperuntukkan untuk int. 239 00:09:53,930 --> 00:09:56,270 Tetapi ia pasti akan melelar jauh lebih daripada 10 dan 240 00:09:56,270 --> 00:09:58,630 pasti lebih daripada 11 kali di sini. 241 00:09:58,630 --> 00:10:02,240 >> Dan kini, hanya sebagai diketepikan, menyedari bahawa i + + dan i - 242 00:10:02,240 --> 00:10:04,420 adalah benar-benar hanya gula sintaktik. 243 00:10:04,420 --> 00:10:07,210 Ia hanya notasi trengkas untuk apa yang lebih sedikit 244 00:10:07,210 --> 00:10:08,720 bertulis dengan jelas seperti berikut: 245 00:10:08,720 --> 00:10:11,200 i = i + 1. 246 00:10:11,200 --> 00:10:13,460 Itu adalah sama dengan i + +. 247 00:10:13,460 --> 00:10:15,860 Ia hanya jenis kelihatan cantik untuk mengatakan i + +. 248 00:10:15,860 --> 00:10:17,490 Ia adalah lebih ringkas, lebih senang dibaca. 249 00:10:17,490 --> 00:10:19,030 Dan sebagainya kebanyakan orang melakukan yang sebaliknya. 250 00:10:19,030 --> 00:10:21,840 Tetapi ini adalah sama berfungsi untuk 251 00:10:21,840 --> 00:10:22,900 apa yang kita hanya melihat. 252 00:10:22,900 --> 00:10:27,770 Jadi dalam jangka pendek, cepat di sini adalah hanya untuk mengatakan melelar i 253 00:10:27,770 --> 00:10:30,690 dari 0 sepanjang jalan sehingga kepada kurang daripada 10. 254 00:10:30,690 --> 00:10:32,700 Dan maka sesungguhnya kami akan mendapat 10 bintang. 255 00:10:32,700 --> 00:10:33,430 >> Jadi mari kita cuba ini. 256 00:10:33,430 --> 00:10:35,310 Izinkan saya membuka terminal di bahagian bawah. 257 00:10:35,310 --> 00:10:37,420 Biar saya pergi ke direktori bahawa ini adalah masuk 258 00:10:37,420 --> 00:10:40,030 Dan saya akan untuk menyusun secara manual dengan dilafaz buat masa sekarang. 259 00:10:40,030 --> 00:10:44,880 Dan saya akan untuk menyusun ini sebagai buggy1.c, Masukkan. 260 00:10:44,880 --> 00:10:50,280 Dan kini buggy1, mengapa tiada fail atau direktori 261 00:10:50,280 --> 00:10:52,026 dipanggil buggy1? 262 00:10:52,026 --> 00:10:53,850 PENONTON: [didengar]. 263 00:10:53,850 --> 00:10:54,240 DAVID J. MALAN: Yeah. 264 00:10:54,240 --> 00:10:55,420 Jadi ia sebenarnya dipanggil a.out. 265 00:10:55,420 --> 00:10:57,480 Jadi ingat jika anda hanya menjalankan dilafaz, di mana dilafaz adalah 266 00:10:57,480 --> 00:11:00,420 pengkompil, dan anda tidak menentukan nama yang anda mahu 267 00:11:00,420 --> 00:11:03,550 memberikan kepada program anda, ia akan lalai untuk a.out. 268 00:11:03,550 --> 00:11:05,030 Jadi sesungguhnya jika saya lakukan ls - 269 00:11:05,030 --> 00:11:05,510 oops. 270 00:11:05,510 --> 00:11:07,680 Dan saya didn't - isu hitam-dan-putih beberapa 271 00:11:07,680 --> 00:11:08,840 anda berhadapan telah ditetapkan. 272 00:11:08,840 --> 00:11:10,670 Tetapi biarlah saya melakukan ini. 273 00:11:10,670 --> 00:11:14,570 Terdapat kita mempunyai a.out di sebelah kiri di sana. 274 00:11:14,570 --> 00:11:17,360 Jadi, kita perlu menjalankan a.out bukannya buggy1. 275 00:11:17,360 --> 00:11:19,140 >> Jadi biarlah saya pergi ke hadapan dan melakukan ini. 276 00:11:19,140 --> 00:11:22,840 / A.out, Enter. 277 00:11:22,840 --> 00:11:26,160 Dan saya nampaknya tidak melakukan apa? 278 00:11:26,160 --> 00:11:26,620 PENONTON: Simpan. 279 00:11:26,620 --> 00:11:27,390 DAVID J. MALAN: Simpan fail saya. 280 00:11:27,390 --> 00:11:31,520 Jadi yang mudah diselesaikan dengan memukul S Kawalan, atau pergi ke 281 00:11:31,520 --> 00:11:33,450 Fail, Simpan, seperti dalam kebanyakan program. 282 00:11:33,450 --> 00:11:36,360 Biar saya pergi ke sini, mengosongkan skrin, jalankan lagi. 283 00:11:36,360 --> 00:11:37,960 Dan masih ada bug. 284 00:11:37,960 --> 00:11:41,618 Jadi apa yang sedang berlaku - 285 00:11:41,618 --> 00:11:42,980 PENONTON: Anda tidak mengumpulkannya. 286 00:11:42,980 --> 00:11:44,040 DAVID J. MALAN: Ah, baik. 287 00:11:44,040 --> 00:11:45,010 Saya tidak menyusun. 288 00:11:45,010 --> 00:11:47,250 Seperti orang bodoh, saya melihat kod untuk melihat apa yang salah. 289 00:11:47,250 --> 00:11:51,275 Jadi buggy1.c dilafaz, kini a.out. 290 00:11:51,275 --> 00:11:52,640 Dan Phew, disimpan. 291 00:11:52,640 --> 00:11:55,090 >> Jadi ia kelihatan sedikit hodoh kerana tidak ada baris baru 292 00:11:55,090 --> 00:11:55,970 mana-mana sahaja dalam program ini. 293 00:11:55,970 --> 00:11:57,390 Tetapi sekali lagi, itu hanya terperinci estetik. 294 00:11:57,390 --> 00:11:59,430 Dan sekurang-kurangnya jika kita mengira mereka keluar, kita harus 295 00:11:59,430 --> 00:12:01,160 kini melihat 10 bintang tersebut. 296 00:12:01,160 --> 00:12:03,260 Nah, apa tentang ini contoh kedua memanaskan badan? 297 00:12:03,260 --> 00:12:07,750 Jadi pada buggy2, saya mendakwa bahawa versi ini, juga, akan mencetak 298 00:12:07,750 --> 00:12:10,110 10 bintang, satu per baris. 299 00:12:10,110 --> 00:12:12,340 Jadi kali ini, saya mempunyai watak yang newline, hanya untuk membuat 300 00:12:12,340 --> 00:12:13,520 perkara yang sedikit lebih cantik. 301 00:12:13,520 --> 00:12:15,410 Tetapi sebaliknya apa yang saya dapat ini. 302 00:12:15,410 --> 00:12:19,590 Jadi biarlah saya melakukan buggy2.c dilafaz, Enter. 303 00:12:19,590 --> 00:12:21,790 Kini ia sekali lagi dipanggil a.out. 304 00:12:21,790 --> 00:12:23,130 Enter. 305 00:12:23,130 --> 00:12:26,900 Saya hanya melihat satu barisan baru, hanya barisan baru sangat lepas bahawa 306 00:12:26,900 --> 00:12:29,370 bergerak segera saya ke baris seterusnya. 307 00:12:29,370 --> 00:12:32,660 Dan lagi jelas saya telah mencetak *, maka barisan baru, 308 00:12:32,660 --> 00:12:33,990 *, Maka baris baru. 309 00:12:33,990 --> 00:12:35,490 Tetapi apa yang pepijat di sini? 310 00:12:35,490 --> 00:12:35,974 Yeah? 311 00:12:35,974 --> 00:12:37,224 PENONTON: [didengar]. 312 00:12:39,850 --> 00:12:40,470 >> DAVID J. MALAN: Tepat sekali. 313 00:12:40,470 --> 00:12:44,110 Jadi tidak seperti beberapa bahasa, seperti Python, di mana lekukan 314 00:12:44,110 --> 00:12:46,030 sebenarnya mempunyai makna yang berfungsi, dalam 315 00:12:46,030 --> 00:12:47,150 bahasa seperti C - 316 00:12:47,150 --> 00:12:49,140 seperti yang kita akan lihat, PHP, JavaScript - 317 00:12:49,140 --> 00:12:51,940 lekukan adalah benar-benar hanya untuk faedah manusia '. 318 00:12:51,940 --> 00:12:55,690 Jadi hakikat bahawa saya telah dilekukan line 16 dan 17 kelihatan hebat, 319 00:12:55,690 --> 00:12:57,530 tetapi ia tidak mempunyai makna yang berfungsi di sini. 320 00:12:57,530 --> 00:13:00,700 Jika saya mahu kedua-dua talian untuk melaksanakan sebagai sebahagian daripada 321 00:13:00,700 --> 00:13:05,140 gelung, maka saya mesti menyertakan mereka dalam pendakap kerinting dengan berbuat demikian. 322 00:13:05,140 --> 00:13:08,540 Anda hanya boleh memotong sudut itu dan tinggalkan pendakap kerinting jika 323 00:13:08,540 --> 00:13:10,036 apa kes? 324 00:13:10,036 --> 00:13:10,410 PENONTON: Hanya satu baris. 325 00:13:10,410 --> 00:13:11,130 DAVID J. MALAN: Hanya satu baris. 326 00:13:11,130 --> 00:13:15,280 Jadi itulah hanya jenis apapun yang bagus detail sintaks supaya 327 00:13:15,280 --> 00:13:17,900 anda tidak membazirkan masa menulis tiga baris, dua antaranya adalah 328 00:13:17,900 --> 00:13:20,040 pendakap kerinting, hanya untuk menulis satu baris kod. 329 00:13:20,040 --> 00:13:21,650 Tetapi jika anda mempunyai dua atau lebih baris, kita 330 00:13:21,650 --> 00:13:22,860 sememangnya perlu untuk melakukan ini. 331 00:13:22,860 --> 00:13:24,210 >> Jadi sekarang biarlah saya menjimatkan ini. 332 00:13:24,210 --> 00:13:27,140 Biar saya pergi ke hadapan dan berjalan semula dilafaz. 333 00:13:27,140 --> 00:13:31,375 Kemudian biarlah saya jalankan lagi a.out, dan sekarang saya mendapatkan mereka satu per baris. 334 00:13:31,375 --> 00:13:33,670 Sekarang, a.out lagi adalah jenis nama bisu untuk program. 335 00:13:33,670 --> 00:13:37,500 Bagaimana saya boleh memberitahu dilafaz untuk benar-benar memberi saya nama fail 336 00:13:37,500 --> 00:13:39,820 yang lebih mesra pengguna, seperti buggy2 sendiri? 337 00:13:43,200 --> 00:13:44,466 Sedikit lebih jelas? 338 00:13:44,466 --> 00:13:45,220 PENONTON: [didengar]. 339 00:13:45,220 --> 00:13:47,810 DAVID J. MALAN: OK, jadi saya sebenarnya boleh mengambil sangat 340 00:13:47,810 --> 00:13:51,000 jalan pintas yang mesra pengguna dan hanya menulis membuat buggy2. 341 00:13:51,000 --> 00:13:53,840 Saya tidak nyatakan. C dalam kes ini, dan tekan Enter. 342 00:13:53,840 --> 00:13:58,530 Dan apa yang membuat tidak adalah ia menyusun buggy2.c bagi saya oleh 343 00:13:58,530 --> 00:14:00,260 meminta dilafaz untuk melakukannya. 344 00:14:00,260 --> 00:14:05,100 Khususnya, ia panggilan dilafaz, ia berjalan dilafaz menggunakan cara yang lebih 345 00:14:05,100 --> 00:14:08,540 hujah baris arahan atau suis daripada saya benar-benar perlu. 346 00:14:08,540 --> 00:14:11,270 Dalam masa, kita akan kembali apa yang semua ini pelbagai 347 00:14:11,270 --> 00:14:13,810 samar ungkapan ditulis dgn tanda penghubung bermakna. 348 00:14:13,810 --> 00:14:16,910 Tetapi untuk sekarang, itu hanya menyimpan saya masalah 349 00:14:16,910 --> 00:14:19,600 perlu untuk diingati dan mempunyai untuk menaip semua orang 350 00:14:19,600 --> 00:14:21,150 pelbagai ungkapan ditulis dgn tanda penghubung. 351 00:14:21,150 --> 00:14:23,240 Dan terbalik ia akhirnya 352 00:14:23,240 --> 00:14:25,900 bahawa sekarang saya mempunyai buggy2. 353 00:14:25,900 --> 00:14:27,480 Jika saya mahu melakukan ini secara manual, walaupun, saya 354 00:14:27,480 --> 00:14:28,775 sebaliknya boleh melakukan ini - 355 00:14:28,775 --> 00:14:34,110 dilafaz-o buggy2 dan kemudian buggy2.c. 356 00:14:34,110 --> 00:14:37,980 Dan yang sama akan memberikan saya fail dipanggil buggy2. 357 00:14:37,980 --> 00:14:39,710 >> Jadi dalam jangka pendek, dilafaz pengkompil. 358 00:14:39,710 --> 00:14:43,080 Buat hanya alat mesra pengguna bahawa kita akan menggunakan lebih 359 00:14:43,080 --> 00:14:44,420 dan banyak lagi, kerana ia hanya mula 360 00:14:44,420 --> 00:14:47,330 memudahkan perkara untuk kita. 361 00:14:47,330 --> 00:14:49,430 Dan kita kembali 0, akhirnya. 362 00:14:49,430 --> 00:14:51,890 Buat masa sekarang, hanya kerana, tetapi kita akan mula mengusik bahagian itu 363 00:14:51,890 --> 00:14:52,930 hari ini dan pada hari Rabu. 364 00:14:52,930 --> 00:14:55,560 Sebarang pertanyaan di mana-mana ini? 365 00:14:55,560 --> 00:14:56,450 Yeah? 366 00:14:56,450 --> 00:14:58,234 PENONTON: [didengar] 367 00:14:58,234 --> 00:15:00,020 ls dalam petikan di sana? 368 00:15:00,020 --> 00:15:01,710 DAVID J. MALAN: OK. 369 00:15:01,710 --> 00:15:05,880 Apabila saya ls ditaip dalam petikan yang telah saya melakukan beberapa silap mata 370 00:15:05,880 --> 00:15:07,160 di sebalik tabir untuk menetapkan bug. 371 00:15:07,160 --> 00:15:09,370 Saya terlupa, seperti yang kita telah memberitahu ramai daripada anda pada 372 00:15:09,370 --> 00:15:11,600 papan perbincangan, lakukan - 373 00:15:11,600 --> 00:15:17,220 kita akan melakukan ini sekarang - sudo yum-y update appliance50. 374 00:15:17,220 --> 00:15:19,790 Oop, bahawa itu dieja dengan betul. 375 00:15:19,790 --> 00:15:23,240 Jadi perkakas adalah seperti sistem operasi. 376 00:15:23,240 --> 00:15:25,650 Ia berjalan ini sistem operasi Fedora dipanggil. 377 00:15:25,650 --> 00:15:27,450 Dan sekarang kerana sambungan internet perlahan saya, saya telah 378 00:15:27,450 --> 00:15:28,260 benar-benar hosed. 379 00:15:28,260 --> 00:15:31,620 Jadi menjalankan kemas kini yum sudo, seperti yang kita memberitahu anda untuk melakukan dalam 380 00:15:31,620 --> 00:15:34,080 set masalah, pada dasarnya suka menjalankan kemas kini automatik 381 00:15:34,080 --> 00:15:35,420 pada Mac OS atau Windows. 382 00:15:35,420 --> 00:15:37,280 Dan sebab untuk menjalankan ini pada permulaan sangat 383 00:15:37,280 --> 00:15:39,640 set masalah adalah kerana apabila kita mencipta perkakas, saya 384 00:15:39,640 --> 00:15:42,480 sehingga merosakkan, dan saya sengaja dibuat semua program anda melihat 385 00:15:42,480 --> 00:15:45,210 hitam pada skrin hitam, itulah sebabnya anda tidak melihat mereka 386 00:15:45,210 --> 00:15:45,860 secara lalai. 387 00:15:45,860 --> 00:15:48,020 Tetapi versi terbaru perkakas pembaikan ini. 388 00:15:48,020 --> 00:15:50,500 Dan saya akan menetapkan bahawa semasa cuti sekali saya mempunyai Internet 389 00:15:50,500 --> 00:15:51,280 kesambungan Bluetooth. 390 00:15:51,280 --> 00:15:54,630 >> Jadi petikan hanya menyembunyikan kesilapan saya, sangat berhati-hati, 391 00:15:54,630 --> 00:15:55,730 nampaknya. 392 00:15:55,730 --> 00:15:56,980 Soalan-soalan lain? 393 00:15:59,750 --> 00:16:00,668 Ya? 394 00:16:00,668 --> 00:16:02,012 PENONTON: Jika tidak membuat datang dari? 395 00:16:02,012 --> 00:16:03,810 [Didengar] 396 00:16:03,810 --> 00:16:04,280 DAVID J. MALAN: Baik soalan. 397 00:16:04,280 --> 00:16:05,460 Jika tidak membuat datang dari? 398 00:16:05,460 --> 00:16:09,390 Ia merupakan satu program Linux yang telah wujud selama bertahun-tahun, panjang 399 00:16:09,390 --> 00:16:10,570 sebelum CS50. 400 00:16:10,570 --> 00:16:12,930 Dan ia datang dengan sistem operasi seperti Fedora. 401 00:16:12,930 --> 00:16:14,830 Ia tidak datang dari perpustakaan CS50. 402 00:16:14,830 --> 00:16:17,560 Malah, perkara sahaja yang datang dari perpustakaan CS50 403 00:16:17,560 --> 00:16:20,470 setakat ini, yang kita telah melihat, GetString, GetInt, semua 404 00:16:20,470 --> 00:16:25,550 mereka Dapatkan fungsi, dan rentetan perkataan, dan untuk sesetengah 405 00:16:25,550 --> 00:16:26,575 takat, bool perkataan. 406 00:16:26,575 --> 00:16:29,180 Tetapi kita akan mengusik bahawa selain apabila kita menyelam ke CS50 407 00:16:29,180 --> 00:16:30,580 perkakas itu sendiri. 408 00:16:30,580 --> 00:16:32,820 >> Jadi ya, satu soalan lanjut di sini. 409 00:16:32,820 --> 00:16:36,636 PENONTON: Apabila anda berkata membuat dan kemudian kereta, bagaimanakah 410 00:16:36,636 --> 00:16:39,980 komputer tahu [didengar]? 411 00:16:39,980 --> 00:16:40,520 DAVID J. MALAN: Baik soalan. 412 00:16:40,520 --> 00:16:43,830 Jadi apabila anda hanya menjalankan membuat buggy1 atau membuat buggy2, bagaimana 413 00:16:43,830 --> 00:16:45,220 tidak membuat tahu? 414 00:16:45,220 --> 00:16:49,900 Jadi, secara lalai, jika anda menaip membuat buggy1, membuat kelihatan untuk 415 00:16:49,900 --> 00:16:52,330 file dipanggil buggy1.c. 416 00:16:52,330 --> 00:16:55,570 Dan kemudian ia melaksanakan arahan dilafaz yang sesuai, 417 00:16:55,570 --> 00:17:00,380 sekali gus mengatasi default fail output dipanggil a.out. 418 00:17:00,380 --> 00:17:03,670 Malah, jika kita melihat apa yang membuat, apa - 419 00:17:03,670 --> 00:17:04,839 mari kita berhenti ini. 420 00:17:04,839 --> 00:17:09,530 Jika kita melihat apa yang membuat sebenarnya melakukan, membuat buggy2, 421 00:17:09,530 --> 00:17:10,470 ia sudah up to date. 422 00:17:10,470 --> 00:17:13,020 Jadi biarlah saya mengeluarkan arahan rm, 423 00:17:13,020 --> 00:17:14,319 program saya menulis sebelum ini. 424 00:17:14,319 --> 00:17:17,319 Menaip Y-E-S untuk mengesahkan bahawa saya mahu mengeluarkannya. 425 00:17:17,319 --> 00:17:20,480 Jika saya kini membuat, melihat bahawa dalam baris ini sangat panjang, 426 00:17:20,480 --> 00:17:22,980 ada perkara ini terakhir di sini,-o buggy2. 427 00:17:22,980 --> 00:17:26,959 Membuat Semua melakukan lulus hujah bahawa, jadi untuk bercakap, 428 00:17:26,959 --> 00:17:29,665 Dilafaz, supaya saya tidak perlu menaip sendiri. 429 00:17:29,665 --> 00:17:32,660 >> Semua hak, jadi pasangan cepat pentadbiran 430 00:17:32,660 --> 00:17:33,470 pengumuman. 431 00:17:33,470 --> 00:17:36,940 Jadi untuk bahagian, yang secara rasminya bermula ini datang 432 00:17:36,940 --> 00:17:38,970 Ahad, anda akan sentiasa mahu membawa, jika 433 00:17:38,970 --> 00:17:40,120 anda mempunyai satu, komputer riba. 434 00:17:40,120 --> 00:17:42,570 Jika anda tidak mempunyai komputer riba, jangan mendekati kepada saya oleh 435 00:17:42,570 --> 00:17:43,580 menjatuhkan saya e-mel. 436 00:17:43,580 --> 00:17:44,810 Dan kita akan memikirkan aliran kerja. 437 00:17:44,810 --> 00:17:47,100 Apa yang umumnya anda akan dapati di seksyen adalah bahawa mereka adalah sebahagian 438 00:17:47,100 --> 00:17:48,770 konsep, sebahagian hands-on. 439 00:17:48,770 --> 00:17:52,190 Kami khusus akan menggunakan seksyen soalan, sebahagian daripada 440 00:17:52,190 --> 00:17:54,110 set masalah seminggu, berjalan melalui beberapa 441 00:17:54,110 --> 00:17:55,820 bahan konsep dari kuliah. 442 00:17:55,820 --> 00:17:57,480 Dan itu semua dalam set masalah semasa. 443 00:17:57,480 --> 00:18:00,010 Dan kita juga akan menyelam ke dalam beberapa aktiviti hands-on, kadang-kadang 444 00:18:00,010 --> 00:18:02,190 yang akan dikehendaki supaya dikemukakan, kadang-kadang 445 00:18:02,190 --> 00:18:02,830 yang tidak akan. 446 00:18:02,830 --> 00:18:04,630 Sebagai contoh, ini minggu pertama, mereka bertujuan hanya sebagai 447 00:18:04,630 --> 00:18:05,780 senaman memanaskan badan. 448 00:18:05,780 --> 00:18:07,800 Dan anda akan mendapati bahawa masalah mereka adalah benar-benar hanya itu. 449 00:18:07,800 --> 00:18:10,220 Mereka bertujuan untuk menjadi yang agak kecil, tetapi tidak semestinya 450 00:18:10,220 --> 00:18:13,100 program remeh untuk menulis, yang tidak semestinya 451 00:18:13,100 --> 00:18:16,230 menarik di dalam dan diri mereka sendiri tetapi adalah peluang yang baik untuk 452 00:18:16,230 --> 00:18:19,620 mengamalkan dengan sintaks, dengan fungsi baru, dalam keselesaan 453 00:18:19,620 --> 00:18:21,900 bahagian di mana anda mempunyai beberapa rakan sekelas anda hadir sebagai 454 00:18:21,900 --> 00:18:22,870 serta TF anda. 455 00:18:22,870 --> 00:18:26,210 >> Dan apa yang kita akan lakukan dari masa ke masa adalah menggunakan alat dipanggil CS50 kawasan, 456 00:18:26,210 --> 00:18:28,940 mana bukan hanya menggunakan Appliance CS50, anda akan 457 00:18:28,940 --> 00:18:32,450 sebaliknya pergi ke laman web dalam pelayar, di mana anda akan dapat 458 00:18:32,450 --> 00:18:35,610 untuk menulis kod dalam tetingkap penyemak imbas semasa seksyen. 459 00:18:35,610 --> 00:18:38,240 Dan kemudian jika anda memilih masuk, rakan-rakan pengajaran anda kemudian boleh menunjukkan 460 00:18:38,240 --> 00:18:40,980 apa sahaja ia adalah anda sedang menaip di skrin anda dalam pelayar anda 461 00:18:40,980 --> 00:18:43,930 tingkap di hadapan kelas, sama ada tanpa nama atau 462 00:18:43,930 --> 00:18:47,250 terbuka, supaya dia boleh berjalan melalui dengan 463 00:18:47,250 --> 00:18:50,080 rakan sekelas anda apa yang anda lakukan dengan baik, apa yang anda tidak lakukan dengan baik. 464 00:18:50,080 --> 00:18:52,750 Dan sekali lagi, yakinlah semua ini boleh tanpa nama baik. 465 00:18:52,750 --> 00:18:54,410 Tetapi ia akan menjadi peluang baik untuk lebih 466 00:18:54,410 --> 00:18:56,810 interaktiviti daripada sesuatu seperti kuliah membolehkan. 467 00:18:56,810 --> 00:18:58,910 >> Pada masa yang sama, kita akan mempunyai perkara-perkara yang dipanggil super 468 00:18:58,910 --> 00:19:01,610 bahagian, yang adalah pilihan tetapi terbuka kepada semua orang di 469 00:19:01,610 --> 00:19:04,030 kelas, supaya anda boleh melakukan ini lebih kolektif bagi 470 00:19:04,030 --> 00:19:05,190 masalah menetapkan satu. 471 00:19:05,190 --> 00:19:06,010 Berikut adalah jadual. 472 00:19:06,010 --> 00:19:08,870 Ini juga dipaparkan di laman web pada cs50.net. 473 00:19:08,870 --> 00:19:10,850 Perhatikan bahawa terdapat akan menjadi seorang penggodam-khusus 474 00:19:10,850 --> 00:19:12,430 satu esok petang. 475 00:19:12,430 --> 00:19:15,460 Dan kita akan filem satu hari dan satu esok dan hantar mereka 476 00:19:15,460 --> 00:19:16,720 talian dalam tempoh 24 jam. 477 00:19:16,720 --> 00:19:19,370 Jadi jika anda tidak boleh membuat apa-apa kali ini, tidak perlu bimbang. 478 00:19:19,370 --> 00:19:22,720 Dan sekali lagi, jadual adalah talian sekarang di cs50.net. 479 00:19:22,720 --> 00:19:25,350 >> Dari segi sectioning sendiri, anda perlu telah mendapat 480 00:19:25,350 --> 00:19:28,520 email mengarahkan anda untuk pergi ke laman web kursus untuk mencari 481 00:19:28,520 --> 00:19:29,610 keluar bahagian anda. 482 00:19:29,610 --> 00:19:32,890 Jika kehidupan telah berubah dan anda perlu menukar bahagian anda, 483 00:19:32,890 --> 00:19:33,560 tidak menjadi masalah. 484 00:19:33,560 --> 00:19:37,900 Kembali ke URL yang sama, cs50.net/section, tunggal, 485 00:19:37,900 --> 00:19:40,090 dan anda akan mengisi borang yang sama supaya anda boleh 486 00:19:40,090 --> 00:19:41,260 kemudian memberi kita pilihan anda. 487 00:19:41,260 --> 00:19:43,360 Dan kita akan membuat susulan menjelang hujung minggu ini kepada apa yang kita boleh 488 00:19:43,360 --> 00:19:44,240 menampung. 489 00:19:44,240 --> 00:19:49,530 Minggu lepas, ingat bahawa kita mencadangkan menggunakan CS50 Bincangkan, 490 00:19:49,530 --> 00:19:51,370 alat perbincangan kursus, dalam syarahannya. 491 00:19:51,370 --> 00:19:53,680 Jadi kita mempunyai 40 soalan yang ditanya dan 492 00:19:53,680 --> 00:19:54,720 dijawab semasa kuliah. 493 00:19:54,720 --> 00:19:56,280 Jadi, ia seolah-olah untuk bekerja dengan baik, jadi kita akan terus 494 00:19:56,280 --> 00:19:57,180 cuba untuk melakukan ini. 495 00:19:57,180 --> 00:19:59,600 Jika, semasa kuliah, anda tidak hanya berasa selesa penjanaan 496 00:19:59,600 --> 00:20:00,780 tangan anda, tidak menjadi masalah. 497 00:20:00,780 --> 00:20:04,640 Pergi cs50.net/discuss, hantar sana, dan satu pengajaran kami 498 00:20:04,640 --> 00:20:07,270 felo akan menjawab ia elektronik atau meningkatkan mereka 499 00:20:07,270 --> 00:20:10,620 tangan di pihak anda tanpa bertanya, bergantung 500 00:20:10,620 --> 00:20:12,470 pada sifat soalan. 501 00:20:12,470 --> 00:20:15,000 Dan dari segi maklum balas, secara amnya psets akan 502 00:20:15,000 --> 00:20:16,760 dipulangkan dalam tempoh seminggu. 503 00:20:16,760 --> 00:20:19,080 Kerana ia mengambil sedikit masa untuk bahagian untuk mencapai 504 00:20:19,080 --> 00:20:22,430 keseimbangan, pset pertama, 0 dan 1, akan menjadi sedikit 505 00:20:22,430 --> 00:20:24,130 ditangguhkan sebagai perkara menetap. 506 00:20:24,130 --> 00:20:27,130 Tetapi tinggal ditala untuk itu pada minggu-minggu akan datang. 507 00:20:27,130 --> 00:20:29,750 >> Baiklah, jadi biarlah saya meletakkan pada saya serius 508 00:20:29,750 --> 00:20:31,040 suara untuk hanya seketika. 509 00:20:31,040 --> 00:20:32,690 Jadi ini adalah sebenarnya iklim yang menarik untuk menjadi 510 00:20:32,690 --> 00:20:35,210 mempunyai perbincangan ini, apa dengan semua perkara lain 511 00:20:35,210 --> 00:20:37,310 berlaku di kampus berkaitan dengannya. 512 00:20:37,310 --> 00:20:40,220 Tetapi CS50 sememangnya telah mempunyai sejarah ini khususnya 513 00:20:40,220 --> 00:20:43,360 topik, dalam seberapa banyak setiap tahun, kursus ini, bagi banyak 514 00:20:43,360 --> 00:20:46,910 tahun, Ad-Papan kira-kira 3% daripada kelas. 515 00:20:46,910 --> 00:20:51,620 Tahun ini yang paling terkini, 2011, CS50 Iklan-menaiki 35 pelajar. 516 00:20:51,620 --> 00:20:54,120 Ini tidak, saya fikir, kerana kekurangan kejelasan. 517 00:20:54,120 --> 00:20:56,760 Menyedari bahawa dalam sukatan pelajaran kursus, terdapat satu halaman 518 00:20:56,760 --> 00:20:59,020 kenyataan yang menjelaskan mana garisan. 519 00:20:59,020 --> 00:21:01,350 Bahawa kenyataan yang sama diulangi pada setiap satu daripada 520 00:21:01,350 --> 00:21:03,070 masalah set pada satu halaman. 521 00:21:03,070 --> 00:21:05,760 >> Jadi saya menyebut hari ini benar-benar hanya untuk membuat 522 00:21:05,760 --> 00:21:07,030 orang yang sedar ini. 523 00:21:07,030 --> 00:21:08,080 Dan kita telah mencuba perkara yang berbeza. 524 00:21:08,080 --> 00:21:10,630 Dan apa yang saya fikir kita akan lakukan hari ini hanya mengambil masa untuk 525 00:21:10,630 --> 00:21:13,830 sebenarnya melihat beberapa kes yang lalu yang telah tampil. 526 00:21:13,830 --> 00:21:16,160 Bukannya menyimpan ini rahsia kotor sedikit, sebenarnya 527 00:21:16,160 --> 00:21:19,170 menunjukkan apa yang pelajar telah dilakukan dan bagaimana kita telah dikesan 528 00:21:19,170 --> 00:21:21,630 dan benar-benar apa motivasi paling utama adalah untuk 529 00:21:21,630 --> 00:21:23,950 walaupun mempunyai perbualan ini. 530 00:21:23,950 --> 00:21:27,060 Maka dengan itu berkata, garis asasnya adalah ini - 531 00:21:27,060 --> 00:21:29,200 setiap sukatan pelajaran, anda dialu-alukan, anda digalakkan untuk 532 00:21:29,200 --> 00:21:30,210 bercakap dengan rakan sekelas. 533 00:21:30,210 --> 00:21:31,910 Itulah Tujuan keseluruhan mempunyai ini kerjasama 534 00:21:31,910 --> 00:21:34,470 pejabat jam di Annenberg dan menggalakkan orang ramai untuk 535 00:21:34,470 --> 00:21:35,755 projek akhir untuk bekerjasama. 536 00:21:35,755 --> 00:21:38,590 Tetapi garisan dilukis apabila ia datang masa untuk benar-benar menulis 537 00:21:38,590 --> 00:21:39,790 penyelesaian yang terakhir anda. 538 00:21:39,790 --> 00:21:42,590 Bercakap dalam bahasa Inggeris, benar-benar halus, bercakap dalam kod pseudo, 539 00:21:42,590 --> 00:21:43,400 benar-benar halus. 540 00:21:43,400 --> 00:21:46,340 Email rakan sekelas pset anda, membiarkan mereka kelihatan lebih 541 00:21:46,340 --> 00:21:48,610 skrin tangan terus menaip, 542 00:21:48,610 --> 00:21:50,110 melalui talian juga. 543 00:21:50,110 --> 00:21:52,250 Jangan melihat kepada sukatan pelajaran bagi garis tertentu. 544 00:21:52,250 --> 00:21:55,850 >> Tetapi hanya untuk cat gambar bagaimana ini malangnya 545 00:21:55,850 --> 00:21:58,370 realiti, menyedari bahawa terdapat laman web di luar sana yang 546 00:21:58,370 --> 00:22:01,490 mempunyai penyelesaian dari kelas ini dan banyak kelas lain. 547 00:22:01,490 --> 00:22:04,940 Hakikat bahawa anda atau kira-kira 3% daripada anda tahu bahawa ini wujud 548 00:22:04,940 --> 00:22:07,240 bermakna bahawa kita tahu bahawa ini wujud. 549 00:22:07,240 --> 00:22:09,340 Hakikat bahawa terdapat laman web seperti ini di mana anda 550 00:22:09,340 --> 00:22:11,540 boleh membayar seseorang untuk melakukan set masalah anda sebenarnya - ini adalah 551 00:22:11,540 --> 00:22:13,450 kes sebenar yang datang sehingga tahun lepas. 552 00:22:13,450 --> 00:22:15,790 Ini adalah sebuah laman web yang dipanggil odesk.com. 553 00:22:15,790 --> 00:22:20,090 Dan Tim adalah nama orang di sini yang telah posting 554 00:22:20,090 --> 00:22:24,580 laman web ini dan meminta seseorang untuk melakukan pset 7 dalam 555 00:22:24,580 --> 00:22:25,570 kes tertentu ini. 556 00:22:25,570 --> 00:22:28,350 Nah, odesk.com adalah sangat Google mampu, dan kita juga 557 00:22:28,350 --> 00:22:30,310 sangat baik di Googling. 558 00:22:30,310 --> 00:22:32,360 Di sini juga, terdapat tapak - dan yang satu ini agak 559 00:22:32,360 --> 00:22:34,234 kejam, terus-terang. 560 00:22:34,234 --> 00:22:38,050 [Ketawa] 561 00:22:38,050 --> 00:22:39,610 DAVID J. MALAN: Perkara yang melucukan tentang laman web ini adalah jika 562 00:22:39,610 --> 00:22:41,970 anda membaca laman Tentang, mereka bercakap tentang korporat mereka 563 00:22:41,970 --> 00:22:44,390 budaya dan bagaimana perkhidmatan pelanggan adalah mereka nombor satu 564 00:22:44,390 --> 00:22:46,190 keutamaan, untuk memastikan bahawa tugasan anda mendapat 565 00:22:46,190 --> 00:22:47,890 bertukar pada masanya. 566 00:22:47,890 --> 00:22:50,580 >> Tetapi dalam kesungguhan semua, sekali lagi, hakikat bahawa laman-laman ini 567 00:22:50,580 --> 00:22:52,910 wujud, menyedari kita juga menyedari 568 00:22:52,910 --> 00:22:53,730 jenis-jenis laman web. 569 00:22:53,730 --> 00:22:55,890 Dan untuk memberi anda rasa apa yang membentuk ini biasanya 570 00:22:55,890 --> 00:22:58,570 mengambil, kita biasanya tidak mempunyai skandal besar di mana orang 571 00:22:58,570 --> 00:23:01,080 bekerjasama pada apa-apa jenis skala besar-besaran, tetapi sebaliknya 572 00:23:01,080 --> 00:23:04,540 ia adalah detik-detik yang lewat malam kelemahan, di mana anda mempunyai begitu 573 00:23:04,540 --> 00:23:07,550 banyak yang perlu dilakukan, ia adalah 04:00, anda letih, dan anda 574 00:23:07,550 --> 00:23:09,770 berfikir kepada diri sendiri, baik, biarlah saya hanya mengambil melihat saya 575 00:23:09,770 --> 00:23:11,770 rakan sebiliknya atau kod kawan saya atau sebagainya. 576 00:23:11,770 --> 00:23:14,800 Dan manifestasi ini malangnya melibatkan Pelajar 577 00:23:14,800 --> 00:23:17,640 Satu sesuatu mengemukakan seperti ini dan Pelajar mengemukakan B 578 00:23:17,640 --> 00:23:20,370 sesuatu seperti ini, yang pastinya, dalam komputer 579 00:23:20,370 --> 00:23:23,830 kelas sains, adalah amat mudah untuk ahli-ahli sains komputer 580 00:23:23,830 --> 00:23:25,690 untuk mengesan dengan perisian. 581 00:23:25,690 --> 00:23:28,410 Ini merupakan satu lagi paradigma biasa, di mana anda telah jenis 582 00:23:28,410 --> 00:23:31,010 telah bekerja bersama-sama dengan seseorang, mungkin bercakap dalam 583 00:23:31,010 --> 00:23:32,360 Bahasa Inggeris, baik-baik saja, pseudokod. 584 00:23:32,360 --> 00:23:35,080 Tetapi kemudian ia datang masa untuk benar-benar mengemukakan, dan psets 585 00:23:35,080 --> 00:23:37,910 hanya mendapat ditukar melalui e-mel atau Dropbox atau sebagainya. 586 00:23:37,910 --> 00:23:41,120 Tetapi dalam usaha untuk menjadikan ia kurang jelas bahawa ini adalah 587 00:23:41,120 --> 00:23:44,830 apa yang telah berlaku, maka ini adalah apa yang dikemukakan. 588 00:23:44,830 --> 00:23:47,880 Ini juga, tidak perjalanan yang ditulis keping 589 00:23:47,880 --> 00:23:50,360 perisian seperti kita perlu untuk benar-benar mengesan 590 00:23:50,360 --> 00:23:51,280 ini jenis perkara. 591 00:23:51,280 --> 00:23:53,760 Dan demi sesungguhnya, apa yang kita lakukan adalah jangka perisian yang membandingkan semua 592 00:23:53,760 --> 00:23:55,540 tahun ini penghujahan terhadap semua lepas tahun ini 593 00:23:55,540 --> 00:23:57,380 hujah, terhadap segala yang kita dapati di 594 00:23:57,380 --> 00:24:00,060 Internet, terhadap laman web setiap kerja di luar sana. 595 00:24:00,060 --> 00:24:01,710 Ia adalah semua sangat automatik. 596 00:24:01,710 --> 00:24:05,665 Dan sebagainya yang kita lakukan ini benar-benar dalam keadilan yang besar untuk 97% yang 597 00:24:05,665 --> 00:24:07,760 benar-benar bekerja keldai mereka dalam hal ini dan di lain-lain 598 00:24:07,760 --> 00:24:11,530 kelas dan meletakkan dalam semua usaha itu supaya kerja 599 00:24:11,530 --> 00:24:13,030 mereka akhirnya menyerahkan mereka sendiri. 600 00:24:13,030 --> 00:24:14,220 Dan saya boleh pergi untuk peringkat umur. 601 00:24:14,220 --> 00:24:16,030 >> Ini hanya segelintir kes tahun lepas. 602 00:24:16,030 --> 00:24:19,350 Seorang pelajar beberapa diserahkan fail ini sepercaman untuk pset 2, 603 00:24:19,350 --> 00:24:22,460 pset 3, pset 4, 5, pset pset 6, pset 9. 604 00:24:22,460 --> 00:24:26,360 Dalam kes ini, ini adalah kuiz 0 dan pada tahun lepas, di mana dua 605 00:24:26,360 --> 00:24:29,570 pelajar diserahkan sepercaman hukuman ini di kalangan ramai 606 00:24:29,570 --> 00:24:32,210 lain, "Permintaan jenis -" dot, dot, dot. 607 00:24:32,210 --> 00:24:34,530 Jadi, walaupun di dalam kelas daripada 600 adakah kita mengesan ini 608 00:24:34,530 --> 00:24:36,310 pada diserahkan kuiz. 609 00:24:36,310 --> 00:24:39,080 Jadi, dalam jangka pendek, ini - terus-terang, saya benci mempunyai jenis ini 610 00:24:39,080 --> 00:24:41,300 perbualan - tetapi ini adalah benar-benar satu usaha yang sengaja 611 00:24:41,300 --> 00:24:43,540 tahun ini untuk mencuba untuk memandu menurunkan nombor itu. 612 00:24:43,540 --> 00:24:45,650 Kerana walaupun kita mengatakan ini jenis perkara setiap 613 00:24:45,650 --> 00:24:48,100 tahun, saya fikir realiti setelah hidup di atasnya untuk beberapa 614 00:24:48,100 --> 00:24:50,800 lebih saat daripada biasa dan sebenarnya hanya menunjukkan 615 00:24:50,800 --> 00:24:53,600 bahawa apa yang mungkin kelihatan seperti, eh, bukan seperti perjanjian yang besar, sekurang-kurangnya 616 00:24:53,600 --> 00:24:56,390 berfikir kembali ke masa tertentu ini, kedua-dua dalam keadilan untuk 617 00:24:56,390 --> 00:25:00,100 diri sendiri dan kepada rakan sekelas anda di sini. 618 00:25:00,100 --> 00:25:02,480 Jadi jika anda pernah mempunyai sebarang soalan tentang di mana garis 619 00:25:02,480 --> 00:25:04,290 , sila hanya mendekati kepada saya secara peribadi. 620 00:25:04,290 --> 00:25:07,190 Tetapi jawapannya adalah sentiasa, benar-benar menekankan di 621 00:25:07,190 --> 00:25:09,090 saat-saat terakhir, wang tunai dalam satu hari lewat. 622 00:25:09,090 --> 00:25:11,080 Atau jika ia adalah suatu perkara yang tidak mempunyai apa-apa hari lewat, 623 00:25:11,080 --> 00:25:12,900 jujur, email saya secara peribadi. 624 00:25:12,900 --> 00:25:14,110 Kami akan memikirkan sesuatu yang keluar. 625 00:25:14,110 --> 00:25:17,480 Tolong jangan meletakkan masa anda di sini di Harvard pada risiko. 626 00:25:17,480 --> 00:25:18,570 >> Sekarang, saya fikir kita harus meringankan mood, jadi saya 627 00:25:18,570 --> 00:25:20,264 termasuk ini sebagai slaid seterusnya. 628 00:25:20,264 --> 00:25:22,770 [Ketawa] 629 00:25:22,770 --> 00:25:23,630 DAVID J. MALAN: Laman web ini adalah besar. 630 00:25:23,630 --> 00:25:24,820 Saya sebenarnya mendapat sedikit terganggu. 631 00:25:24,820 --> 00:25:26,330 Ada satu ini. 632 00:25:26,330 --> 00:25:29,590 Dan kemudian satu ini was amazing. 633 00:25:29,590 --> 00:25:35,190 Okay, jadi berfikir bahawa kucing lewat pada waktu malam apabila membuat 634 00:25:35,190 --> 00:25:36,040 keputusan mereka. 635 00:25:36,040 --> 00:25:40,110 Semua hak, barangan supaya kembali kepada lebih menyeronokkan dan kurang serius, seperti 636 00:25:40,110 --> 00:25:40,780 syarat. 637 00:25:40,780 --> 00:25:43,900 >> Baiklah, jadi kita bercakap secara ringkas tentang perkara ini. 638 00:25:43,900 --> 00:25:46,080 Ini adalah sesuatu yang mungkin agak biasa dari 639 00:25:46,080 --> 00:25:47,260 dunia Scratch. 640 00:25:47,260 --> 00:25:49,860 Dan dalam dunia Gores, kita mempunyai keperluan ini kadang-kadang 641 00:25:49,860 --> 00:25:51,110 pergi membuat garpu di jalan raya. 642 00:25:51,110 --> 00:25:54,840 Sama ada melakukan ini atau itu atau benda lain di sini. 643 00:25:54,840 --> 00:25:58,990 Dan apabila kita mahu melakukan ini, kita boleh menggunakan, dalam C sekarang, ini jika 644 00:25:58,990 --> 00:26:00,860 lain membina. 645 00:26:00,860 --> 00:26:06,420 Dan kemudian di sini kita mempunyai ungkapan Boolean. 646 00:26:06,420 --> 00:26:09,260 Sebagai contoh, ungkapan Boolean di sini, kita boleh ATAU 647 00:26:09,260 --> 00:26:12,260 mereka bersama-sama, dalam erti kata bahawa kita mempunyai keadaan ini ATAU 648 00:26:12,260 --> 00:26:13,200 bahawa keadaan. 649 00:26:13,200 --> 00:26:15,100 Kita boleh DAN mereka bersama-sama, dalam erti kata bahawa kita mahu 650 00:26:15,100 --> 00:26:17,710 memeriksa keadaan ini DAN keadaan itu. 651 00:26:17,710 --> 00:26:22,440 Dan di sini kita mempunyai suis kenyataan sekarang, yang tidak begitu 652 00:26:22,440 --> 00:26:26,040 serupa syntactically kepada orang-orang jenis keadaan, tetapi ia 653 00:26:26,040 --> 00:26:30,160 membolehkan kita untuk melakukan bersamaan jika, else if, else if, lain 654 00:26:30,160 --> 00:26:34,990 jika, dan seperti dengan hanya membutirkan mereka kes demi kes 655 00:26:34,990 --> 00:26:36,670 oleh kes demi kes. 656 00:26:36,670 --> 00:26:38,370 Jadi kita melihat mereka kali terakhir. 657 00:26:38,370 --> 00:26:40,430 Dan kemudian kita mula menyentuh kepada perkara-perkara seperti gelung. 658 00:26:40,430 --> 00:26:42,070 Kita melihat satu ini hanya seketika lalu. 659 00:26:42,070 --> 00:26:44,180 Tetapi terdapat-konstruk lain gelung. 660 00:26:44,180 --> 00:26:46,370 >> Sebagai contoh, yang satu ini di sini. 661 00:26:46,370 --> 00:26:50,140 Jadi sementara (keadaan), melakukan perkara ini lagi dan lagi. 662 00:26:50,140 --> 00:26:53,070 Jadi, pada asasnya, apa yang seolah-olah menjadi berbeza di antara ini 663 00:26:53,070 --> 00:26:55,760 untuk gelung dan ini gelung sementara di sini? 664 00:27:00,810 --> 00:27:05,045 Ini bagi gelung dan ini gelung sementara. 665 00:27:05,045 --> 00:27:07,840 Yeah? 666 00:27:07,840 --> 00:27:08,800 Apa itu? 667 00:27:08,800 --> 00:27:10,050 PENONTON: [didengar]. 668 00:27:14,632 --> 00:27:15,120 DAVID J. MALAN: Baik. 669 00:27:15,120 --> 00:27:17,130 Jadi, manakala dalam keadaan gelung, ada jelas 670 00:27:17,130 --> 00:27:17,940 sintaks banyak lagi. 671 00:27:17,940 --> 00:27:20,560 Terdapat pengawalan ini, terdapat kemas kini ini. 672 00:27:20,560 --> 00:27:23,820 Dalam gelung sementara, hanya terdapat keadaan ini. 673 00:27:23,820 --> 00:27:26,630 Jadi ia seolah-olah bahawa ia adalah sedikit menurunkan berbanding untuk 674 00:27:26,630 --> 00:27:28,770 gelung, yang bermakna jika kita mahu mempunyai pembolehubah dan kita mahu 675 00:27:28,770 --> 00:27:30,800 mempunyai incrementation, kita sebenarnya mempunyai 676 00:27:30,800 --> 00:27:32,500 melakukan perkara ini diri kita sendiri. 677 00:27:32,500 --> 00:27:34,420 >> Jadi biarlah saya pergi ke hadapan dan membuka gedit. 678 00:27:34,420 --> 00:27:36,320 Izinkan saya beralih ke perkakas. 679 00:27:36,320 --> 00:27:38,110 Dan mari kita hanya melakukan satu contoh kecil yang cepat 680 00:27:38,110 --> 00:27:40,550 membezakan salah satu dari yang lain. 681 00:27:40,550 --> 00:27:42,490 Dan di belakang fikiran saya di sini, saya perlu mengatakan satu perkara. 682 00:27:42,490 --> 00:27:44,120 Saya khusus menyebut nama Tim. 683 00:27:44,120 --> 00:27:47,740 Tim sebenarnya seseorang bahawa pelajar cuba untuk mencari lakukan 684 00:27:47,740 --> 00:27:48,680 kerja rumah mereka untuk mereka. 685 00:27:48,680 --> 00:27:51,280 Kami tidak mempunyai Tim dalam seksyen yang tertentu. 686 00:27:51,280 --> 00:27:53,690 Jadi sedar, supaya saya didedahkan pelajar, ia tidak adalah seorang pelajar. 687 00:27:53,690 --> 00:27:55,720 Ia adalah orang rawak di Internet melakukan sesuatu 688 00:27:55,720 --> 00:27:57,180 oleh tahun lepas proksi. 689 00:27:57,180 --> 00:27:58,670 Jadi kita dapati bahawa, terlalu. 690 00:27:58,670 --> 00:28:00,630 Jadi dalam kes ini di sini, izinkan saya pergi ke hadapan dan 691 00:28:00,630 --> 00:28:02,810 membuka fail baru. 692 00:28:02,810 --> 00:28:04,800 Fail, New. 693 00:28:04,800 --> 00:28:06,050 Ini memberikan saya tab sini. 694 00:28:06,050 --> 00:28:09,940 Biar saya pergi ke hadapan dan menyimpannya sebagai loop.c. 695 00:28:09,940 --> 00:28:11,810 Biar saya pergi dan klik Simpan. 696 00:28:11,810 --> 00:28:15,340 Dan kemudian turun di sini, mari kita pergi ke hadapan dan mula menulis 697 00:28:15,340 --> 00:28:16,605 # Include . 698 00:28:19,116 --> 00:28:20,520 Biar saya zum masuk 699 00:28:20,520 --> 00:28:23,410 Sekarang kita akan lakukan int utama (tidak sah). 700 00:28:23,410 --> 00:28:30,020 Sekarang izinkan saya pergi ke hadapan dan lakukan untuk (int i = 0; i < 701 00:28:30,020 --> 00:28:33,480 oh, 10; i + +). 702 00:28:33,480 --> 00:28:36,620 Dan sekarang saya akan pergi ke hadapan dan jangan mencetak bintang yang saya 703 00:28:36,620 --> 00:28:37,890 tidak lebih awal. 704 00:28:37,890 --> 00:28:39,390 Dan kemudian pada akhir program ini, kami hanya akan 705 00:28:39,390 --> 00:28:41,130 mencetak baris baru, hanya supaya segera saya 706 00:28:41,130 --> 00:28:42,470 tidak melihat semua berantakan. 707 00:28:42,470 --> 00:28:45,170 kembali 0. 708 00:28:45,170 --> 00:28:47,610 Kelihatan syntactically betul? 709 00:28:47,610 --> 00:28:48,040 Setakat ini. 710 00:28:48,040 --> 00:28:48,560 Jadi mari kita lihat. 711 00:28:48,560 --> 00:28:51,290 >> Jadi biarlah saya mengezum keluar, pergi ke dalam tetingkap terminal saya. 712 00:28:51,290 --> 00:28:54,570 Dan biarlah saya pergi ke hadapan dan menjalankan gelung, kerana saya dipanggil ini 713 00:28:54,570 --> 00:28:55,690 loop.c. perkara 714 00:28:55,690 --> 00:28:56,780 Jadi membuat gelung. 715 00:28:56,780 --> 00:28:57,840 Nampaknya untuk menyusun OK. 716 00:28:57,840 --> 00:29:00,210 Biar saya berjalan gelung, dan kini Masukkan. 717 00:29:00,210 --> 00:29:01,820 Dan ia seolah-olah telah dicetak 10 bintang. 718 00:29:01,820 --> 00:29:03,780 Jadi mari kita hanya menukar ini kepada gelung sementara dan lihat apa 719 00:29:03,780 --> 00:29:05,220 jenis isu-isu yang kita tersandung. 720 00:29:05,220 --> 00:29:11,290 Jadi, selain daripada ini, izinkan saya pergi di sini dan mengatakan semasa i 721 00:29:11,290 --> 00:29:12,760 kurang daripada 10 - 722 00:29:12,760 --> 00:29:14,910 biarlah saya menghilangkan untuk gelung. 723 00:29:14,910 --> 00:29:17,170 OK, jadi kita mempunyai beberapa masalah sudah. 724 00:29:17,170 --> 00:29:21,110 Jadi keadaan adalah sama, tetapi saya jelas hilang 725 00:29:21,110 --> 00:29:21,680 pengawalan. 726 00:29:21,680 --> 00:29:23,840 Saya hilang incrementation. 727 00:29:23,840 --> 00:29:28,020 Jadi apa yang perlu pengkompil mungkin beritahu saya apabila saya cuba untuk 728 00:29:28,020 --> 00:29:29,170 menyusun program ini? 729 00:29:29,170 --> 00:29:29,666 Yeah? 730 00:29:29,666 --> 00:29:31,154 PENONTON: [didengar]. 731 00:29:31,154 --> 00:29:31,650 >> DAVID J. MALAN: Baik. 732 00:29:31,650 --> 00:29:34,180 Jadi ia akan mengatakan sesuatu seperti yang tidak diisytiharkan - dalam hal ini 733 00:29:34,180 --> 00:29:35,280 kes, pembolehubah i. 734 00:29:35,280 --> 00:29:37,980 Dan sesungguhnya, gunakan daripada pengecamnya tidak diisytiharkan i. 735 00:29:37,980 --> 00:29:40,960 Dan sebagainya ini adalah berbeza dengan bahasa seperti PHP dan 736 00:29:40,960 --> 00:29:43,120 Python dan Ruby, yang sesetengah daripada anda mungkin biasa, 737 00:29:43,120 --> 00:29:44,820 di mana anda boleh hanya jenis mula menggunakan pembolehubah 738 00:29:44,820 --> 00:29:47,420 paksaan dan tidak perlu bimbang tentang mengisytiharkan mereka 739 00:29:47,420 --> 00:29:48,560 jelas sentiasa. 740 00:29:48,560 --> 00:29:51,770 Dalam C dan dalam bahasa seperti Java dan C + +, anda perlu 741 00:29:51,770 --> 00:29:53,020 super jelas. 742 00:29:53,020 --> 00:29:55,760 Dan jika anda mahu pembolehubah yang dipanggil i, anda perlu beritahu saya 743 00:29:55,760 --> 00:29:57,360 apakah jenis pembolehubah ia adalah. 744 00:29:57,360 --> 00:29:59,360 Jadi kita akan perlu untuk menetapkan ini seperti berikut. 745 00:29:59,360 --> 00:30:05,510 Saya akan perlu untuk pergi sini dan taipkan int i; oleh itu, 746 00:30:05,510 --> 00:30:07,860 Saya telah mengisytiharkan pembolehubah yang dipanggil i. 747 00:30:07,860 --> 00:30:09,180 Sekarang, saya telah dilangkau satu langkah. 748 00:30:09,180 --> 00:30:11,340 Saya telah jelas tidak dimulakan, tetapi mari kita lihat jika bahawa pada 749 00:30:11,340 --> 00:30:13,650 kurangnya membuat dilafaz berhenti mengadu. 750 00:30:13,650 --> 00:30:15,770 Jadi biarlah saya membentuk semula program ini. 751 00:30:15,770 --> 00:30:16,770 >> Semua hak, kini ia hanya mengadu 752 00:30:16,770 --> 00:30:17,870 atas sebab-sebab yang berbeza. 753 00:30:17,870 --> 00:30:21,130 "Pembolehubah 'i' tidak diisytiharkan apabila digunakan di sini." Semua hak, jadi 754 00:30:21,130 --> 00:30:22,340 yang agak jelas. 755 00:30:22,340 --> 00:30:25,510 Dimulakan hanya bermakna menetapkan ia sama dengan nilai. 756 00:30:25,510 --> 00:30:30,820 Dan kita telah tidak dilakukan itu, jadi biarlah saya cuba sama dengan 0. 757 00:30:30,820 --> 00:30:35,030 Sekarang mari kita cuba ini lagi dan jalankan semula dilafaz. 758 00:30:35,030 --> 00:30:36,140 Disusun masa ini. 759 00:30:36,140 --> 00:30:37,210 Dan saya kira-kira untuk menjalankannya. 760 00:30:37,210 --> 00:30:43,120 Tetapi besar gelung tidak terhingga lama, kerana saya telah melakukan 761 00:30:43,120 --> 00:30:45,530 pengawalan, saya telah melakukan keadaan, tetapi saya tidak pernah dilakukan 762 00:30:45,530 --> 00:30:47,030 sebarang incrementation. 763 00:30:47,030 --> 00:30:48,780 Jadi bagaimana saya boleh melakukan incrementation itu? 764 00:30:48,780 --> 00:30:51,170 Nah, dalam gelung sementara, rasanya saya akan mempunyai 765 00:30:51,170 --> 00:30:54,180 untuk melakukannya di dalam gelung, kerana banyak seperti yang pertama 766 00:30:54,180 --> 00:30:56,570 minggu ini contoh melakukan membina gelung, seperti dengan 767 00:30:56,570 --> 00:30:59,040 stoking dan dengan pengiraan sendiri, kita terpaksa melakukan 768 00:30:59,040 --> 00:31:01,550 sesuatu pada akhir sangat, seperti kembali ke baris seterusnya. 769 00:31:01,550 --> 00:31:05,040 Bagaimana jika saya pergi ke hadapan dan melakukan ini i + + di sini? 770 00:31:05,040 --> 00:31:06,030 Mari kita tidak walaupun menyusun ini. 771 00:31:06,030 --> 00:31:06,890 Menangkap saya sudah. 772 00:31:06,890 --> 00:31:09,704 Apa yang salah di sini? 773 00:31:09,704 --> 00:31:10,690 PENONTON: [didengar]. 774 00:31:10,690 --> 00:31:11,770 >> DAVID J. MALAN: Jadi ia pasti tidak int. 775 00:31:11,770 --> 00:31:13,080 Ia adalah i. 776 00:31:13,080 --> 00:31:15,110 Dan pendakap kerinting, seperti sebelum ini, 777 00:31:15,110 --> 00:31:16,800 lekukan tidak mencukupi. 778 00:31:16,800 --> 00:31:18,410 Jadi sekarang saya telah ini membina. 779 00:31:18,410 --> 00:31:21,780 Jadi sementara i adalah kurang daripada 10, mencetak bintang, 780 00:31:21,780 --> 00:31:23,220 maka kenaikan i. 781 00:31:23,220 --> 00:31:25,680 Dan cara manakala kerja-kerja gelung adalah bahawa sebaik sahaja anda memukul 782 00:31:25,680 --> 00:31:29,630 bawah gelung, yang dalam kes ini kelihatan seperti 10 baris, 783 00:31:29,630 --> 00:31:32,880 ia akan kembali ke baris 6, di mana titik 784 00:31:32,880 --> 00:31:34,400 keadaan akan diperiksa lagi. 785 00:31:34,400 --> 00:31:37,500 Dan jika i masih kurang daripada 10, kita akan melakukan garisan 8 dan 786 00:31:37,500 --> 00:31:41,250 kemudian 9, maka kita akan mencecah 10, dan kembali kepada 6, sekali lagi dan 787 00:31:41,250 --> 00:31:45,580 lagi dan lagi dan lagi, selagi i adalah kurang daripada 10. 788 00:31:45,580 --> 00:31:47,860 Jadi mari jalankan semula buat di sini. 789 00:31:47,860 --> 00:31:48,940 >> Okay, kita telah kumpulkan okay. 790 00:31:48,940 --> 00:31:50,300 Biar saya yang dikendalikan semula gelung. 791 00:31:50,300 --> 00:31:52,620 Dan kini ia sebenarnya seolah-olah untuk bekerja. 792 00:31:52,620 --> 00:31:55,100 Jadi plus dan kemudaratan di sini? 793 00:31:55,100 --> 00:31:58,910 Nah, setakat ini ada sebenarnya tidak keseluruhan PLO - 794 00:31:58,910 --> 00:31:59,420 begitu comel. 795 00:31:59,420 --> 00:32:01,870 Baiklah, yang merupakan - ah, itu adalah kemalangan. 796 00:32:01,870 --> 00:32:05,200 Baiklah, jadi mari kita kembali untuk gelung. 797 00:32:05,200 --> 00:32:07,530 Jadi bagi gelung adalah baik kerana mereka super jelas. 798 00:32:07,530 --> 00:32:09,720 Dan walaupun mereka sudah sedikit clunky untuk menulis, ia adalah 799 00:32:09,720 --> 00:32:11,500 sangat kuat dan ia membolehkan anda untuk melakukan 800 00:32:11,500 --> 00:32:12,980 Perkara-perkara sekaligus. 801 00:32:12,980 --> 00:32:16,240 Walaupun gelung seolah-olah tidak mempunyai sejumlah besar nilai hanya 802 00:32:16,240 --> 00:32:18,500 lagi, kerana ia berasa seperti kita hanya perlu untuk melakukan kerja-kerja yang lebih. 803 00:32:18,500 --> 00:32:20,670 Kita perlu meletakkan pengawalan sini, 804 00:32:20,670 --> 00:32:23,480 mengemaskini ke sini, dan kita perlu ingat untuk melakukan semua itu. 805 00:32:23,480 --> 00:32:26,260 Jadi kita akan lihat dalam masa bahawa gelung sementara sebenarnya meminjamkan 806 00:32:26,260 --> 00:32:29,380 diri hanya konteks yang berbeza, data yang berbeza 807 00:32:29,380 --> 00:32:33,900 struktur seperti senarai dan jadual hash, perkara yang kita akan dapat 808 00:32:33,900 --> 00:32:34,970 pertengahan semester. 809 00:32:34,970 --> 00:32:37,900 Tetapi untuk sekarang, tahu bahawa terdapat jenis ini ketiga yang dikenali sebagai do- 810 00:32:37,900 --> 00:32:38,480 gelung while. 811 00:32:38,480 --> 00:32:39,540 Dan kita telah melihat secara ringkas ini. 812 00:32:39,540 --> 00:32:41,830 Dan ini mungkin dapat membantu super dengan pset 1. 813 00:32:41,830 --> 00:32:45,570 Bila-bila masa yang anda mahu melakukan sesuatu dan kemudian memeriksa jika 814 00:32:45,570 --> 00:32:48,940 pengguna bekerjasama, dan jika mereka tidak lakukan, melakukannya sekali lagi, do- 815 00:32:48,940 --> 00:32:51,460 gelung while meminjamkan sendiri kepada jenis yang logik. 816 00:32:51,460 --> 00:32:55,640 Kerana seperti pesanan dari atas ke bawah di sini menunjukkan, 817 00:32:55,640 --> 00:32:57,750 tidak bermaksud melakukan ini. 818 00:32:57,750 --> 00:32:59,830 Dan melakukan ini sekali lagi dan sekali lagi, apa yang mungkin? 819 00:32:59,830 --> 00:33:03,000 Mungkin ia bermakna GetInt memanggil atau GetString dan kemudian 820 00:33:03,000 --> 00:33:05,830 memeriksa nilai GetInt atau GetString dan kemudian menjerit 821 00:33:05,830 --> 00:33:08,260 pada pengguna jika mereka tidak bekerjasama dengan meminta mereka 822 00:33:08,260 --> 00:33:10,100 lagi dan lagi dan lagi. 823 00:33:10,100 --> 00:33:11,730 Mana anda mahu melakukan sesuatu sekali, 824 00:33:11,730 --> 00:33:13,210 kemudian memeriksa keadaan beberapa. 825 00:33:13,210 --> 00:33:14,110 >> Jadi mari kita cuba ini. 826 00:33:14,110 --> 00:33:17,130 Biar saya sebenarnya menukar ini sekarang gelung do sementara. 827 00:33:17,130 --> 00:33:18,830 Dan saya akan pergi ke hadapan dan melakukan perkara-perkara berikut. 828 00:33:18,830 --> 00:33:21,830 Jadi melakukan yang berikut. 829 00:33:21,830 --> 00:33:26,870 Mari kita buat int i GetInt = (), tetapi mari kita mula-mula memberitahu pengguna 830 00:33:26,870 --> 00:33:27,410 apa yang perlu dilakukan. 831 00:33:27,410 --> 00:33:29,050 Jadi sedikit berbeza kali ini. 832 00:33:29,050 --> 00:33:31,270 "Berikan saya int". 833 00:33:31,270 --> 00:33:32,910 Jadi, saya akan menggunakan printf untuk itu. 834 00:33:32,910 --> 00:33:35,740 Dan sekarang saya akan pergi ke sini, dan saya akan melakukan ini 835 00:33:35,740 --> 00:33:41,520 semasa i, katakan, lebih besar daripada - 836 00:33:41,520 --> 00:33:47,540 mari kita lihat, i ialah, katakan, kurang daripada 0, atau i 837 00:33:47,540 --> 00:33:48,730 lebih daripada 10. 838 00:33:48,730 --> 00:33:51,810 Dalam erti kata lain, saya mahu nombor 1-9, hanya 839 00:33:51,810 --> 00:33:52,720 sewenang-wenangnya. 840 00:33:52,720 --> 00:33:55,290 Jadi saya menggunakan ungkapan Boolean gabungan di sini untuk 841 00:33:55,290 --> 00:33:59,930 pastikan bahawa saya adalah kurang daripada 0 atau lebih daripada 10, di mana 842 00:33:59,930 --> 00:34:02,530 kes saya akan melakukan gelung ini di sini lagi. 843 00:34:02,530 --> 00:34:04,400 Jadi sekali lagi, lakukan ini - 844 00:34:04,400 --> 00:34:08,480 manakala i adalah kurang daripada 0 atau i adalah lebih daripada 10. 845 00:34:08,480 --> 00:34:11,440 >> Jadi sekarang mari kita pergi ke hadapan dan melakukan ini sekali kita telah melakukan bahawa. 846 00:34:11,440 --> 00:34:13,270 Mari kita hanya melakukan cek kewarasan cepat. 847 00:34:13,270 --> 00:34:18,929 printf ("Terima kasih, i% d", i). 848 00:34:18,929 --> 00:34:21,350 Jadi program ini mudah meminta pengguna untuk int an, 849 00:34:21,350 --> 00:34:24,000 membuat pasti ia adalah dalam lingkungan sesetengah orang, 1 hingga 9, 850 00:34:24,000 --> 00:34:26,280 dan kemudian mengucapkan terima kasih kepada pengguna dengan mengingatkan mereka apa yang mereka hanya 851 00:34:26,280 --> 00:34:27,940 ditaip dalam, hanya sebagai cek kewarasan sedikit. 852 00:34:27,940 --> 00:34:30,659 Tetapi mari kita lihat jika ini kerja-kerja seperti yang sepatutnya. 853 00:34:30,659 --> 00:34:34,533 Biar saya pergi kepala ke bawah di sini dan jalankan semula membuat gelung. 854 00:34:34,533 --> 00:34:35,350 Hmm. 855 00:34:35,350 --> 00:34:38,600 "Gunakan pengecam tidak diisytiharkan 'i'". Itu yang pelik. 856 00:34:38,600 --> 00:34:41,509 Saya fikir kita memutuskan bahawa. 857 00:34:45,489 --> 00:34:47,560 Gejala yang sama tetapi kod yang berbeza. 858 00:34:47,560 --> 00:34:47,899 Yeah? 859 00:34:47,899 --> 00:34:50,191 PENONTON: [didengar] di dalam kedua-dua, kita perlu 860 00:34:50,191 --> 00:34:52,639 [Didengar]. 861 00:34:52,639 --> 00:34:53,260 >> DAVID J. MALAN: Tepat sekali. 862 00:34:53,260 --> 00:34:55,989 Jadi ini sebenarnya membawa kita kepada topik yang dikenali sebagai skop. 863 00:34:55,989 --> 00:34:59,350 Ia ternyata bahawa C, sekali lagi, ia benar-benar mengambil anda benar-benar. 864 00:34:59,350 --> 00:35:02,970 Dan jika anda melakukan sesuatu seperti ini di mana anda mengisytiharkan int 865 00:35:02,970 --> 00:35:06,120 dan kemudian memberikan nilai tertentu, tetapi anda berbuat demikian dalam 866 00:35:06,120 --> 00:35:09,840 sepasang pendakap kerinting, apa C tidak ia menganggap bahawa anda 867 00:35:09,840 --> 00:35:14,800 hanya mahu bit-bit 32 yang dikenali sebagai i wujud dalam 868 00:35:14,800 --> 00:35:18,200 konteks mereka pendakap kerinting, dalam konteks garis 869 00:35:18,200 --> 00:35:22,420 6 hingga 9. Jadi i diisytiharkan, dan ia ditugaskan 870 00:35:22,420 --> 00:35:26,530 nilai di baris 8, tetapi sebaik sahaja anda mendapat luar 871 00:35:26,530 --> 00:35:30,270 line 9 di bawah pendakap kerinting, i tidak lagi 872 00:35:30,270 --> 00:35:31,910 skop, jadi untuk bercakap. 873 00:35:31,910 --> 00:35:35,030 S-C-O-P-E. Ia tidak lagi dalam konteks yang betul. 874 00:35:35,030 --> 00:35:37,940 Jadi sekarang ada ada i, jadi ia seolah-olah kita tidak mempunyai walaupun 875 00:35:37,940 --> 00:35:38,770 mengumumkan ia pada semua. 876 00:35:38,770 --> 00:35:41,520 >> Jadi apa yang menetapkan kemudian untuk sesuatu seperti ini, jika 877 00:35:41,520 --> 00:35:44,300 sebabnya ialah bahawa i diisytiharkan dalam pendakap kerinting, yang 878 00:35:44,300 --> 00:35:45,120 nampaknya buruk? 879 00:35:45,120 --> 00:35:45,410 Di sini? 880 00:35:45,410 --> 00:35:46,820 PENONTON: [didengar]. 881 00:35:46,820 --> 00:35:47,150 DAVID J. MALAN: Yeah. 882 00:35:47,150 --> 00:35:48,710 Jadi, kita boleh memulakan ia di luar. 883 00:35:48,710 --> 00:35:53,530 Jadi biarlah saya pergi ke hadapan dan memadam bahagian akuan mana 884 00:35:53,530 --> 00:35:55,820 Saya nyatakan jenis, dan biarlah saya melakukannya di sini. 885 00:35:55,820 --> 00:36:00,220 Jadi di baris 5, ia kini berkata "Berikan saya int." Memanggilnya i. 886 00:36:00,220 --> 00:36:03,400 Notis di baris 9, saya tidak mahu melakukan ini, kerana saya 887 00:36:03,400 --> 00:36:04,830 sudah mempunyai 32 bit. 888 00:36:04,830 --> 00:36:06,140 Saya tidak mahu untuk meminta komputer untuk 889 00:36:06,140 --> 00:36:07,630 berbeza bit 32. 890 00:36:07,630 --> 00:36:09,850 Saya mahu menggunakan yang sama 32 bit. 891 00:36:09,850 --> 00:36:13,190 Dan sekarang kerana i diisytiharkan di baris 5, ia masih legit 892 00:36:13,190 --> 00:36:16,550 untuk menggunakan ia di baris 11 dan laluan 12. 893 00:36:16,550 --> 00:36:19,310 >> Jadi biarlah saya cuba susun semula ini dan lihat 894 00:36:19,310 --> 00:36:20,490 jika dilafaz berhenti menjerit. 895 00:36:20,490 --> 00:36:22,380 membuat gelung. 896 00:36:22,380 --> 00:36:25,470 Jadi sekarang ia adalah "pengakuan tersirat fungsi 897 00:36:25,470 --> 00:36:29,880 'GetInt' adalah tidak sah di C99. "Apa tu? 898 00:36:29,880 --> 00:36:30,400 Yeah? 899 00:36:30,400 --> 00:36:32,330 PENONTON: [didengar]. 900 00:36:32,330 --> 00:36:32,690 DAVID J. MALAN: Yeah. 901 00:36:32,690 --> 00:36:35,520 Jadi sekarang bahawa saya sebenarnya menggunakan GetInt, ini bukanlah sesuatu yang 902 00:36:35,520 --> 00:36:38,190 yang hanya datang dengan C. Ini datang dari CS50. 903 00:36:38,190 --> 00:36:39,890 Jadi kita perlu ini di sini. 904 00:36:39,890 --> 00:36:41,450 Dan biarlah saya kembali ke bawah prompt 905 00:36:41,450 --> 00:36:43,500 di sini dan jalankan semula. 906 00:36:43,500 --> 00:36:44,160 Okay, akhirnya. 907 00:36:44,160 --> 00:36:46,270 Sekarang kita telah memutuskan bahawa dan kesilapan lain. 908 00:36:46,270 --> 00:36:48,930 Izinkan saya sekarang menjalankan gelung dan lihat apa yang berlaku. 909 00:36:48,930 --> 00:36:51,740 "Berikan saya int." Saya akan memberikan 11. 910 00:36:51,740 --> 00:36:53,100 Saya akan memberikan ia -1. 911 00:36:53,100 --> 00:36:54,470 Saya akan memberikan ia foo. 912 00:36:54,470 --> 00:36:56,080 Saya akan memberikan 5. 913 00:36:56,080 --> 00:36:57,450 Dan kini ia memang berfungsi. 914 00:36:57,450 --> 00:36:59,410 Tetapi segera berubah atas sebab-sebab di sini. 915 00:36:59,410 --> 00:37:02,800 Mengapa ia mengatakan cuba lagi salah satu daripada masa-masa tetapi memberikan saya 916 00:37:02,800 --> 00:37:03,920 int tiga kali yang lain? 917 00:37:03,920 --> 00:37:05,500 Mengapa tingkah laku yang berbeza? 918 00:37:05,500 --> 00:37:06,980 PENONTON: Memberi rentetan. 919 00:37:06,980 --> 00:37:07,830 DAVID J. MALAN: Maaf? 920 00:37:07,830 --> 00:37:08,570 PENONTON: Anda memberikannya rentetan. 921 00:37:08,570 --> 00:37:08,990 DAVID J. MALAN: Yeah. 922 00:37:08,990 --> 00:37:11,450 Jadi kita memberikan ia satu rentetan dalam percubaan ketiga ini, 923 00:37:11,450 --> 00:37:12,490 apabila saya menaip foo. 924 00:37:12,490 --> 00:37:13,200 Foo adalah rentetan. 925 00:37:13,200 --> 00:37:14,340 Ia jelas tidak int. 926 00:37:14,340 --> 00:37:17,500 Dan cara yang CS50 telah dilaksanakan GetInt adalah bahawa kita 927 00:37:17,500 --> 00:37:20,330 tidak memeriksa jika sesuatu yang kurang daripada 0 atau lebih daripada 10 928 00:37:20,330 --> 00:37:22,260 untuk anda, kerana bagaimana kita tahu terlebih dahulu apa jenis 929 00:37:22,260 --> 00:37:23,130 int yang anda mahu? 930 00:37:23,130 --> 00:37:25,880 Tetapi kita minimum boleh menyemak untuk anda, adakah pengguna sekurang-kurangnya 931 00:37:25,880 --> 00:37:26,730 taip integer? 932 00:37:26,730 --> 00:37:30,500 Dan jika mereka tidak, kita menjerit pada pengguna dengan menaip "cuba lagi" pada 933 00:37:30,500 --> 00:37:31,440 skrin. 934 00:37:31,440 --> 00:37:34,210 >> Jadi sekarang kita mempunyai program yang menggelung. Okay. 935 00:37:34,210 --> 00:37:37,070 Sekarang, yang ini adalah jenis membina yang lebih baik? 936 00:37:37,070 --> 00:37:39,060 Jadi ini adalah di mana perkara yang mula mendapatkan kotor sedikit, 937 00:37:39,060 --> 00:37:42,360 hakikat bahawa anda perlu ingat untuk mengisytiharkan pembolehubah di sini 938 00:37:42,360 --> 00:37:44,630 jika anda mahu menggunakan ia di dalam beberapa 939 00:37:44,630 --> 00:37:46,460 pendakap kerinting dan di luar. 940 00:37:46,460 --> 00:37:48,490 Tetapi walaupun ini kelihatan sedikit samar pada mulanya 941 00:37:48,490 --> 00:37:50,750 pandangan, hanya lagi, ingat logik yang mudah. 942 00:37:50,750 --> 00:37:54,630 Dalam usaha untuk menggunakan apa-apa dalam C, sama ada ia adalah fungsi atau 943 00:37:54,630 --> 00:37:57,680 ia adalah pembolehubah, anda perlu termasuk jika ia fungsi 944 00:37:57,680 --> 00:37:59,770 di beberapa perpustakaan, atau anda perlu mengisytiharkan ia. 945 00:37:59,770 --> 00:38:02,405 Tetapi sekarang anda perlu untuk menjadi prihatin tambahan hakikat bahawa 946 00:38:02,405 --> 00:38:04,940 anda mengisytiharkan ia dalam skop yang betul. 947 00:38:04,940 --> 00:38:08,150 Anda tidak meletakkan ia terlalu ketat di dalam kurungan. 948 00:38:08,150 --> 00:38:09,410 >> Jadi biarlah saya sebenarnya melancarkan kembali. 949 00:38:09,410 --> 00:38:12,660 Jika kita kembali kepada kami sebagai contoh dari awal, dan saya pergi 950 00:38:12,660 --> 00:38:19,245 kembali untuk int, int i = 0; i <10; i + +, dan saya 951 00:38:19,245 --> 00:38:26,370 melakukan printf bintang, seperti ini, dan kemudian paren dekat, dan kini 952 00:38:26,370 --> 00:38:30,410 printf i kini - 953 00:38:30,410 --> 00:38:33,500 mengikut logik yang sama, apa yang akan berlaku apabila saya cuba untuk 954 00:38:33,500 --> 00:38:35,500 menyusun program ini? 955 00:38:35,500 --> 00:38:36,790 PENONTON: pengecam tidak sah. 956 00:38:36,790 --> 00:38:38,560 DAVID J. MALAN: Jadi ia adalah satu lagi pengecam yang sah, 957 00:38:38,560 --> 00:38:39,470 pengecam yang tidak diisytiharkan. 958 00:38:39,470 --> 00:38:41,810 Sekarang, sebab sedikit berbeza. 959 00:38:41,810 --> 00:38:44,370 Terdapat jelas tiada pendakap kerinting di sini, tetapi sama 960 00:38:44,370 --> 00:38:46,790 idea, cerita yang sama skop terpakai. 961 00:38:46,790 --> 00:38:50,340 Jika anda telah mengisytiharkan pembolehubah seperti i dalam 962 00:38:50,340 --> 00:38:53,960 untuk gelung, walaupun anda telah tidak jelas bertulis kerinting 963 00:38:53,960 --> 00:38:56,980 pendakap, berfikir daripada mereka mental masih berada di sana, di mana 964 00:38:56,980 --> 00:39:00,310 kes i sahaja di dalam sah untuk gelung. 965 00:39:00,310 --> 00:39:03,080 Ia adalah tidak sah sebaik sahaja anda sampai ke baris seterusnya, yang 966 00:39:03,080 --> 00:39:05,090 kes ini kini 10. 967 00:39:05,090 --> 00:39:09,060 Jadi hanya beberapa isu skop dan sebagainya. 968 00:39:09,060 --> 00:39:12,620 Baiklah, apa-apa soalan? 969 00:39:12,620 --> 00:39:15,310 >> Baiklah, jadi ini adalah jenis program sedikit remeh, 970 00:39:15,310 --> 00:39:17,450 percetakan bintang hanya sedikit. 971 00:39:17,450 --> 00:39:20,400 Tetapi mari kita lihat jika anda masih ingat lagu ini di sini. 972 00:39:20,400 --> 00:39:22,530 Ini adalah sebuah lagu yang amat menjengkelkan anak-anak akan menyanyi pada 973 00:39:22,530 --> 00:39:23,550 bas sekolah dan sebagainya. 974 00:39:23,550 --> 00:39:25,990 Tetapi apa yang baik tentang adalah bahawa ia mempunyai cyclicity ini, 975 00:39:25,990 --> 00:39:27,910 di mana ia adalah "99 botol bir di dinding, 976 00:39:27,910 --> 00:39:28,520 99 botol bir. 977 00:39:28,520 --> 00:39:31,030 Mengambil salah satu turun, lulus di sekeliling, 98 botol bir pada 978 00:39:31,030 --> 00:39:34,330 dinding. "Dan maka lagu mengulangi 97, kemudian 96, kemudian 979 00:39:34,330 --> 00:39:38,040 95, kemudian 94, sepanjang jalan turun kepada 0 jika anda sebenarnya mendapat bahawa 980 00:39:38,040 --> 00:39:38,920 jauh di dalam bas. 981 00:39:38,920 --> 00:39:41,960 Jadi ini adalah satu program yang baik untuk menyusun melaksanakan, kerana saya 982 00:39:41,960 --> 00:39:43,650 Tuhan, jika anda hanya boleh melaksanakan ini dengan beberapa 983 00:39:43,650 --> 00:39:46,660 baris kod, anda boleh meludah keluar lyrics keseluruhan ini 984 00:39:46,660 --> 00:39:48,240 lagu agak cepat. 985 00:39:48,240 --> 00:39:50,420 Tetapi di sepanjang jalan, kita boleh mulakan sekarang mengusik selain beberapa 986 00:39:50,420 --> 00:39:52,460 membina asas gelung dan kini juga 987 00:39:52,460 --> 00:39:55,830 memperkenalkan fungsi bahawa kita menulis diri kita, kembali nilai 988 00:39:55,830 --> 00:39:57,020 yang kita lulus di sekeliling. 989 00:39:57,020 --> 00:39:58,910 Tetapi pertama, mengapa kita tidak pergi ke hadapan dan mengambil kami lima minit 990 00:39:58,910 --> 00:39:59,320 memecahkan di sini? 991 00:39:59,320 --> 00:40:01,480 Dan apabila kita kembali, kita akan menyanyikan lagu ini. 992 00:40:05,680 --> 00:40:08,760 >> Baiklah, jadi kita kembali. 993 00:40:08,760 --> 00:40:11,850 Dan apabila saya mengatakan bahawa kita sekarang akan menyanyi lagu ini, saya maksudkan 994 00:40:11,850 --> 00:40:13,250 programatik, bukan secara lisan. 995 00:40:13,250 --> 00:40:19,370 Jadi di sini kita mempunyai beer1.c, yang merupakan satu pelaksanaan ini 996 00:40:19,370 --> 00:40:20,580 lagu tertentu. 997 00:40:20,580 --> 00:40:23,110 Dan hanya perlu jelas, bagi mereka yang tidak biasa dengan apa yang 998 00:40:23,110 --> 00:40:24,460 perkara ini kelihatan seperti, izinkan saya pergi ke hadapan 999 00:40:24,460 --> 00:40:27,070 dan membuat beer1, Enter. 1000 00:40:27,070 --> 00:40:30,400 Sekarang izinkan saya berjalan beer1, dan apa yang kita akan lihat - berapa banyak botol 1001 00:40:30,400 --> 00:40:31,140 bir akan ada? 1002 00:40:31,140 --> 00:40:33,240 Saya akan menaip pada 99, seperti lagu mengatakan. 1003 00:40:33,240 --> 00:40:34,040 Enter. 1004 00:40:34,040 --> 00:40:35,650 Dan sekarang jika kita menatal - 1005 00:40:35,650 --> 00:40:38,280 oops - jika kita menatal melalui semua ini, kita akan melihat bahawa 1006 00:40:38,280 --> 00:40:41,350 ini memang menyanyi keseluruhan lagu. 1007 00:40:44,050 --> 00:40:44,540 Tunggu satu minit. 1008 00:40:44,540 --> 00:40:46,240 Bar tatal saya sedikit sehingga merosakkan. 1009 00:40:46,240 --> 00:40:47,940 Mari kita gunakan tetingkap yang lebih besar. 1010 00:40:47,940 --> 00:40:53,500 Jadi beer1, 99, di sana kita pergi. 1011 00:40:53,500 --> 00:40:56,420 Jadi di sini kita mempunyai lagu, dinyanyikan lebih cepat oleh 1012 00:40:56,420 --> 00:40:58,450 komputer daripada ia mungkin telah oleh kami. 1013 00:40:58,450 --> 00:41:00,340 Jadi notis, walaupun, sifat kitaran di sini. 1014 00:41:00,340 --> 00:41:03,380 Ia mengatakan 99, kemudian 99, kemudian "mengambil satu ke bawah, lulus 1015 00:41:03,380 --> 00:41:04,740 sekitar, "kemudian 98. 1016 00:41:04,740 --> 00:41:06,640 Dan kini ia mengulangi lagi dan lagi. 1017 00:41:06,640 --> 00:41:08,840 >> Jadi ini sebenarnya adalah peluang yang sempurna untuk beberapa jenis 1018 00:41:08,840 --> 00:41:10,400 menggelung membina. 1019 00:41:10,400 --> 00:41:12,950 Perhatikan bahawa saya jenis memotong sudut di sini. 1020 00:41:12,950 --> 00:41:15,960 Perhatikan bahawa saya berkata "98 botol bir di dinding, 1021 00:41:15,960 --> 00:41:19,010 97 botol bir di dinding, "dan yang hanya jadi 1022 00:41:19,010 --> 00:41:21,640 bahawa apabila kita mendapat satu botol bir, saya tidak mempunyai 1023 00:41:21,640 --> 00:41:23,300 bimbang tentang tatabahasa Inggeris. 1024 00:41:23,300 --> 00:41:25,790 Tetapi kita juga boleh menetapkan ini dengan sedikit jika 1025 00:41:25,790 --> 00:41:26,910 keadaan, mungkin. 1026 00:41:26,910 --> 00:41:30,110 Jika nombor ini adalah singular, pergi ke hadapan dan berkata "botol", 1027 00:41:30,110 --> 00:41:31,840 sebaliknya jika ia plural, mengatakan "botol". 1028 00:41:31,840 --> 00:41:34,150 Tetapi untuk sekarang, saya benar-benar memotong sudut itu. 1029 00:41:34,150 --> 00:41:35,520 Jadi mari kita lihat apa yang kita miliki di sini. 1030 00:41:35,520 --> 00:41:37,150 Jadi kita telah mendapat beberapa komen di atas. 1031 00:41:37,150 --> 00:41:39,450 Saya termasuk kedua-dua perpustakaan, sebagai 1032 00:41:39,450 --> 00:41:41,140 kita telah biasa. 1033 00:41:41,140 --> 00:41:43,610 Dan sekarang mari saya tatal ke bawah ke pertama 1034 00:41:43,610 --> 00:41:44,990 sebenar baris kod. 1035 00:41:44,990 --> 00:41:47,020 Line 17 bermula utama. 1036 00:41:47,020 --> 00:41:50,610 Talian 21 dan 20 mempunyai berapa banyak botol bir akan ada? 1037 00:41:50,610 --> 00:41:52,060 Dan kemudian saya panggil GetInt. 1038 00:41:52,060 --> 00:41:53,800 Dan kini saya mempunyai sedikit cek kewarasan. 1039 00:41:53,800 --> 00:41:57,030 >> Jadi ini adalah satu konvensyen bahawa kita sekarang akan mula mengguna pakai 1040 00:41:57,030 --> 00:41:59,620 lebih ketat menyemak input pengguna. 1041 00:41:59,620 --> 00:42:01,710 Kadang-kadang anda hanya tidak mahu segera mereka lagi 1042 00:42:01,710 --> 00:42:02,630 dan lagi dan lagi. 1043 00:42:02,630 --> 00:42:05,620 Jika pengguna skru sehingga dan tidak bekerjasama, denda. 1044 00:42:05,620 --> 00:42:07,430 Berhenti dan hanya tidak berurusan dengan mereka. 1045 00:42:07,430 --> 00:42:08,990 Dan supaya apa yang saya lakukan di sini. 1046 00:42:08,990 --> 00:42:12,520 Jika n adalah kurang daripada 1, saya hanya akan menjerit pada pengguna, 1047 00:42:12,520 --> 00:42:14,330 "Maaf, yang tidak masuk akal." Dan kemudian saya akan 1048 00:42:14,330 --> 00:42:16,650 sewenang-wenangnya return 1. 1049 00:42:16,650 --> 00:42:18,550 Jadi sekali lagi, ini adalah hanya satu konvensyen untuk mendapatkan digunakan untuk. 1050 00:42:18,550 --> 00:42:19,850 Buat masa sekarang, bawa ia pada iman. 1051 00:42:19,850 --> 00:42:22,700 Tetapi sehingga kini, kita telah sentiasa kembali 0, kerana 1052 00:42:22,700 --> 00:42:25,204 kita telah dikatakan kembali 0 menandakan apa? 1053 00:42:25,204 --> 00:42:26,000 PENONTON: Kejayaan. 1054 00:42:26,000 --> 00:42:27,320 DAVID J. MALAN: Kejayaan, itu sahaja. 1055 00:42:27,320 --> 00:42:29,740 Jadi sekarang bahawa kita akhirnya mula berfikir tentang 1056 00:42:29,740 --> 00:42:31,330 bukan kejayaan - 1057 00:42:31,330 --> 00:42:33,760 dalam erti kata lain, kes sudut, keadaan ralat - 1058 00:42:33,760 --> 00:42:37,520 sekarang saya mempunyai bekalan terhingga, atau sekurang-kurangnya empat bilion 1059 00:42:37,520 --> 00:42:39,790 perkara-perkara yang mungkin boleh pergi salah dalam program saya. 1060 00:42:39,790 --> 00:42:42,300 Dan saya boleh mula memberikan mereka nombor individu. 1061 00:42:42,300 --> 00:42:44,340 Kini, secara umumnya ia mencukupi untuk hanya kembali 1062 00:42:44,340 --> 00:42:45,730 sesuatu yang lain daripada 0. 1063 00:42:45,730 --> 00:42:48,040 Jadi kita akan hanya return 1 buat masa sekarang. 1064 00:42:48,040 --> 00:42:51,440 Tetapi sebab untuk kembali 1 adalah bahawa sebaik sahaja anda kembali 1065 00:42:51,440 --> 00:42:55,110 1, meneka apa yang berlaku kepada seluruh program? 1066 00:42:55,110 --> 00:42:55,720 Ia berhenti. 1067 00:42:55,720 --> 00:42:56,560 Itu sahaja. 1068 00:42:56,560 --> 00:42:59,150 Jadi hakikat bahawa saya kembali 1 adalah berkesan 1069 00:42:59,150 --> 00:43:02,950 pendek pintas pelaksanaan program ini supaya 1070 00:43:02,950 --> 00:43:06,780 apa-apa di bawah garis 27 akan terus melaksanakan. 1071 00:43:06,780 --> 00:43:09,210 Secepat pulangan yang utama, bahawa ia adalah. 1072 00:43:09,210 --> 00:43:13,160 >> Baiklah, jadi jika pengguna tidak bekerjasama dan kita mencapai garis 30 1073 00:43:13,160 --> 00:43:15,680 kerana mereka ditaip dalam nombor yang sah, di sini saya 1074 00:43:15,680 --> 00:43:16,990 pelaksanaan lagu ini. 1075 00:43:16,990 --> 00:43:19,050 Jadi saya mula-mula mencetak watak newline, hanya untuk 1076 00:43:19,050 --> 00:43:19,880 estetika. 1077 00:43:19,880 --> 00:43:21,500 Saya kini mempunyai untuk gelung. 1078 00:43:21,500 --> 00:43:22,930 Dan melihat saya melakukan perkara-perkara dalam sedikit 1079 00:43:22,930 --> 00:43:23,880 arah yang berbeza. 1080 00:43:23,880 --> 00:43:26,210 Saya tidak perlu untuk berbuat kurang daripada, saya tidak perlu untuk melakukan + +. 1081 00:43:26,210 --> 00:43:30,660 Saya sebaliknya boleh mengatakan memulakan pembolehubah i, tetapkan ia sama dengan 1082 00:43:30,660 --> 00:43:35,080 n, bilangan pengguna ditaip dalam, kemudian melakukan yang berikut, jadi 1083 00:43:35,080 --> 00:43:39,590 selagi i adalah lebih besar daripada 0, maka i - 1084 00:43:39,590 --> 00:43:42,070 sebaik sahaja anda selesai satu lelaran gelung ini. 1085 00:43:42,070 --> 00:43:44,310 Jadi, kita boleh mengira detik menggunakan untuk gelung serta. 1086 00:43:44,310 --> 00:43:47,520 Sekarang, ini adalah minggu cukup banyak satu barangan sekarang, dengan printf. 1087 00:43:47,520 --> 00:43:51,770 Jadi print "% d botol bir di dinding." Cetak "% d 1088 00:43:51,770 --> 00:43:54,990 botol bir. "Cetak" Ambil satu, lulus di sekeliling. " 1089 00:43:54,990 --> 00:43:58,880 "% D botol bir di dinding." Jadi ia masih d%, tetapi 1090 00:43:58,880 --> 00:44:02,770 notis bahawa hujah untuk printf berubah. 1091 00:44:02,770 --> 00:44:05,840 Selepas koma, saya mempunyai i, kerana saya mahu mengatakan 99. 1092 00:44:05,840 --> 00:44:08,590 Selepas koma ini, saya mempunyai i, kerana saya mahu mengatakan 99. 1093 00:44:08,590 --> 00:44:14,030 Selepas koma ini, saya mempunyai i - 1, kerana saya mahu mengatakan 98 di 1094 00:44:14,030 --> 00:44:16,260 ini lelaran pertama, dan sebagainya. 1095 00:44:16,260 --> 00:44:18,520 Dan kini turun di sini, saya hanya mempunyai beberapa kata-kata bodoh sedikit. 1096 00:44:18,520 --> 00:44:22,270 Dan kemudian garis 42, saya pulang 0 oleh konvensyen, menandakan bahawa 1097 00:44:22,270 --> 00:44:23,650 everything is okay. 1098 00:44:23,650 --> 00:44:24,490 >> Jadi apa jika saya goofed? 1099 00:44:24,490 --> 00:44:26,350 Apakah kesilapan yang biasa di sini mungkin? 1100 00:44:26,350 --> 00:44:29,200 Nah, bagaimana jika saya sengaja berkata, saya tidak mahu untuk mengira 1101 00:44:29,200 --> 00:44:31,640 ke 0, saya mahu 0 botol bir di dinding? 1102 00:44:31,640 --> 00:44:34,620 Jadi saya katakan, saya adalah lebih besar daripada atau sama dengan 0. 1103 00:44:34,620 --> 00:44:38,920 Apa yang akan menjadi gejala yang saya lihat sekarang jika saya susun semula 1104 00:44:38,920 --> 00:44:41,173 beer1 dan jalankan ia? 1105 00:44:41,173 --> 00:44:42,120 PENONTON: Negatif. 1106 00:44:42,120 --> 00:44:43,590 DAVID J. MALAN: Ya, ia gonna pergi negatif. 1107 00:44:43,590 --> 00:44:45,950 Ini adalah satu kesilapan demi satu, yang amat 1108 00:44:45,950 --> 00:44:47,270 kesilapan yang biasa untuk membuat. 1109 00:44:47,270 --> 00:44:48,960 Mari kita sebenarnya kembali ke tetingkap terminal dan melakukan 1110 00:44:48,960 --> 00:44:50,620 di sini, jadi kita boleh melihat lebih banyak pada satu-satu masa. 1111 00:44:50,620 --> 00:44:53,280 Enter, 99 botol bir. 1112 00:44:53,280 --> 00:44:56,580 Tutup, tetapi kita pergi pernah jadi sedikit terlalu jauh. 1113 00:44:56,580 --> 00:45:00,500 Kami menyanyikan lagu terlalu jauh ke bawah, seperti yang kita kini melanda 1114 00:45:00,500 --> 00:45:01,510 nombor negatif. 1115 00:45:01,510 --> 00:45:03,680 Jadi ia tidak cukup berfungsi. 1116 00:45:03,680 --> 00:45:06,450 >> Baiklah, jadi kita boleh menetapkan bahawa dengan kembali kepada 1117 00:45:06,450 --> 00:45:07,650 cara ia sekali adalah. 1118 00:45:07,650 --> 00:45:10,360 Tetapi apakah beberapa peluang sekarang untuk 1119 00:45:10,360 --> 00:45:11,190 peningkatan? 1120 00:45:11,190 --> 00:45:17,200 Baiklah, biar saya membuka beer2.c dan tatal ke bawah sini dan mengambil 1121 00:45:17,200 --> 00:45:19,310 melihat versi ini. 1122 00:45:19,310 --> 00:45:21,370 Apakah perkara pertama yang melompat keluar pada anda sebagai berbeza 1123 00:45:21,370 --> 00:45:23,715 dalam versi ini di sini? 1124 00:45:23,715 --> 00:45:24,190 PENONTON: [didengar]. 1125 00:45:24,190 --> 00:45:26,510 J. DAVID MALAN: Ya, jadi tidak ada lagi i, kerana ia berlaku kepada 1126 00:45:26,510 --> 00:45:29,350 saya anda tahu apa, saya meminta pengguna untuk n, dan kemudian saya 1127 00:45:29,350 --> 00:45:33,580 menetapkan i sama dengan n, dan kemudian saya menukar i, tetapi saya tidak pernah minta 1128 00:45:33,580 --> 00:45:34,590 menyentuh n lagi. 1129 00:45:34,590 --> 00:45:37,390 Jadi apa yang palang pintu adalah titik anda memperuntukkan lain 32 1130 00:45:37,390 --> 00:45:45,210 bit dipanggil i hanya supaya saya boleh mempunyai pembolehubah yang berbeza? 1131 00:45:45,210 --> 00:45:47,960 Jadi dalam kes ini, saya jenis yang diiktiraf bahawa tidak perlu 1132 00:45:47,960 --> 00:45:49,190 ciri reka bentuk. 1133 00:45:49,190 --> 00:45:52,730 Dan kini saya akan mengatakan manakala n adalah lebih besar daripada 0, pergi 1134 00:45:52,730 --> 00:45:56,180 hadapan dan mencetak lagu yang sama, lulus n untuk printf sebagai 1135 00:45:56,180 --> 00:46:00,210 Hujah kedua, dan n - 1 sebagai hujah kedua di sini. 1136 00:46:00,210 --> 00:46:02,930 Dan kemudian pada setiap lelaran gelung ini, pergi ke hadapan dan hanya 1137 00:46:02,930 --> 00:46:05,080 SUSUTAN n sendiri. 1138 00:46:05,080 --> 00:46:06,960 Kini, fungsi, program ini 1139 00:46:06,960 --> 00:46:08,010 akan menjadi sama. 1140 00:46:08,010 --> 00:46:10,730 Jika saya menaip dalam 99, n bermula pada 99. 1141 00:46:10,730 --> 00:46:12,890 Saya susutan, susutan, susutan, susutan. 1142 00:46:12,890 --> 00:46:15,875 Saya akan mendapatkan semua jalan ke "Satu botol bir pada 1143 00:46:15,875 --> 00:46:16,740 dinding, satu botol bir. 1144 00:46:16,740 --> 00:46:18,020 Ambil salah satu, lulus di sekeliling. 1145 00:46:18,020 --> 00:46:21,480 0 botol bir di dinding. "Akhir, kerana saya lakukan 1146 00:46:21,480 --> 00:46:23,200 mendapatkan keadaan yang betul. 1147 00:46:23,200 --> 00:46:24,280 Ia lebih besar daripada 0. 1148 00:46:24,280 --> 00:46:26,220 Saya tidak membuat kesilapan ini. 1149 00:46:26,220 --> 00:46:28,470 >> Jadi yang lebih baik, versi satu atau versi dua? 1150 00:46:31,380 --> 00:46:33,480 Jadi saya mendengar sekumpulan sungutmu untuk dua. 1151 00:46:33,480 --> 00:46:34,730 Mengapa dua? 1152 00:46:37,210 --> 00:46:38,225 Apa itu? 1153 00:46:38,225 --> 00:46:39,215 PENONTON: [didengar]. 1154 00:46:39,215 --> 00:46:40,070 DAVID J. MALAN: Oh, okay. 1155 00:46:40,070 --> 00:46:42,870 Jadi ia tidak akan pergi di bawah 0, tetapi ingat, dalam versi satu, 1156 00:46:42,870 --> 00:46:45,870 versi yang betul asal tidak pergi di bawah 0 sama ada. 1157 00:46:45,870 --> 00:46:48,340 Jadi ingat bahawa ini adalah versi yang betul. 1158 00:46:48,340 --> 00:46:51,630 Jadi biarlah sekurang-kurangnya membandingkan dua versi yang betul. 1159 00:46:51,630 --> 00:46:53,300 Apa hujah memihak versi 1160 00:46:53,300 --> 00:46:55,146 2, mmm, lebih baik? 1161 00:46:55,146 --> 00:46:55,642 Yeah? 1162 00:46:55,642 --> 00:46:57,630 PENONTON: Ia menggunakan ruang yang kurang. 1163 00:46:57,630 --> 00:46:59,530 DAVID J. MALAN: Okay, jadi ia menggunakan ruang kurang, kan? 1164 00:46:59,530 --> 00:47:02,900 Manakala satu versi menggunakan 32 bit untuk n, dan kemudian satu lagi 1165 00:47:02,900 --> 00:47:07,680 32 bit untuk i. 1166 00:47:07,680 --> 00:47:10,060 Versi dua sahaja menggunakan 32 bit bagi n, supaya 1167 00:47:10,060 --> 00:47:11,700 seolah-olah menjadi ditambah. 1168 00:47:11,700 --> 00:47:12,950 Pemikiran lain? 1169 00:47:18,070 --> 00:47:21,520 Adakah sesiapa yang mahu berhujah memihak kepada satu? 1170 00:47:21,520 --> 00:47:22,070 Yeah? 1171 00:47:22,070 --> 00:47:25,240 PENONTON: Anda perlu menggunakan baris tambahan kod bagi n -. 1172 00:47:25,240 --> 00:47:26,090 >> DAVID J. MALAN: Okay, pasti. 1173 00:47:26,090 --> 00:47:26,960 Supaya adil. 1174 00:47:26,960 --> 00:47:29,040 Jadi ini hanya, sekurang-kurangnya kepada saya - 1175 00:47:29,040 --> 00:47:31,940 Maksud saya, ini sebenarnya merasakan Messier sedikit, hakikat bahawa 1176 00:47:31,940 --> 00:47:35,120 Saya tidak boleh menyusun merangkumi semua logik saya dalam satu 1177 00:47:35,120 --> 00:47:38,030 garis indah, untuk gelung, kerana bagi gelung boleh. 1178 00:47:38,030 --> 00:47:40,240 Di sini, saya jenis perlu jelujur pada ini n - 1179 00:47:40,240 --> 00:47:41,120 pada akhir gelung, kerana 1180 00:47:41,120 --> 00:47:42,550 ia perlu logik. 1181 00:47:42,550 --> 00:47:45,190 Tetapi ia jenis menggosoknya saya dengan cara yang salah, hanya kerana ia 1182 00:47:45,190 --> 00:47:48,260 seolah-olah berasingan dari logik sehingga di sini, walaupun, 1183 00:47:48,260 --> 00:47:49,430 sekali lagi, ia adalah perlu. 1184 00:47:49,430 --> 00:47:50,990 Pemikiran lain? 1185 00:47:50,990 --> 00:47:51,490 Yeah? 1186 00:47:51,490 --> 00:47:52,740 PENONTON: [didengar]. 1187 00:47:57,990 --> 00:47:58,350 >> DAVID J. MALAN: Yeah. 1188 00:47:58,350 --> 00:48:00,730 Jadi apa jika anda sebaliknya, di akhir lagu, mahu 1189 00:48:00,730 --> 00:48:02,950 mencetak semula nama lagu? 1190 00:48:02,950 --> 00:48:05,660 Seperti "Terima kasih untuk bermain 99 botol bir", atau sesuatu 1191 00:48:05,660 --> 00:48:06,690 bodoh seperti itu? 1192 00:48:06,690 --> 00:48:09,750 Tetapi titik, anda mahu akses kepada nilai asal. 1193 00:48:09,750 --> 00:48:13,180 Hakikat bahawa anda telah bermutasi atau berubah n pada setiap 1194 00:48:13,180 --> 00:48:16,330 lelaran dan oleh itu telah memusnahkan nilai asalnya 1195 00:48:16,330 --> 00:48:18,650 bermakna anda hanya tidak boleh berbuat demikian di penghujung. 1196 00:48:18,650 --> 00:48:20,660 Sekarang, boleh dikatakan, kita dengan jelas tidak mahu melakukan 1197 00:48:20,660 --> 00:48:21,450 iaitu dalam program ini. 1198 00:48:21,450 --> 00:48:22,350 Jadi yang peduli? 1199 00:48:22,350 --> 00:48:23,630 Tetapi itulah satu fakta yang sah. 1200 00:48:23,630 --> 00:48:25,520 Dan untuk bersikap jujur, ada benar-benar tiada siapa 1201 00:48:25,520 --> 00:48:26,630 betul menjawab di sini. 1202 00:48:26,630 --> 00:48:28,740 Mereka kedua-dua sama-sama betul. 1203 00:48:28,740 --> 00:48:30,210 Saya boleh yakin sama ada cara. 1204 00:48:30,210 --> 00:48:33,310 Saya akan mengatakan bahawa, secara amnya, ia adalah prinsip yang baik jika anda 1205 00:48:33,310 --> 00:48:36,030 meminta pengguna untuk nilai beberapa dan anda disimpan dalam pembolehubah 1206 00:48:36,030 --> 00:48:38,730 seperti n, hanya jenis pada prinsip, ia mungkin baik 1207 00:48:38,730 --> 00:48:40,160 untuk memastikan bahawa sekitar. 1208 00:48:40,160 --> 00:48:43,400 Dan mana-mana data yang anda mahu untuk bermutasi lagi dan lagi, hanya 1209 00:48:43,400 --> 00:48:46,030 memberi diri anda salinan pembolehubah itu, semata-mata supaya anda 1210 00:48:46,030 --> 00:48:47,830 mempunyai akses kepada asal. 1211 00:48:47,830 --> 00:48:51,040 Anda menghabiskan 32 lebih bit, tetapi realitinya adalah ini 1212 00:48:51,040 --> 00:48:53,490 komputer telah, seperti, dua gigabait RAM pada hari ini, 1213 00:48:53,490 --> 00:48:55,310 dan kita kebawelan lebih daripada 32 bit? 1214 00:48:55,310 --> 00:48:56,320 Benar-benar tidak apa-apa masalah besar. 1215 00:48:56,320 --> 00:48:58,550 Dan walaupun pada peranti ini di sini, dengan setengah persembahan atau 1216 00:48:58,550 --> 00:49:01,700 gigabit RAM, 32 bit berbanding 64-bit, 1217 00:49:01,700 --> 00:49:02,920 tidak seperti masalah besar. 1218 00:49:02,920 --> 00:49:05,890 Sudah tentu hari ini, ia akan menjadi cara terharu oleh saiz 1219 00:49:05,890 --> 00:49:08,400 program itu sendiri, yang akan menjadi beberapa ratus 1220 00:49:08,400 --> 00:49:10,890 kilobytes, jika tidak beberapa megabait, hari ini. 1221 00:49:10,890 --> 00:49:13,550 >> Jadi kebimbangan yang munasabah, tiada siapa yang betul jawapan. 1222 00:49:13,550 --> 00:49:15,490 Tetapi sekurang-kurangnya mereka adalah pemikiran yang harus bermula 1223 00:49:15,490 --> 00:49:16,790 pergi melalui fikiran anda? 1224 00:49:16,790 --> 00:49:19,600 Disebabkan dalam pset 0, walaupun kita benar-benar hanya dijangka 1225 00:49:19,600 --> 00:49:22,340 ketepatan, atau sekurang-kurangnya penolakan bug pelbagai bahawa 1226 00:49:22,340 --> 00:49:25,440 anda mungkin telah ditemui, seperti yang kita bergerak ke hadapan, reka bentuk 1227 00:49:25,440 --> 00:49:27,910 akan menjadi satu lagi aspek utama, kedua-dua penulisan kod 1228 00:49:27,910 --> 00:49:29,770 dan juga kita menilai kod. 1229 00:49:29,770 --> 00:49:32,310 Dan supaya sekurang-kurangnya memberikan pemikiran kepada perkara-perkara seperti ini. 1230 00:49:32,310 --> 00:49:35,590 Dan hanya kerana sesuatu kerja tidak bermakna ia adalah baik, 1231 00:49:35,590 --> 00:49:37,130 tidak bermakna ia adalah direka dengan baik. 1232 00:49:37,130 --> 00:49:38,820 Dan itulah salah satu perkara felo pengajaran dan 1233 00:49:38,820 --> 00:49:41,990 set masalah akan membantu kita mengusik sebahagian dari masa ke masa. 1234 00:49:41,990 --> 00:49:45,020 >> Nah, apa yang kira-kira, mari kita katakan, versi ini di sini? 1235 00:49:45,020 --> 00:49:49,090 Biar saya melakukan sesuatu yang sedikit seksi di sini dalam seketika. 1236 00:49:49,090 --> 00:49:50,740 Pertama biarlah saya menghilangkan ini. 1237 00:49:50,740 --> 00:49:54,120 Dan sekarang mari kita menetapkan isu ini tatabahasa. 1238 00:49:54,120 --> 00:49:58,780 Jadi, dalam versi ini, saya mahu memperbaiki tatabahasanya supaya, 1239 00:49:58,780 --> 00:50:02,460 bukannya hanya mengatakan s kurungan, seperti "botol" 1240 00:50:02,460 --> 00:50:03,360 atau "botol" - 1241 00:50:03,360 --> 00:50:04,900 Saya tidak mahu untuk mengurangkan sudut itu - 1242 00:50:04,900 --> 00:50:08,350 Saya juga ingin dinamik mencetak perkataan "botol" 1243 00:50:08,350 --> 00:50:12,820 atau "botol", sekali gus menggunakan ruang letak ini% s hari ini. 1244 00:50:12,820 --> 00:50:16,550 Jadi saya perlu bersyarat memeriksa apakah nilai i. 1245 00:50:16,550 --> 00:50:19,590 Dan jika ia adalah 1, saya mahu mengatakan "botol", dan jika apa-apa yang ia 1246 00:50:19,590 --> 00:50:23,115 lain, saya mahu mengatakan "botol". Jadi mari kita cuba untuk melakukan ini. 1247 00:50:23,115 --> 00:50:31,340 Jadi jika i == 1, maka biarlah saya pergi ke hadapan dan mengisytiharkan - 1248 00:50:31,340 --> 00:50:34,080 Saya perlu rentetan, jadi mari saya melakukan s1 tali, kerana ia adalah 1249 00:50:34,080 --> 00:50:36,070 rentetan pertama saya mengambil berat tentang sekarang. 1250 00:50:36,070 --> 00:50:40,980 Saya akan mengatakan "botol". Dan kemudian, mari kita lihat, tali 1251 00:50:40,980 --> 00:50:43,110 s2 - dan saya akan terangkan di mana saya akan dalam seketika - 1252 00:50:43,110 --> 00:50:47,650 "Botol." Jadi ingat bahawa, dalam lagu ini, kita perlu berupaya 1253 00:50:47,650 --> 00:50:50,580 untuk mencetak perkara, dua perkataan yang berbeza yang berpotensi. 1254 00:50:50,580 --> 00:50:53,590 Jadi, jika kita melihat kembali di sini, notis bahawa apabila kita mendapat 1255 00:50:53,590 --> 00:50:56,440 ini contoh di sini, "dua botol bir di dinding, 1256 00:50:56,440 --> 00:50:59,490 dua botol bir, mengambil satu ke bawah, lulus di sekeliling ", saya mahu 1257 00:50:59,490 --> 00:51:02,380 ini selaras keempat kini mengatakan "satu botol bir pada 1258 00:51:02,380 --> 00:51:04,900 dinding ". Jadi saya perlu membuat keputusan, saya mahu mengatakan" botol "atau 1259 00:51:04,900 --> 00:51:07,780 "Botol"? Jadi saya akan sewenang-wenangnya mengatakan, semua hak, 1260 00:51:07,780 --> 00:51:10,530 Saya akan kini mengisytiharkan pembolehubah dipanggil s1, tali 1261 00:51:10,530 --> 00:51:13,830 satu, perkara yang berlaku untuk mendapatkan dipasang di sini dan juga di sini, 1262 00:51:13,830 --> 00:51:16,070 kerana kata-kata adalah sentiasa serupa, hanya kerana 1263 00:51:16,070 --> 00:51:17,290 jenis lagu. 1264 00:51:17,290 --> 00:51:20,100 Dan saya akan memanggil s2 apa jua perkataan yang saya mahu 1265 00:51:20,100 --> 00:51:21,560 akhirnya muncul ke sini. 1266 00:51:21,560 --> 00:51:25,530 Kini, secara literal, 99 kali daripada 100, ia akan menjadi 1267 00:51:25,530 --> 00:51:28,820 sama dalam kedua-dua kes tersebut, kerana 3 adalah dalam bentuk jamak, 2 adalah 1268 00:51:28,820 --> 00:51:30,200 jamak, 4 adalah dalam bentuk jamak. 1269 00:51:30,200 --> 00:51:34,640 Tetapi dalam kes sudut ini, di mana kita akan mendapat ke 2 dan kemudian 1, atau 1270 00:51:34,640 --> 00:51:37,250 walaupun 1 dan kemudian 0, saya perlu logik ini. 1271 00:51:37,250 --> 00:51:41,020 Jadi saya perlu meluangkan masa dalam kod saya mendapat hak itu. 1272 00:51:41,020 --> 00:51:47,530 Jadi jika saya lakukan ini, jika i == 1, kemudian menetapkan s1 sama dengan "botol" 1273 00:51:47,530 --> 00:51:52,010 dan s2 sama dengan "botol", kerana ini akan menjadi untuk 1 1274 00:51:52,010 --> 00:51:56,340 botol, dan ini akan menjadi untuk 0 botol. 1275 00:51:56,340 --> 00:51:58,250 Dan ini di sini, apakah ini mewakili? 1276 00:51:58,250 --> 00:51:59,780 Hanya untuk menjadi jelas. 1277 00:51:59,780 --> 00:52:00,620 Ini hanyalah komen. 1278 00:52:00,620 --> 00:52:03,730 Jadi hakikat bahawa anda boleh mempunyai barisan tunggal comments bermakna anda 1279 00:52:03,730 --> 00:52:06,110 boleh komen kod anda seperti ini, tetapi lain biasa 1280 00:52:06,110 --> 00:52:09,050 paradigma, juga, adalah bahawa jika anda mempunyai frasa super-pendek yang 1281 00:52:09,050 --> 00:52:11,410 anda ingin meletakkan diri anda dan ia hanya lebih mudah dibaca untuk meletakkan 1282 00:52:11,410 --> 00:52:13,270 ia betul-betul di akhir baris kod, anda boleh 1283 00:52:13,270 --> 00:52:15,230 benar-benar melakukan sesuatu seperti ini. 1284 00:52:15,230 --> 00:52:20,150 >> Jadi sekarang apa jika saya lakukan ini? Lain jika saya tidak sama dengan 1. 1285 00:52:20,150 --> 00:52:21,620 Jadi bang sama - 1286 00:52:21,620 --> 00:52:23,150 tanda seru dikenali sebagai "bang". 1287 00:52:23,150 --> 00:52:25,080 Jadi bang = 1. 1288 00:52:25,080 --> 00:52:28,530 Jadi, jika saya tidak sama dengan 1, apa yang saya bukannya mahu lakukan? 1289 00:52:28,530 --> 00:52:31,700 Nah, perkataan pertama yang saya ingin menjadi apa? 1290 00:52:34,620 --> 00:52:40,030 Jadi rentetan 1 harus "botol" untuk botol majmuk, 1291 00:52:40,030 --> 00:52:42,440 dan maka ini akan menjadi plural dengan "botol" juga, buat masa sekarang. 1292 00:52:42,440 --> 00:52:43,800 Dan kita akan melihat jika ini sebenarnya mendapat kita untuk 1293 00:52:43,800 --> 00:52:44,870 di mana kita mahu pergi. 1294 00:52:44,870 --> 00:52:47,680 Jadi sekarang jika saya tatal ke bawah di sini, notis bahawa saya memasang 1295 00:52:47,680 --> 00:52:50,170 bukan sahaja i, tetapi s1. 1296 00:52:50,170 --> 00:52:51,860 Saya memasang dalam i dan s1. 1297 00:52:51,860 --> 00:52:54,440 Dan kemudian turun di sini, saya tolak 1, yang adalah sama seperti 1298 00:52:54,440 --> 00:52:55,920 sebelum ini, tetapi s2. 1299 00:52:55,920 --> 00:52:58,730 Dalam erti kata lain, saya mahu perkataan Bahasa Inggeris untuk menukar berasaskan 1300 00:52:58,730 --> 00:52:59,930 logik ini. 1301 00:52:59,930 --> 00:53:03,310 Kini, sudah ada beberapa masalah dalam kod ini. 1302 00:53:03,310 --> 00:53:08,460 Apa rosak pun keluar dari pintu di sini? 1303 00:53:08,460 --> 00:53:10,796 Yeah? 1304 00:53:10,796 --> 00:53:13,210 PENONTON: [didengar]. 1305 00:53:13,210 --> 00:53:13,800 >> DAVID J. MALAN: Tepat sekali. 1306 00:53:13,800 --> 00:53:16,030 Jadi saya telah melanggar pengajaran skop. 1307 00:53:16,030 --> 00:53:19,610 Jadi saya telah diisytiharkan s1 dan s2, tetapi saya telah dilakukan dalam 1308 00:53:19,610 --> 00:53:22,980 pendakap kerinting, yang bermaksud yeah, kod ini akan bekerja sehingga 1309 00:53:22,980 --> 00:53:27,430 sehingga garisan 42, tetapi dengan seberapa segera kerana saya berada di garis 43, meneka apa yang tidak 1310 00:53:27,430 --> 00:53:28,900 wujud lagi? 1311 00:53:28,900 --> 00:53:32,600 Nah, rasa apa yang ada lagi dalam skop - tidak s1 atau s2. 1312 00:53:32,600 --> 00:53:33,780 Jadi, kita perlu untuk menetapkan ini. 1313 00:53:33,780 --> 00:53:36,180 Jadi biarlah saya memadam pengisytiharan. 1314 00:53:36,180 --> 00:53:39,320 Dan saya akan meninggalkan nama-nama pembolehubah dan memadam ini di sini 1315 00:53:39,320 --> 00:53:40,120 dan memadam ini di sini. 1316 00:53:40,120 --> 00:53:43,557 Dan di baris apa perlu saya benar-benar mengaku perkara ini? 1317 00:53:43,557 --> 00:53:44,960 PENONTON: [didengar]. 1318 00:53:44,960 --> 00:53:45,410 DAVID J. MALAN: Ya, jadi mungkin 1319 00:53:45,410 --> 00:53:46,850 sehingga di sini, 33-ish. 1320 00:53:46,850 --> 00:53:50,670 Jadi s1 tali dan kemudian tali s2. 1321 00:53:50,670 --> 00:53:51,950 Dan ternyata, saya boleh melakukan ini. 1322 00:53:51,950 --> 00:53:54,260 Jika anda sedang mengisytiharkan dua pembolehubah jenis yang sama, 1323 00:53:54,260 --> 00:53:57,420 anda sebenarnya hanya boleh menggunakan koma dan berbuat demikian dalam C. Semua 1324 00:53:57,420 --> 00:53:58,970 betul, jadi sekarang saya mempunyai dua pembolehubah - 1325 00:53:58,970 --> 00:53:59,860 s1 dan s2. 1326 00:53:59,860 --> 00:54:02,000 Saya memberikan mereka nilai dalam ini 1327 00:54:02,000 --> 00:54:04,210 syarat di sini, atau di sini. 1328 00:54:04,210 --> 00:54:06,690 Dan kemudian saya menggunakan mereka ke bawah. 1329 00:54:06,690 --> 00:54:10,960 Sejauh ini kini akan bekerja? 1330 00:54:10,960 --> 00:54:12,740 >> Nah, ia adalah masih sedikit buggy, tetapi mari kita sekurang-kurangnya melihat 1331 00:54:12,740 --> 00:54:13,730 sejauh mana kita telah mendapat. 1332 00:54:13,730 --> 00:54:16,500 Jadi biarlah saya pergi ke hadapan dan membuat beer3. 1333 00:54:16,500 --> 00:54:17,695 Adakah ini beer3? 1334 00:54:17,695 --> 00:54:19,410 Ya, ini adalah beer3. 1335 00:54:19,410 --> 00:54:21,510 Dan sekarang mari saya pergi ke hadapan dan menjalankan beer3. 1336 00:54:21,510 --> 00:54:23,820 399 99. 1337 00:54:23,820 --> 00:54:25,840 Kita mungkin boleh melangkau kebanyakan mereka. 1338 00:54:25,840 --> 00:54:29,100 Dan ke bawah di sini, melihat bahawa. 1339 00:54:29,100 --> 00:54:31,110 "Satu botol bir di dinding, satu botol bir, mengambil 1340 00:54:31,110 --> 00:54:34,306 1 down, lulus sekitar, 0 botol bir di dinding. " 1341 00:54:34,306 --> 00:54:37,570 Tetapi saya menarik perhatian anda kepada hanya separuh daripada penyelesaian. 1342 00:54:37,570 --> 00:54:39,620 Jenis diskrukan sehingga di sini. 1343 00:54:39,620 --> 00:54:43,030 Jadi ia seolah-olah bahawa kes sudut timbul apabila i sama apa 1344 00:54:43,030 --> 00:54:44,030 dua nilai? 1345 00:54:44,030 --> 00:54:45,020 PENONTON: 2, 1. 1346 00:54:45,020 --> 00:54:46,190 DAVID J. MALAN: 2 dan 1. 1347 00:54:46,190 --> 00:54:48,180 Ia bukan 1 dan bukan 1. 1348 00:54:48,180 --> 00:54:51,890 Ia adalah benar-benar hanya ini lepas dua rangkap lagu ini. 1349 00:54:51,890 --> 00:54:53,890 Jadi apa yang saya sebaliknya mahu lakukan? 1350 00:54:53,890 --> 00:54:58,890 Jadi saya seolah-olah telah ditangkap kes di mana jika i == hingga 1, 1351 00:54:58,890 --> 00:55:02,240 maka perkataan pertama adalah "botol", tetapi perkataan kedua 1352 00:55:02,240 --> 00:55:07,230 "botol". Tetapi di sini, saya mahu mengubah ini untuk menjadi == 2. 1353 00:55:07,230 --> 00:55:08,570 Dan jika ini berlaku, apa yang saya mahu 1354 00:55:08,570 --> 00:55:09,620 perkataan pertama menjadi? 1355 00:55:09,620 --> 00:55:10,430 PENONTON: "Botol". 1356 00:55:10,430 --> 00:55:12,890 DAVID J. MALAN: "Botol", jadi untuk dua botol. 1357 00:55:12,890 --> 00:55:14,690 Dan maka perkataan ini di sini harus - 1358 00:55:14,690 --> 00:55:15,340 PENONTON: "botol". 1359 00:55:15,340 --> 00:55:17,316 DAVID J. MALAN: "botol", singular. 1360 00:55:20,430 --> 00:55:25,160 >> Baiklah, mari kita mengezum keluar, kembali di sini, lari semula membuat, 1361 00:55:25,160 --> 00:55:28,590 semula yang dikendalikan beer3, jenis 99 lagi. 1362 00:55:28,590 --> 00:55:30,710 Okay, "kesalahan Segmentasi (teras dibuang)." 1363 00:55:30,710 --> 00:55:32,780 Apa yang telah saya lakukan salah? 1364 00:55:36,050 --> 00:55:38,722 PENONTON: Anda tidak mempunyai nilai [didengar]. 1365 00:55:38,722 --> 00:55:40,480 DAVID J. MALAN: Ah, titik cemerlang. 1366 00:55:40,480 --> 00:55:43,310 Baiklah, jadi apa yang salah di sini? 1367 00:55:43,310 --> 00:55:45,450 Jadi kesalahan segmentasi, dan kita sebenarnya akan melihat 1368 00:55:45,450 --> 00:55:49,020 ini agak beberapa kali pada masa depan, sengaja. 1369 00:55:49,020 --> 00:55:51,030 Tetapi untuk sekarang, apakah ini sebenarnya bermakna? 1370 00:55:51,030 --> 00:55:53,620 Satu kesalahan segmentasi hampir selalu bermakna bahawa anda mempunyai 1371 00:55:53,620 --> 00:55:56,760 entah bagaimana cuba untuk mengakses ingatan, RAM dalam komputer anda, 1372 00:55:56,760 --> 00:56:00,600 bahawa anda tidak melakukan sendiri, bahawa anda sebenarnya tidak meminta 1373 00:56:00,600 --> 00:56:02,050 sistem operasi untuk. 1374 00:56:02,050 --> 00:56:04,440 Jadi dalam kes ini, melihat apa yang saya telah lakukan, yang merupakan 1375 00:56:04,440 --> 00:56:05,870 cacat dalam logik saya. 1376 00:56:05,870 --> 00:56:09,500 Saya telah ditugaskan nilai s1 dan s2 jika i sama dengan 1. 1377 00:56:09,500 --> 00:56:11,590 Saya juga telah dilakukan bahawa jika i bersamaan 2. 1378 00:56:11,590 --> 00:56:13,710 Tetapi saya tidak pernah dilakukan dalam bilangan yang tidak terhingga lain 1379 00:56:13,710 --> 00:56:14,690 kemungkinan - 1380 00:56:14,690 --> 00:56:17,940 khususnya, 3 atau 4 atau dot, dot, dot, 99. 1381 00:56:17,940 --> 00:56:20,100 Jadi satu untuk memperbaiki ini hanya boleh membiarkan 1382 00:56:20,100 --> 00:56:22,190 mempunyai satu keadaan yang lain. 1383 00:56:22,190 --> 00:56:26,780 Dan biarlah saya pergi di sini dan mengatakan s1 sama - 1384 00:56:26,780 --> 00:56:28,180 apa yang ia harus berada di sini? 1385 00:56:28,180 --> 00:56:28,750 PENONTON: [didengar]. 1386 00:56:28,750 --> 00:56:30,460 >> DAVID J. MALAN: "Botol", kerana dalam kes biasa, 1387 00:56:30,460 --> 00:56:32,020 ia hanya perkara yang sama. 1388 00:56:32,020 --> 00:56:35,580 Jadi sama quote, unquote, "botol." Jadi untuk jamak 1389 00:56:35,580 --> 00:56:41,010 botol, dan kemudian naik di sini, untuk botol majmuk. 1390 00:56:41,010 --> 00:56:44,580 Okay, jadi sekarang mari saya kembali ke tetingkap terminal saya, 1391 00:56:44,580 --> 00:56:47,200 susun semula, semula menjalankan ia. 1392 00:56:47,200 --> 00:56:48,440 99. 1393 00:56:48,440 --> 00:56:49,150 Huh. 1394 00:56:49,150 --> 00:56:50,610 Dan mari kita buat cek kewarasan cepat. 1395 00:56:50,610 --> 00:56:52,400 Secara teknikalnya, kita akan mahu membaca semua ini untuk memastikan 1396 00:56:52,400 --> 00:56:53,370 mereka betul, tetapi mari kita lihat 1397 00:56:53,370 --> 00:56:54,640 kurangnya penyebab yang diketahui. 1398 00:56:54,640 --> 00:56:57,370 3 botol, 2 botol, 2 botol, 1 1399 00:56:57,370 --> 00:57:00,380 botol, 1 botol, 0 botol. 1400 00:57:00,380 --> 00:57:03,080 Kita seolah-olah telah sekurang-kurangnya tetap untuk sekarang. 1401 00:57:03,080 --> 00:57:06,010 Tetapi tangkapan di sini adalah bahawa apa yang mes tuhan mengerikan ini adalah 1402 00:57:06,010 --> 00:57:07,470 hanya untuk menyelesaikan bodoh 1403 00:57:07,470 --> 00:57:09,540 satu-watak detail tatabahasa. 1404 00:57:09,540 --> 00:57:11,150 Jadi terdapat jenis sebab-sebab yang saya memotong sudut ini 1405 00:57:11,150 --> 00:57:14,090 sebelum ini, kerana ia hanya benar-benar menjengkelkan mempunyai 1406 00:57:14,090 --> 00:57:15,020 menulis kod ini banyak. 1407 00:57:15,020 --> 00:57:17,530 Tetapi ia ternyata bahawa terdapat sedikit lebih anggun cara 1408 00:57:17,530 --> 00:57:20,110 menyatakan perkara yang sama. 1409 00:57:20,110 --> 00:57:22,040 Dan kita boleh lakukan ini seperti berikut. 1410 00:57:22,040 --> 00:57:23,890 >> Biar saya meninggalkan ini pada skrin untuk seketika dan 1411 00:57:23,890 --> 00:57:27,320 memperkenalkan sesuatu yang dikenali sebagai pengendali pertigaan. 1412 00:57:27,320 --> 00:57:29,600 Ini adalah jenis pelapik satu itu hanya bertujuan untuk membuat 1413 00:57:29,600 --> 00:57:31,880 tinggal seksi sedikit, seperti yang dijanjikan. 1414 00:57:31,880 --> 00:57:33,130 Dan saya akan melakukan ini seperti berikut. 1415 00:57:33,130 --> 00:57:35,810 Berikan saya rentetan dipanggil s1, dan biarlah saya 1416 00:57:35,810 --> 00:57:37,200 sediakan seperti berikut. 1417 00:57:37,200 --> 00:57:39,900 (I == 1)? 1418 00:57:39,900 --> 00:57:47,820 "Botol", sebaliknya "botol". Rentetan s2 mendapat (i == 2)? 1419 00:57:47,820 --> 00:57:52,670 "Botol", sebaliknya "botol". 1420 00:57:52,670 --> 00:57:57,050 Jadi apa yang kemudian adalah perbezaan di sini? 1421 00:57:57,050 --> 00:57:59,370 Kedua-dua baris kod, saya berhujah, boleh 1422 00:57:59,370 --> 00:58:02,200 menggantikan keseluruhan keadaan kucar-kacir. 1423 00:58:02,200 --> 00:58:04,280 Jadi saya memanggilnya kacau-bilau, hanya kerana ia jenis menggosoknya saya 1424 00:58:04,280 --> 00:58:05,940 cara yang salah bahawa ia adalah begitu banyak baris kod. 1425 00:58:05,940 --> 00:58:06,650 Tidak salah. 1426 00:58:06,650 --> 00:58:07,700 Ia tidak reka bentuk yang buruk. 1427 00:58:07,700 --> 00:58:10,140 Seperti, ini adalah betul-betul dan sempurna denda. 1428 00:58:10,140 --> 00:58:12,970 Tetapi kod mendapat membosankan jika anda mempunyai untuk meluahkan diri anda supaya 1429 00:58:12,970 --> 00:58:15,530 sialan khusus lagi dan lagi dan lagi dengan mudah 1430 00:58:15,530 --> 00:58:16,620 senario seperti ini. 1431 00:58:16,620 --> 00:58:19,470 Jadi C mempunyai beberapa jalan pintas, seperti ini. 1432 00:58:19,470 --> 00:58:24,270 Jadi ini pada dasarnya mengatakan menyatakan rentetan dipanggil s1 dan 1433 00:58:24,270 --> 00:58:32,610 sediakan sama ada ini nilai atau nilai ini jika i == - 1434 00:58:32,610 --> 00:58:35,290 maaf, saya harus mengatakan ini dengan lebih jelas. 1435 00:58:35,290 --> 00:58:41,680 Mengisytiharkan s1 ubah, menyerahhakkan nilai ini jika ini adalah benar. 1436 00:58:41,680 --> 00:58:44,280 Jika tidak, menyerahhakkan nilai ini. 1437 00:58:44,280 --> 00:58:47,220 Jadi dalam erti kata lain, ini adalah jenis cara satu garis 1438 00:58:47,220 --> 00:58:51,490 mengatakan jika lain tetapi melakukan tugasan di sepanjang jalan. 1439 00:58:51,490 --> 00:58:55,540 Jadi, jika i 1, kemudian pergi ke hadapan dan memanggil ini "botol". Dan 1440 00:58:55,540 --> 00:58:59,830 maka ini lain, memanggil ia "botol". Sementara itu, s2, 1441 00:58:59,830 --> 00:59:04,060 perkataan kedua yang kita perlu untuk menentukan, jika i bersamaan 2, kami akan 1442 00:59:04,060 --> 00:59:08,350 menetapkan s2 ke "botol". Jika tidak, menetapkan ia untuk "botol". Dan apa 1443 00:59:08,350 --> 00:59:11,460 ini bermakna sekarang adalah saya boleh pergi melalui ini dan memadam semua 1444 00:59:11,460 --> 00:59:12,860 mereka baris kod. 1445 00:59:12,860 --> 00:59:17,220 Dan apabila saya berkata, agak mustahil, bahawa ini adalah kini 1446 00:59:17,220 --> 00:59:20,060 seksi, ia adalah seksi dalam apapun rasa gaya. 1447 00:59:20,060 --> 00:59:22,660 Hakikat bahawa fungsi, kod ini sebenarnya akan 1448 00:59:22,660 --> 00:59:24,610 melakukan perkara yang sama. 1449 00:59:24,610 --> 00:59:26,890 Dan walaupun ia mungkin kelihatan sedikit samar pada mulanya 1450 00:59:26,890 --> 00:59:29,250 pandangan, kerana kita telah tidak dilihat membina sebelum ini, saya akan 1451 00:59:29,250 --> 00:59:31,850 berhujah bahawa ia akhirnya akan menjadi banyak lagi 1452 00:59:31,850 --> 00:59:34,820 dibaca dan sebagainya lebih mudah bagi kita manusia untuk menyusun 1453 00:59:34,820 --> 00:59:36,830 memahami, kerana sekarang anda hanya boleh membaca 1454 00:59:36,830 --> 00:59:38,830 kod semua dalam satu baris. 1455 00:59:38,830 --> 00:59:41,550 Ia masih sama dalam semangat jika, di mana ini adalah 1456 00:59:41,550 --> 00:59:44,920 keadaan dan kemudian ini adalah apa yang di dalam jika dan ini 1457 00:59:44,920 --> 00:59:46,480 adalah apa yang di dalam yang lain. 1458 00:59:46,480 --> 00:59:49,450 Tetapi kita boleh lakukan ini hanya lebih elegan. 1459 00:59:49,450 --> 00:59:52,650 >> Dan jika saya kini kembali ke terminal saya, setelah memadam semua 1460 00:59:52,650 --> 00:59:55,530 mereka garis dan digantikan mereka dengan hanya kedua-dua, 1461 00:59:55,530 --> 01:00:00,150 susun semula, yang dikendalikan semula botol bir dengan 99, notis bahawa saya 1462 01:00:00,150 --> 01:00:03,350 tatabahasa adalah, sebenarnya, masih betul. 1463 01:00:03,350 --> 01:00:06,160 Jadi sekali lagi, sesuatu untuk memulakan. 1464 01:00:06,160 --> 01:00:08,840 2 botol bir, 1 botol bir. 1465 01:00:08,840 --> 01:00:09,370 Kelihatan betul. 1466 01:00:09,370 --> 01:00:10,100 Yeah. 1467 01:00:10,100 --> 01:00:13,900 Jadi ada kita mempunyai ringkas penyelesaian yang lebih. 1468 01:00:13,900 --> 01:00:16,020 Jadi ini, juga, seperti yang anda mendapatkan lebih selesa dengan C, tidak 1469 01:00:16,020 --> 01:00:18,630 semestinya dengan pset pertama, atau lebih 2, tetapi 1470 01:00:18,630 --> 01:00:21,170 menyedari bahawa konstruk ini boleh membenarkan kita untuk melakukan perkara-perkara yang pernah 1471 01:00:21,170 --> 01:00:22,810 lebih elegan. 1472 01:00:22,810 --> 01:00:25,200 Sekarang mari kita melakukan satu perkara lain di sini. 1473 01:00:25,200 --> 01:00:31,460 Biar saya pergi ke hadapan dan membuka return1.c. 1474 01:00:31,460 --> 01:00:34,340 Sekarang mari kita mulakan untuk menyelesaikan satu lagi masalah dengan cara yang 1475 01:00:34,340 --> 01:00:37,140 membolehkan kita untuk menulis kod yang lebih canggih. 1476 01:00:37,140 --> 01:00:39,960 >> Jadi di sini adalah satu program yang mudah kecil yang tujuan dalam kehidupan 1477 01:00:39,960 --> 01:00:41,870 adalah untuk kenaikan nilai. 1478 01:00:41,870 --> 01:00:43,100 Dan sebenarnya, mari kita mengambil langkah ke belakang. 1479 01:00:43,100 --> 01:00:44,400 Biarkan saya melakukan ini secara manual. 1480 01:00:44,400 --> 01:00:52,200 Biar saya buat termasuk dan int utama (tidak sah). 1481 01:00:52,200 --> 01:00:53,450 Dan biarlah saya memanggil increment.c ini. 1482 01:00:57,150 --> 01:00:58,570 Dan apa yang saya mahu lakukan? 1483 01:00:58,570 --> 01:01:02,240 Saya akan pergi ke hadapan dan mengatakan sesuatu seperti - 1484 01:01:02,240 --> 01:01:04,280 kita akan memanggil nombor yang sama - 1485 01:01:04,280 --> 01:01:04,980 x int. 1486 01:01:04,980 --> 01:01:13,670 Jadi x int mendapat 2; x printf adalah% d, barisan baru, x. 1487 01:01:13,670 --> 01:01:16,780 Jadi saya menaip pantas, tetapi jenis barangan biasa sekarang. 1488 01:01:16,780 --> 01:01:18,830 Kemudian saya akan lakukan x + +. 1489 01:01:18,830 --> 01:01:21,710 Kemudian saya akan mencetak bahawa hukuman yang sama sekali lagi. 1490 01:01:21,710 --> 01:01:24,550 Dan kemudian saya akan kembali 0 hanya untuk berhenti program. 1491 01:01:24,550 --> 01:01:25,960 Baiklah, jadi ini adalah satu program yang 1492 01:01:25,960 --> 01:01:26,960 kenaikan nombor. 1493 01:01:26,960 --> 01:01:29,830 Ia pertama akan memulakan sesuatu kepada 2, dan kemudian ia 1494 01:01:29,830 --> 01:01:33,470 akan kenaikan dan mencetak semula. 1495 01:01:33,470 --> 01:01:36,930 >> Jadi mari menjalankan kenaikan, program yang amat mudah. 1496 01:01:36,930 --> 01:01:40,940 Tetapi katakan sekarang bahawa saya ingin kiub nilai, begitu juga dengan 1497 01:01:40,940 --> 01:01:42,490 sesuatu yang agak sewenang-wenangnya. 1498 01:01:42,490 --> 01:01:45,140 Dan saya benar-benar mahu untuk melakukan x mendapat kiub. 1499 01:01:45,140 --> 01:01:47,570 Jadi saya boleh menggunakan apa yang dipanggil fungsi pow, tetapi saya tidak 1500 01:01:47,570 --> 01:01:48,650 benar-benar tahu di mana yang belum. 1501 01:01:48,650 --> 01:01:50,580 Jadi, saya akan melakukan ini dengan cara lama. 1502 01:01:50,580 --> 01:01:54,550 x kali ini sama dengan x masa x masa x. 1503 01:01:54,550 --> 01:01:56,880 Jadi saya cubing nilai, mendarabkan ia dengan sendirinya lagi 1504 01:01:56,880 --> 01:02:00,440 dan lagi dan lagi, supaya kita mendapat kuasa 1505 01:02:00,440 --> 01:02:02,050 3 dalam kes ini. 1506 01:02:02,050 --> 01:02:06,000 Jadi sekarang nombor yang saya perlu mencetak perlu, seperti yang kita akan lihat 1507 01:02:06,000 --> 01:02:08,450 di sini - membuat kenaikan, jadi ia sebenarnya tidak benar-benar kenaikan 1508 01:02:08,450 --> 01:02:10,260 lagi, tetapi kita akan meninggalkan nama sahaja - 1509 01:02:10,260 --> 01:02:11,590 2 dan kemudian 8. 1510 01:02:11,590 --> 01:02:17,670 Sekarang, kita mempunyai permulaan peluang untuk penghalusan 1511 01:02:17,670 --> 01:02:21,570 di sini, di mana perkara ini cubing mendarabkan nombor 1512 01:02:21,570 --> 01:02:24,680 dengan sendirinya dengan sendirinya dengan sendirinya berasa seperti ini hanya mungkin 1513 01:02:24,680 --> 01:02:27,920 berguna untuk mempunyai sebagai fungsi, sama seperti seseorang memutuskan 1514 01:02:27,920 --> 01:02:30,430 tahun lalu - anda tahu, jenis berguna jika salah seorang daripada kita duduk 1515 01:02:30,430 --> 01:02:33,120 dan menulis printf supaya seluruh dunia boleh menggunakan ia, 1516 01:02:33,120 --> 01:02:36,160 mengapa tidak kita duduk dan menulis fungsi yang dipanggil kiub 1517 01:02:36,160 --> 01:02:39,250 yang tidak cubing ini untuk kita supaya kita tidak perlu manual 1518 01:02:39,250 --> 01:02:41,500 melaksanakan tanggapan cubing nilai di sini? 1519 01:02:41,500 --> 01:02:44,040 >> Jadi contoh yang mudah, tetapi mari kita pergi ke hadapan dan menggunakan ini sebagai 1520 01:02:44,040 --> 01:02:46,280 peluang untuk menulis fungsi kita sendiri. 1521 01:02:46,280 --> 01:02:49,110 Jadi setakat ini, kita telah hanya digunakan utama, dan kita telah menggunakan lain 1522 01:02:49,110 --> 01:02:51,780 fungsi rakyat, tetapi kita telah tidak ditulis kita sendiri. 1523 01:02:51,780 --> 01:02:52,650 Jadi di sini kita pergi. 1524 01:02:52,650 --> 01:02:56,330 Saya akan pergi ke hadapan dan menulis fungsi yang dipanggil kiub. 1525 01:02:56,330 --> 01:02:58,490 Dan saya akan mempunyai ia mengambil input. 1526 01:02:58,490 --> 01:03:02,070 Jadi input akan menjadi integer. 1527 01:03:02,070 --> 01:03:03,570 Dan apa yang ia akan lakukan? 1528 01:03:03,570 --> 01:03:08,500 Ia akan mengisytiharkan output int = input kali input 1529 01:03:08,500 --> 01:03:09,880 input kali. 1530 01:03:09,880 --> 01:03:12,190 Dan kemudian ia akan kembali output yang. 1531 01:03:12,190 --> 01:03:14,500 Dan kemudian saya mempunyai khusus sekarang. 1532 01:03:14,500 --> 01:03:16,820 Fungsi ini akan kembali int. 1533 01:03:16,820 --> 01:03:19,130 Jadi di sini maka adalah bagaimana anda akan menulis fungsi-fungsi anda sendiri. 1534 01:03:19,130 --> 01:03:20,850 Anda terlebih dahulu memutuskan apa nama anda 1535 01:03:20,850 --> 01:03:21,720 fungsi akan menjadi. 1536 01:03:21,720 --> 01:03:23,964 Dan secara amnya, sesuatu penjelasan adalah baik, jadi saya akan 1537 01:03:23,964 --> 01:03:25,060 memanggilnya kiub. 1538 01:03:25,060 --> 01:03:27,180 Kemudian anda perlu untuk menentukan apa yang ia akan kembali, apa yang 1539 01:03:27,180 --> 01:03:28,240 output akan menjadi. 1540 01:03:28,240 --> 01:03:29,595 Dan kita tidak mempunyai pilihan yang banyak lagi. 1541 01:03:29,595 --> 01:03:32,260 Int, char, float, bool, tali. 1542 01:03:32,260 --> 01:03:34,260 Buat masa sekarang, saya akan melekat dengan int, kerana saya mahu ia 1543 01:03:34,260 --> 01:03:35,880 untuk kembali integer. 1544 01:03:35,880 --> 01:03:38,770 Kemudian anda perlu untuk menentukan apa input, jika ada, adalah. 1545 01:03:38,770 --> 01:03:41,570 Dan jika kiub mengambil hujah, mengambil sesuatu di antara 1546 01:03:41,570 --> 01:03:44,970 kurungan, anda perlu untuk memberi hujah bahawa nama supaya 1547 01:03:44,970 --> 01:03:47,860 anda boleh memanggil ia sesuatu yang anda melaksanakan atau menulis 1548 01:03:47,860 --> 01:03:50,550 fungsi ini, dan anda perlu memberi ia jenis, yang dalam hal ini 1549 01:03:50,550 --> 01:03:51,810 kes ini akan menjadi int. 1550 01:03:51,810 --> 01:03:54,690 Jadi dalam jangka pendek, kiub adalah fungsi yang mengambil integer 1551 01:03:54,690 --> 01:03:57,560 sebagai input dan pulangan integer sebagai output. 1552 01:03:57,560 --> 01:03:59,240 >> Jadi apa yang ia lakukan dengan input itu? 1553 01:03:59,240 --> 01:04:03,710 Nah, di baris 14, Saya mengaku output berubah-ubah yang dipanggil, dan saya 1554 01:04:03,710 --> 01:04:07,410 sediakan nilai, kali input input input kali. 1555 01:04:07,410 --> 01:04:11,490 Dan kemudian saya kembali output. 1556 01:04:11,490 --> 01:04:14,890 Jadi bagaimana saya boleh menggunakan ini kemudian? 1557 01:04:14,890 --> 01:04:19,210 Apa yang saya menukar watak-watak yang ditonjolkan secara on-line 1558 01:04:19,210 --> 01:04:21,006 7 akan, adakah anda fikir? 1559 01:04:21,006 --> 01:04:21,800 PENONTON: [didengar]. 1560 01:04:21,800 --> 01:04:25,570 DAVID J. MALAN: Ya, jadi kiub x. 1561 01:04:25,570 --> 01:04:28,290 Jadi x adalah pembolehubah, yang bermakna ia memegang beberapa nilai. 1562 01:04:28,290 --> 01:04:30,190 Mujurlah, ia adalah integer jenis. 1563 01:04:30,190 --> 01:04:34,280 Dan kerana x int, yang bermakna saya boleh lulus ke dalam kiub. 1564 01:04:34,280 --> 01:04:39,500 Dan walaupun saya yang mengatasi nilai x dengan nilai 1565 01:04:39,500 --> 01:04:42,780 x kiub, seperti yang telah kes itu setakat ini, bila-bila masa anda 1566 01:04:42,780 --> 01:04:46,150 mempunyai tanda yang sama dan baris kod, barangan di sebelah kanan 1567 01:04:46,150 --> 01:04:49,090 mendapat dilaksanakan dan kemudian mendapat diberikan kepada 1568 01:04:49,090 --> 01:04:50,150 nilai di sebelah kiri. 1569 01:04:50,150 --> 01:04:52,950 Jadi perintah operasi adalah seperti yang kita akan berharap. 1570 01:04:52,950 --> 01:04:56,620 Jadi adakah ini kerja? 1571 01:04:56,620 --> 01:04:58,410 Baiklah, biar saya pergi ke sini. 1572 01:04:58,410 --> 01:04:59,970 Izinkan saya membuka tetingkap terminal saya. 1573 01:04:59,970 --> 01:05:03,610 Izinkan saya membuat kenaikan, Masukkan. 1574 01:05:03,610 --> 01:05:07,140 "Perisytiharan Tersirat fungsi 'kiub' adalah tidak sah di 1575 01:05:07,140 --> 01:05:13,700 C99. "Sebagai mengetepikan, C99 merujuk kepada bahasa C kerana ia 1576 01:05:13,700 --> 01:05:16,790 ditakrifkan pada tahun 1999, yang kini lebih versi dari 1577 01:05:16,790 --> 01:05:19,360 1989, yang merupakan update sejak asal. 1578 01:05:19,360 --> 01:05:21,740 Jadi itulah semua yang cara. 1579 01:05:21,740 --> 01:05:24,250 >> Jadi, apakah ia bermakna bahawa "akuan tersirat 1580 01:05:24,250 --> 01:05:26,790 fungsi 'kiub' adalah tidak sah? "Ia adalah di sini. 1581 01:05:26,790 --> 01:05:28,430 Ia adalah di sana dalam 12 baris. 1582 01:05:28,430 --> 01:05:30,460 PENONTON: [didengar]. 1583 01:05:30,460 --> 01:05:30,730 DAVID J. MALAN: Apa itu? 1584 01:05:30,730 --> 01:05:32,470 PENONTON: Ia tidak sebelum ini. 1585 01:05:32,470 --> 01:05:33,540 DAVID J. MALAN: Ia tidak sebelum ini. 1586 01:05:33,540 --> 01:05:34,740 Jadi ini adalah perkara itu. 1587 01:05:34,740 --> 01:05:38,190 C adalah jenis bodoh, atau penyusun C adalah jenis bodoh. 1588 01:05:38,190 --> 01:05:41,060 Mereka benar-benar hanya melakukan apa yang anda beritahu mereka lakukan. 1589 01:05:41,060 --> 01:05:44,770 Dan mereka, khususnya, hanya membaca kod anda atas ke bawah, 1590 01:05:44,770 --> 01:05:45,620 kiri ke kanan. 1591 01:05:45,620 --> 01:05:49,140 Jadi jika pengumpul, dilafaz, membaca kod anda, baris 1, 1592 01:05:49,140 --> 01:05:50,120 angka bagaimana untuk melakukan ini. 1593 01:05:50,120 --> 01:05:50,940 Oh, di sini datang utama. 1594 01:05:50,940 --> 01:05:53,000 Baiklah, izinkan saya pergi ke hadapan dan mengisytiharkan pembolehubah x. 1595 01:05:53,000 --> 01:05:54,160 Izinkan saya mencetak sesuatu. 1596 01:05:54,160 --> 01:05:55,890 Line 7, apa yang palang pintu adalah kiub? 1597 01:05:55,890 --> 01:05:58,230 Ia tidak diisytiharkan di stdio.h. 1598 01:05:58,230 --> 01:06:00,950 Ia tidak datang dengan C. Saya tidak tahu apa yang perlu dilakukan. 1599 01:06:00,950 --> 01:06:03,960 Dan sebagainya dilafaz hanya konyol dan berhenti dengan mesej ralat yang. 1600 01:06:03,960 --> 01:06:05,850 Jadi, kita boleh menetapkan ini dalam beberapa cara. 1601 01:06:05,850 --> 01:06:10,530 Kita boleh mengajar dilafaz apa kiub adalah dengan hanya bergerak di mana 1602 01:06:10,530 --> 01:06:11,820 pengisytiharan. 1603 01:06:11,820 --> 01:06:14,640 Jadi saya dipotong dan ditampal atas utama. 1604 01:06:14,640 --> 01:06:17,770 Kini sedar bahawa hanya kerana utama ialah tiada lagi pertama, ia 1605 01:06:17,770 --> 01:06:19,150 masih disempurnakan oleh lalai. 1606 01:06:19,150 --> 01:06:20,060 Main utama. 1607 01:06:20,060 --> 01:06:21,022 Ia adalah fungsi nama lalai. 1608 01:06:21,022 --> 01:06:22,930 Ia tidak kira di mana ia adalah dalam fail. 1609 01:06:22,930 --> 01:06:26,910 Tetapi sekurang-kurangnya sekarang dilafaz telah melihat kiub sebelum saya menggunakan ia. 1610 01:06:26,910 --> 01:06:28,500 Jadi mari kita lihat jika dilafaz adalah bahagia sekarang. 1611 01:06:28,500 --> 01:06:31,410 Buat kenaikan, ia tidak menyusun masa ini. 1612 01:06:31,410 --> 01:06:33,060 >> Izinkan saya menjalankan kenaikan. 1613 01:06:33,060 --> 01:06:34,810 Dan demi sesungguhnya, ia seolah-olah bekerja. 1614 01:06:34,810 --> 01:06:36,810 Kini, anda boleh tampil dengan senario akhirnya di mana 1615 01:06:36,810 --> 01:06:38,650 ia tidak sesuai untuk meletakkan setiap fungsi 1616 01:06:38,650 --> 01:06:39,740 atas setiap fungsi lain. 1617 01:06:39,740 --> 01:06:42,140 Anda akan mendapat terperangkap dalam gelung ini terbatas dalam realiti, 1618 01:06:42,140 --> 01:06:43,480 di mana lelaki ini mahu berada di sini tetapi ini 1619 01:06:43,480 --> 01:06:44,390 lelaki perlu berada di sana. 1620 01:06:44,390 --> 01:06:45,830 Supaya tidak sentiasa bekerja. 1621 01:06:45,830 --> 01:06:49,020 Jadi bersyukur, C mempunyai satu penyelesaian yang lebih elegan. 1622 01:06:49,020 --> 01:06:50,790 Saya akan meletakkan kembali ini di mana ia adalah, hanya kerana saya 1623 01:06:50,790 --> 01:06:53,390 suka, sebagai satu perkara prinsip, bahawa utama sentiasa menjadi 1624 01:06:53,390 --> 01:06:55,550 di atas, kerana ia hanya baik untuk melihat apa yang program ini 1625 01:06:55,550 --> 01:06:56,920 tidak secara lalai. 1626 01:06:56,920 --> 01:06:58,950 Dan apa yang saya akan lakukan di sini mengisytiharkan apa yang dipanggil 1627 01:06:58,950 --> 01:07:00,250 prototaip. 1628 01:07:00,250 --> 01:07:05,730 Saya akan mengisytiharkan semula fungsi kiub saya oleh literal 1629 01:07:05,730 --> 01:07:07,180 menyalin dan menampal. 1630 01:07:07,180 --> 01:07:08,290 Sebenarnya, itu bukan betul-betul. 1631 01:07:08,290 --> 01:07:13,060 Jadi benar-benar menyalin dan menampal line 15 1632 01:07:13,060 --> 01:07:15,160 sehingga melebihi 6 baris. 1633 01:07:15,160 --> 01:07:17,010 Ia tidak kira apa garis ini berakhir pada. 1634 01:07:17,010 --> 01:07:18,380 Ia berlaku pada 4 baris. 1635 01:07:18,380 --> 01:07:19,950 Tetapi ia tidak perlu menjadi sebelum utama. 1636 01:07:19,950 --> 01:07:21,150 Tetapi notis perbezaan. 1637 01:07:21,150 --> 01:07:24,100 Line 4 berakhir dengan semicolon, yang bermaksud hey, 1638 01:07:24,100 --> 01:07:27,510 Dilafaz, mengambil kata-kata saya untuk itu bahawa wujud fungsi 1639 01:07:27,510 --> 01:07:31,350 dipanggil kiub yang mengambil int dan kembali int. 1640 01:07:31,350 --> 01:07:33,020 Namun, saya tidak akan memberitahu anda apa yang ia belum. 1641 01:07:33,020 --> 01:07:35,180 Hanya tahu bahawa saya berjanji untuk memberitahu anda akhirnya. 1642 01:07:35,180 --> 01:07:38,490 Dan sesungguhnya, kini ia okay bahawa ini adalah ke bawah. 1643 01:07:38,490 --> 01:07:41,275 >> Jadi ini adalah umumnya lebih baik, kerana kemudian di bahagian atas 1644 01:07:41,275 --> 01:07:44,240 fail anda, anda hanya boleh gemeretuk luar, cepat-api, satu baris 1645 01:07:44,240 --> 01:07:46,470 setiap apa nama fungsi anda, apa yang mereka 1646 01:07:46,470 --> 01:07:49,120 input, apa output mereka. 1647 01:07:49,120 --> 01:07:52,210 Dan untuk menjadi lebih jelas, input secara amnya bermaksud hujah atau 1648 01:07:52,210 --> 01:07:54,110 parameter, sinonim. 1649 01:07:54,110 --> 01:07:56,890 Output ertinya nilai pulangan, apakah ia 1650 01:07:56,890 --> 01:07:58,700 tangan kembali kepada saya. 1651 01:07:58,700 --> 01:08:03,420 Jadi dalam kes ini di sini, kiub telah diisytiharkan di atas, tetapi 1652 01:08:03,420 --> 01:08:06,940 ditakrifkan, atau dikenali sebagai dilaksanakan, di bawah. 1653 01:08:06,940 --> 01:08:09,620 Jadi sekarang mari kita kembali di sini dan jalankan semula ini. 1654 01:08:09,620 --> 01:08:13,430 Jadi sekarang mari saya pergi ke hadapan dan jalankan semula membuat, jalankan semula kenaikan. 1655 01:08:13,430 --> 01:08:16,500 Dan ia kini seolah-olah bekerja baik-baik saja. 1656 01:08:16,500 --> 01:08:19,450 Jadi sekarang kita boleh pergi ke hadapan dan faktor keluar sesuatu seperti 1657 01:08:19,450 --> 01:08:23,720 contoh bir ke dalam versi ini keempat. 1658 01:08:23,720 --> 01:08:25,590 Jadi biarlah saya skrol ke bawah sini. 1659 01:08:25,590 --> 01:08:28,149 Dan notis bahawa saya jenis mengambil pelajaran ini kepada jantung tadi. 1660 01:08:28,149 --> 01:08:31,140 Hakikat bahawa saya telah menyanyi bait yang sama sekali lagi dan 1661 01:08:31,140 --> 01:08:34,130 lagi dan lagi, barisan korus sama dalam lagu, merasakan 1662 01:08:34,130 --> 01:08:36,439 seperti mengapa tidak saya faktor yang keluar ke fungsi? 1663 01:08:36,439 --> 01:08:38,470 Dan sesungguhnya, ini harus menjadi salah satu motivasi. 1664 01:08:38,470 --> 01:08:40,960 Selain hakikat bahawa orang lain di dunia mungkin mahu 1665 01:08:40,960 --> 01:08:42,390 untuk menggunakan fungsi kiub - 1666 01:08:42,390 --> 01:08:44,560 itulah alasan yang baik untuk faktor sesuatu yang keluar dan menulis anda 1667 01:08:44,560 --> 01:08:45,720 fungsi adat sendiri - 1668 01:08:45,720 --> 01:08:48,720 jika ada sebahagian kod di dalam program yang hanya membuat anda 1669 01:08:48,720 --> 01:08:51,370 rasa konsep, yang anda jenis mahu untuk memberikan 1670 01:08:51,370 --> 01:08:53,740 nama - seperti dalam kes ini korus, - 1671 01:08:53,740 --> 01:08:57,380 maka anda sama boleh menulis bahawa sebagai fungsi yang berasingan. 1672 01:08:57,380 --> 01:08:59,560 Anda tidak perlu untuk menulis segala-galanya dalam utama jika ia hanya 1673 01:08:59,560 --> 01:09:02,609 berasa bersih untuk memisahkan ia keluar dan memberikan nama. 1674 01:09:02,609 --> 01:09:05,529 >> Jadi dalam kes ini di sini, notis bahawa saya mempunyai komen di atas 1675 01:09:05,529 --> 01:09:06,859 fungsi ini yang hanya menyanyi tentang 1676 01:09:06,859 --> 01:09:08,630 dinyatakan nombor botol. 1677 01:09:08,630 --> 01:09:10,609 Notis di sini bahawa saya tidak perlu untuk memanggil ini 1678 01:09:10,609 --> 01:09:12,520 perkara input dan output. 1679 01:09:12,520 --> 01:09:16,090 Malah, masa ini saya hanya dipanggil b input saya untuk botol. 1680 01:09:16,090 --> 01:09:19,960 Dan notis di sini, tidak sah menunjukkan apa? 1681 01:09:19,960 --> 01:09:21,309 Korus bahawa - 1682 01:09:21,309 --> 01:09:22,660 PENONTON: Tidak akan kembali. 1683 01:09:22,660 --> 01:09:23,870 DAVID J. MALAN: Tidak akan kembali nilai. 1684 01:09:23,870 --> 01:09:26,800 Dan sesungguhnya, fungsi tidak perlu untuk kembali nilai. 1685 01:09:26,800 --> 01:09:28,060 Mereka hanya boleh berbuat sesuatu. 1686 01:09:28,060 --> 01:09:30,270 Mereka boleh mempunyai apa yang dipanggil kesan sampingan, yang dalam hal ini 1687 01:09:30,270 --> 01:09:33,109 kes hanya sekumpulan keseluruhan percetakan pada skrin. 1688 01:09:33,109 --> 01:09:36,580 Maka notis bahawa kod ini di sini, saya benar-benar hanya mencuri dari 1689 01:09:36,580 --> 01:09:37,680 contoh sebelumnya. 1690 01:09:37,680 --> 01:09:39,930 Satu-satunya perbezaan adalah bukannya menggunakan i sebagai saya 1691 01:09:39,930 --> 01:09:42,890 berubah-ubah, saya kini menggunakan b sebagai pembolehubah saya. 1692 01:09:42,890 --> 01:09:45,880 Jadi saya mempunyai b turun di sini, saya mempunyai b turun di sini, saya mempunyai b 1693 01:09:45,880 --> 01:09:47,109 tolak 1 turun di sini. 1694 01:09:47,109 --> 01:09:49,279 Tetapi kod adalah sama. 1695 01:09:49,279 --> 01:09:52,529 Tetapi hanya untuk menunjukkan kepada anda sekarang bagaimana kita boleh menggunakan ini, izinkan saya pergi 1696 01:09:52,529 --> 01:09:56,780 hadapan dan sebenarnya mengubah ini untuk menjadi untuk gelung. 1697 01:09:56,780 --> 01:10:03,850 (int i = n; i> n; i -). 1698 01:10:03,850 --> 01:10:06,230 >> Jadi saya telah dicuri bahawa daripada contoh sebelumnya kami. 1699 01:10:06,230 --> 01:10:08,970 Sebelum ini, ia adalah dalam 37 baris yang saya akan mula 1700 01:10:08,970 --> 01:10:10,640 menyanyi lagu ini menjengkelkan. 1701 01:10:10,640 --> 01:10:15,810 Tetapi sebaliknya, saya hanya akan kini memanggil korus i. 1702 01:10:15,810 --> 01:10:16,870 Selesai. 1703 01:10:16,870 --> 01:10:20,260 Jadi sekarang dalam setiap lelaran gelung ini, saya panggil ini lain 1704 01:10:20,260 --> 01:10:22,220 fungsi, korus, bahawa saya berlaku untuk menulis. 1705 01:10:22,220 --> 01:10:24,110 Ia tidak ditulis oleh orang lain tahun lalu. 1706 01:10:24,110 --> 01:10:27,930 Tetapi korus, Sementara itu, menggunakan printf untuk mencetak 1707 01:10:27,930 --> 01:10:29,840 keluar empat baris. 1708 01:10:29,840 --> 01:10:32,720 Tetapi hakikat bahawa saya memanggil korus sekali lagi dan sekali lagi dalam 1709 01:10:32,720 --> 01:10:35,900 gelung bermakna bahawa saya akan mendapatkan, pada akhir hayatnya, 1710 01:10:35,900 --> 01:10:39,310 lagu yang sama yang tepat kerana saya mempunyai setakat ini. 1711 01:10:39,310 --> 01:10:42,130 Jadi dalam jangka pendek, kini jika saya melihat kembali pada kod saya, walaupun 1712 01:10:42,130 --> 01:10:44,240 fungsi ini adalah bersamaan, notis bahawa ia adalah 1713 01:10:44,240 --> 01:10:46,020 bermula untuk mendapatkan lebih banyak dibaca. 1714 01:10:46,020 --> 01:10:48,410 Saya tidak tahu bagaimana GetInt 1715 01:10:48,410 --> 01:10:49,250 dilaksanakan. 1716 01:10:49,250 --> 01:10:52,050 Terus terang, saya tidak tahu bagaimana korus dilaksanakan. 1717 01:10:52,050 --> 01:10:52,970 Tetapi ia tidak perkara itu kepada saya. 1718 01:10:52,970 --> 01:10:55,620 Saya tidak peduli, kerana sekarang saya boleh menyusun, sebagai manusia, membaca 1719 01:10:55,620 --> 01:10:57,050 bawah ini dari atas ke. 1720 01:10:57,050 --> 01:10:59,950 Dan kerana fungsi dinamakan mengikut apa yang mereka 1721 01:10:59,950 --> 01:11:02,910 lakukan, kod saya adalah semakin dibaca. 1722 01:11:02,910 --> 01:11:05,190 Dan sebagai program kami mendapat lebih kompleks - 1723 01:11:05,190 --> 01:11:07,220 menjelang akhir semester, anda akan menulis beratus-ratus baris 1724 01:11:07,220 --> 01:11:10,970 kod dalam bahasa seperti PHP dan JavaScript dan sebagainya - 1725 01:11:10,970 --> 01:11:13,550 anda akan mendapati bahawa ia adalah begitu banyak lebih mudah daripada untuk menjejaki 1726 01:11:13,550 --> 01:11:14,080 apa yang anda telah lakukan. 1727 01:11:14,080 --> 01:11:15,810 Dan apabila anda mula bekerjasama dengan rakan-rakan atau 1728 01:11:15,810 --> 01:11:19,010 rakan-rakan atau rakan sekerja, anda akan dapat untuk menulis lebih 1729 01:11:19,010 --> 01:11:22,910 program besar-besaran dengan bermula untuk menjalankan ini asas 1730 01:11:22,910 --> 01:11:23,990 blok bangunan. 1731 01:11:23,990 --> 01:11:25,550 >> Maka dengan itu berkata, mengapa kita tidak memanggil ia sehari? 1732 01:11:25,550 --> 01:11:27,190 Dan kita akan melihat anda pada Rabu. 1733 01:11:27,190 --> 01:11:33,611 [Tepukan]