1 00:00:00,000 --> 00:00:02,880 >> [Bermain muzik] 2 00:00:02,880 --> 00:00:10,580 3 00:00:10,580 --> 00:00:13,500 >> SPEAKER 1: Ini adalah CS50 dan ini adalah permulaan dalam seminggu dua. 4 00:00:13,500 --> 00:00:18,400 Jadi, mari kita menyelam terus ke dalam sesuatu iaitu kereta, jadi untuk bercakap. 5 00:00:18,400 --> 00:00:24,015 Jadi, di sini adalah CS50 IDE dan saya telah ditarik ke atas terlebih dahulu ini screen-- sialan 6 00:00:24,015 --> 00:00:25,070 ia. 7 00:00:25,070 --> 00:00:25,760 Spoiler berjaga-jaga. 8 00:00:25,760 --> 00:00:26,260 Baiklah. 9 00:00:26,260 --> 00:00:29,060 Saya telah ditarik ke atas skrin ini di sini, yang mempunyai program yang sangat mudah. 10 00:00:29,060 --> 00:00:32,659 Jika kita tatal ke bawah, yang paling ini hanya Komen, 11 00:00:32,659 --> 00:00:36,730 tetapi di sini dalam barisan 13 hingga 17 kita ada program. 12 00:00:36,730 --> 00:00:40,580 >> Ia sintaksis sah, yang bermaksud jika Saya menyusun, ia akan menyusun dan menjalankan, 13 00:00:40,580 --> 00:00:41,920 tetapi ia adalah kereta. 14 00:00:41,920 --> 00:00:47,330 Program ini mendakwa dalam komen sehingga atas bahawa ia harus mencetak 10 bintang, 15 00:00:47,330 --> 00:00:48,870 tetapi ia tidak. 16 00:00:48,870 --> 00:00:53,290 Dan berdasarkan pengalaman anda, atau tidak lama lagi untuk menjadi pengalaman dengan C, 17 00:00:53,290 --> 00:00:56,820 boleh anda secara logik membezakan mengapa ini, sebenarnya, buggy? 18 00:00:56,820 --> 00:00:57,804 Ya? 19 00:00:57,804 --> 00:00:59,220 PENONTON: Ia pergi dari sifar hingga 10. 20 00:00:59,220 --> 00:01:01,884 Itulah 11 lelaran. 21 00:01:01,884 --> 00:01:02,550 SPEAKER 1: Ya. 22 00:01:02,550 --> 00:01:06,030 Jadi, ia akan dari sifar sehingga melalui dan sama dengan 10, 23 00:01:06,030 --> 00:01:08,140 yang sudah tentu adalah 11 lelaran. 24 00:01:08,140 --> 00:01:10,020 Jadi, ia akan cetak, sesungguhnya, 11 bintang. 25 00:01:10,020 --> 00:01:13,040 Jadi, konvensyen sains komputer dalam kebanyakan bahasa pengaturcaraan 26 00:01:13,040 --> 00:01:15,270 adalah, sememangnya, hanya untuk mula mengira pada sifar, 27 00:01:15,270 --> 00:01:18,800 tetapi mengira sehingga tetapi tidak melalui nilai yang anda benar-benar mengambil berat tentang. 28 00:01:18,800 --> 00:01:21,216 >> Sekarang, ini adalah satu perkara yang mengambil sedikit yang membiasakan diri 29 00:01:21,216 --> 00:01:25,350 dan juga Awal, direka kerana ia adalah untuk pengaturcara bukan atau komputer tidak 30 00:01:25,350 --> 00:01:28,070 saintis dan untuk kanak-kanak sebahagian besarnya, direka untuk mempunyai 31 00:01:28,070 --> 00:01:29,570 anda mula mengira umumnya pada satu. 32 00:01:29,570 --> 00:01:30,277 Dan itulah denda. 33 00:01:30,277 --> 00:01:33,110 Anda benar-benar boleh mula mengira pada satu-satu jika itu lebih selesa. 34 00:01:33,110 --> 00:01:37,210 Dan mengira sehingga dan hingga 10, tetapi anda akan sedar terutamanya pada minggu ini 35 00:01:37,210 --> 00:01:39,950 dan lebih dari itu hanya begitu banyak perkara dalam pengaturcaraan 36 00:01:39,950 --> 00:01:42,465 menganggap bahawa 0 adalah yang pertama angka yang anda mengira, 37 00:01:42,465 --> 00:01:45,590 yang anda akan mendapati lebih mudah hanya untuk mendapatkan ke dalam tabiat ini permulaan 38 00:01:45,590 --> 00:01:49,490 dari sifar dan mengira sehingga nilai anda hargai sekarang daripada 39 00:01:49,490 --> 00:01:49,990 mendapatkan pergi. 40 00:01:49,990 --> 00:01:50,990 >> Jadi, yang tetap itu. 41 00:01:50,990 --> 00:01:53,670 Kami mengubah kurang daripada atau sama dengan hanya kurang daripada. 42 00:01:53,670 --> 00:01:56,050 Mari kita lihat pada contoh yang kedua di sini. 43 00:01:56,050 --> 00:01:59,585 >> Jadi, program ini juga mendakwa dalam yang Komen sehingga atas bahawa ia harus mencetak 44 00:01:59,585 --> 00:02:02,260 sepuluh bintang, tetapi ia tidak. 45 00:02:02,260 --> 00:02:05,540 Apa yang bug di sini? 46 00:02:05,540 --> 00:02:07,930 >> Jadi, what-- dan maaf, mari kita jelas. 47 00:02:07,930 --> 00:02:08,610 10 bintang. 48 00:02:08,610 --> 00:02:11,644 Satu bagi setiap baris, tetapi ia tidak. 49 00:02:11,644 --> 00:02:14,810 Jadi, sebenarnya, saya pergi ke hadapan dan menyusun yang satu ini kerana ia sedikit kurang 50 00:02:14,810 --> 00:02:16,900 membersihkan berdasarkan perihalan itu. 51 00:02:16,900 --> 00:02:18,720 Biar saya pergi ke dalam direktori sumber kami. 52 00:02:18,720 --> 00:02:25,110 Membuat kereta satu slash dot, satu kereta. 53 00:02:25,110 --> 00:02:28,680 OK, saya melihat 11 bintang, yang masih bermasalah, 54 00:02:28,680 --> 00:02:30,090 tetapi mereka juga semua berada dalam satu baris. 55 00:02:30,090 --> 00:02:31,500 Apakah isu itu di sini? 56 00:02:31,500 --> 00:02:32,339 Yeah. 57 00:02:32,339 --> 00:02:33,255 PENONTON: [didengar]. 58 00:02:33,255 --> 00:02:36,194 59 00:02:36,194 --> 00:02:36,860 SPEAKER 1: Ya. 60 00:02:36,860 --> 00:02:40,210 Jadi ini adalah kehalusan yang anda boleh ingat saya membuat sebutan ringkas. 61 00:02:40,210 --> 00:02:42,793 Walaupun segala-galanya kelihatan cantik, dan ia baik dilekukan, 62 00:02:42,793 --> 00:02:45,850 dan ia jenis kelihatan calar seperti di garis 16 dan 17 adalah, 63 00:02:45,850 --> 00:02:47,600 sesungguhnya, dilekukan di bawah bahawa untuk gelung. 64 00:02:47,600 --> 00:02:48,400 Itu tidak penting. 65 00:02:48,400 --> 00:02:50,460 Komputer tidak tahu atau melihat ruang putih. 66 00:02:50,460 --> 00:02:52,910 Ruang putih adalah hanya untuk kita manusia, segi gaya. 67 00:02:52,910 --> 00:02:57,010 Komputer tidak tahu apabila anda mempunyai pendakap kerinting, yang akan, sesungguhnya, 68 00:02:57,010 --> 00:02:58,280 menyelesaikan masalah ini. 69 00:02:58,280 --> 00:03:02,350 >> Jadi, jika kita benar-benar masuk dan jelas dimasukkan ke dalam ini pendakap kerinting 70 00:03:02,350 --> 00:03:05,220 yang akan menyelesaikan masalah ini dengan menjelaskan kepadamu pengkompil 71 00:03:05,220 --> 00:03:07,930 bahawa saya sebenarnya ingin melaksanakan dua baris kod sekali lagi, 72 00:03:07,930 --> 00:03:09,220 dan sekali lagi, dan lagi. 73 00:03:09,220 --> 00:03:11,680 Tetapi apa yang penjelasan yang asas? 74 00:03:11,680 --> 00:03:12,180 Betul? 75 00:03:12,180 --> 00:03:15,260 Kami tidak tegas perlu kerinting pendakap sepanjang masa, 76 00:03:15,260 --> 00:03:18,210 walaupun ia mungkin yang terbaik amalan untuk masuk ke dalam tabiat itu pula 77 00:03:18,210 --> 00:03:20,878 walaupun ia menambah dua aksara untuk kod anda. mengapa? 78 00:03:20,878 --> 00:03:22,380 >> PENONTON: [didengar]? 79 00:03:22,380 --> 00:03:24,630 SPEAKER 1: Ya jadi itu penyelesaian yang lain sama sekali. 80 00:03:24,630 --> 00:03:25,130 Betul? 81 00:03:25,130 --> 00:03:28,250 Terutamanya jika pada pandangan pertama anda tidak benar-benar menghargai apa yang sedang berlaku. 82 00:03:28,250 --> 00:03:31,070 Nah, pasti kita boleh hanya melakukan dua perkara sekaligus 83 00:03:31,070 --> 00:03:32,710 dan hanya mengelakkan masalah sama sekali. 84 00:03:32,710 --> 00:03:36,080 Dan itulah denda, tetapi kini, untuk tujuan hari ini, apa yang 85 00:03:36,080 --> 00:03:38,200 satu penjelasan pepijat? 86 00:03:38,200 --> 00:03:39,810 Kenapa semua orang-bintang dalam satu baris? 87 00:03:39,810 --> 00:03:40,806 Ya? 88 00:03:40,806 --> 00:03:43,296 >> PENONTON: Nampaknya jika anda mempunyai satu baris kod, 89 00:03:43,296 --> 00:03:46,649 anda boleh melakukannya tanpa mereka. 90 00:03:46,649 --> 00:03:47,440 SPEAKER 1: Tepat sekali. 91 00:03:47,440 --> 00:03:48,750 Ini hanyalah konvensyen manusia. 92 00:03:48,750 --> 00:03:50,750 Orang ramai menyedari bahawa ia adalah satu sedikit menjengkelkan atau membosankan 93 00:03:50,750 --> 00:03:53,470 perlu meletakkan pendakap kerinting semua masa jika semua yang anda mahu lakukan 94 00:03:53,470 --> 00:03:55,090 adalah melaksanakan satu baris kod. 95 00:03:55,090 --> 00:03:57,660 Jadi, manusia telah memilih beberapa masa lalu bahawa itulah denda. 96 00:03:57,660 --> 00:04:01,180 Jika anda ingin meletakkan semua gelung anda kepada hanya garis yang salah seperti ini, 97 00:04:01,180 --> 00:04:04,030 itulah denda dengan single koma bertitik pada akhir. 98 00:04:04,030 --> 00:04:07,210 Tetapi anda hanya boleh melakukan satu itu talian tanpa pendakap kerinting. 99 00:04:07,210 --> 00:04:09,900 >> Jadi, apabila gaya CS50 panduan seperti yang akan menunjukkan anda kepada, 100 00:04:09,900 --> 00:04:11,980 anda akan melihat bahawa umumnya ia adalah tabiat yang baik 101 00:04:11,980 --> 00:04:14,920 untuk masuk ke dalam ini sehingga anda kesesatan agak selesa 102 00:04:14,920 --> 00:04:17,404 dari jenis-jenis konvensyen dan melakukan perkara yang anda sendiri. 103 00:04:17,404 --> 00:04:18,820 Selagi anda sendiri konsisten. 104 00:04:18,820 --> 00:04:21,540 Dan kita akan bercakap lebih lanjut mengenai gaya sedikit lewat hari ini. 105 00:04:21,540 --> 00:04:23,200 >> Jadi, biarlah saya membuka satu program lain. 106 00:04:23,200 --> 00:04:24,930 Sudah tentu, kita perlu menetapkan bahawa 10 juga. 107 00:04:24,930 --> 00:04:32,470 Biar saya pergi ke hadapan dan menulis sebenar program cepat yang saya akan memanggil, 108 00:04:32,470 --> 00:04:38,140 katakan, gelung dot C. Jadi, gelung dot C. Dan dalam gelung dot C saya akan mempunyai, 109 00:04:38,140 --> 00:04:41,970 termasuk saya standard / O dot H int tidak sah utama. 110 00:04:41,970 --> 00:04:44,020 Dan sekarang mari kita lakukan, sesungguhnya, gelung. 111 00:04:44,020 --> 00:04:46,020 Jadi, 4 int Saya mendapat sifar. 112 00:04:46,020 --> 00:04:48,660 Saya adalah kurang daripada, katakan, 50. 113 00:04:48,660 --> 00:04:49,950 Saya plus, plus. 114 00:04:49,950 --> 00:04:53,350 Dan kemudian di sini mari kita teruskan dan jangan mencetak F. 115 00:04:53,350 --> 00:04:56,400 Dan kemudian saya ingin mencetak Saya dan barisan baru, koma bertitik. 116 00:04:56,400 --> 00:05:00,015 >> Dan ini perlu mencetak semua nombor dari sifar sehingga 50? 117 00:05:00,015 --> 00:05:02,900 118 00:05:02,900 --> 00:05:03,680 Seorang ketua beberapa mengangguk. 119 00:05:03,680 --> 00:05:04,270 Beberapa nos. 120 00:05:04,270 --> 00:05:05,339 Apakah pepijat sudah? 121 00:05:05,339 --> 00:05:06,630 Apakah kesilapan yang mudah saya buat? 122 00:05:06,630 --> 00:05:07,170 Yeah. 123 00:05:07,170 --> 00:05:08,544 >> PENONTON: [didengar]. 124 00:05:08,544 --> 00:05:09,210 SPEAKER 1: Ya. 125 00:05:09,210 --> 00:05:11,520 Jadi, walaupun ia kelihatan seperti ini adalah apa yang saya berniat, 126 00:05:11,520 --> 00:05:13,920 ingat bahawa saya juga hanya satu watak ASCII. 127 00:05:13,920 --> 00:05:14,955 >> Jadi, jika saya katakan, print "I." 128 00:05:14,955 --> 00:05:16,670 Ia benar-benar akan untuk mencetak I. Jadi, jika saya 129 00:05:16,670 --> 00:05:20,030 mahu plug-in pemegang tempat yang nilai saya benar-benar perlu untuk melakukan ini 130 00:05:20,030 --> 00:05:22,630 dan kemudian palam-dalam Nilai I dinamik. 131 00:05:22,630 --> 00:05:25,200 Jika tidak saya hanya akan mendapat 50 I pada skrin. 132 00:05:25,200 --> 00:05:28,140 >> Jadi, biarlah saya pergi ke hadapan dan membuat gelung ini, menjalankan, 133 00:05:28,140 --> 00:05:30,650 dan, sememangnya, kita semua jalan sehingga melalui 49. 134 00:05:30,650 --> 00:05:34,140 Dan jika saya tatal ke masa saya melihat nombor sifar pada permulaan. 135 00:05:34,140 --> 00:05:36,050 >> Nah, bagaimana jika saya jenis skru sehingga? 136 00:05:36,050 --> 00:05:37,800 Bagaimana jika saya melakukan ini? 137 00:05:37,800 --> 00:05:40,120 Hanya kerana saya tidak berfikir. 138 00:05:40,120 --> 00:05:40,970 Apa yang program ini. 139 00:05:40,970 --> 00:05:43,970 Setelah menyusun semula dan berlari, akan melakukan secara logik? 140 00:05:43,970 --> 00:05:44,870 >> PENONTON: Tiada apa-apa. 141 00:05:44,870 --> 00:05:45,661 >> SPEAKER 1: Tiada apa-apa. 142 00:05:45,661 --> 00:05:47,156 Kenapa begitu? 143 00:05:47,156 --> 00:05:49,124 >> PENONTON: Saya direka untuk sifar. 144 00:05:49,124 --> 00:05:51,899 Jadi, keadaan ini palsu. 145 00:05:51,899 --> 00:05:52,940 SPEAKER 1: Ya, betul-betul. 146 00:05:52,940 --> 00:05:55,110 Semua kod adalah betul, sintaksis. 147 00:05:55,110 --> 00:05:57,310 Ini akan menyusun, ini Kod akan berjalan, tetapi ia tidak 148 00:05:57,310 --> 00:06:00,110 akan berbuat apa-apa yang berguna kerana saya memulakan saya kepada sifar. 149 00:06:00,110 --> 00:06:02,240 Kami kemudian memeriksa, adalah saya lebih besar daripada 50? 150 00:06:02,240 --> 00:06:03,810 Jelas sekali, tidak, tidak. 151 00:06:03,810 --> 00:06:05,760 Jadi gelung tidak melaksanakan sama sekali. 152 00:06:05,760 --> 00:06:09,580 >> Bagaimana jika kita melakukan sesuatu sedikit lebih melulu? 153 00:06:09,580 --> 00:06:12,890 Jadi, apa yang jika kita lakukan seperti int Saya mendapat sifar. 154 00:06:12,890 --> 00:06:15,640 Dan sekarang mari saya menggunakan manakala gelung, yang merupakan keadaan lain. 155 00:06:15,640 --> 00:06:21,810 Dan semasa saya katakan, ketika saya adalah lebih besar daripada atau sama dengan sifar, dan kemudian di sini Saya 156 00:06:21,810 --> 00:06:26,070 teruskan dan menyimpan fail, membuat gelung. 157 00:06:26,070 --> 00:06:27,070 Dan saya kira-kira untuk menjalankannya. 158 00:06:27,070 --> 00:06:30,230 Apa yang saya akan melihat ini masa dengan gelung sementara? 159 00:06:30,230 --> 00:06:30,852 Yeah. 160 00:06:30,852 --> 00:06:32,120 >> PENONTON: Satu gelung tak terhingga? 161 00:06:32,120 --> 00:06:35,360 >> SPEAKER 1: gelung tak terhingga? 162 00:06:35,360 --> 00:06:36,662 Ya, dan mengapa? 163 00:06:36,662 --> 00:06:38,120 PENONTON: Kerana ia sentiasa sifar. 164 00:06:38,120 --> 00:06:38,786 SPEAKER 1: Ya. 165 00:06:38,786 --> 00:06:40,100 Jadi, saya adalah dimulakan sebagai sifar. 166 00:06:40,100 --> 00:06:44,470 Sudah tentu saya sentiasa lebih besar daripada atau sama dengan 0 sebagai hasilnya. 167 00:06:44,470 --> 00:06:46,460 Jadi, saya hanya akan melihat ini tak terhingga. 168 00:06:46,460 --> 00:06:49,850 Dan kini, ini telah datang sekali atau dua kali kepada ketua kursus ini. 169 00:06:49,850 --> 00:06:52,417 Apa yang berlaku apabila anda mempunyai gelung tak terhingga? 170 00:06:52,417 --> 00:06:53,314 >> PENONTON: Kawalan C. 171 00:06:53,314 --> 00:06:53,980 SPEAKER 1: Ya. 172 00:06:53,980 --> 00:06:56,250 Jadi Kawalan C akhirnya akan bertindak balas. 173 00:06:56,250 --> 00:06:59,520 Malangnya, kami telah dicetak berjuta-juta dan berjuta-juta sifar sudah 174 00:06:59,520 --> 00:07:01,520 dan sebagainya komputer mempunyai jenis mendapat mendahului saya. 175 00:07:01,520 --> 00:07:03,394 Jadi, ia akan mengabaikan saya untuk sedikit. 176 00:07:03,394 --> 00:07:06,560 Tetapi jika anda hanya tekan Control C beberapa kali pada Mac atau PC papan kekunci anda, 177 00:07:06,560 --> 00:07:08,790 akhirnya ia harus, sesungguhnya, ditamatkan. 178 00:07:08,790 --> 00:07:11,770 Dan jika tidak, kami akan menunjukkan kepada anda beberapa teknik tidak lama di mana anda 179 00:07:11,770 --> 00:07:14,850 sebenarnya boleh membunuh secara paksa program, sama seperti dalam Windows dan Mac OS, 180 00:07:14,850 --> 00:07:15,562 jika perlu. 181 00:07:15,562 --> 00:07:16,770 Tetapi mari kita cuba sesuatu yang lain. 182 00:07:16,770 --> 00:07:19,895 Mari kita sebenarnya kenaikan I. Adakah ini masih akan menjadi tak terhingga? 183 00:07:19,895 --> 00:07:22,870 184 00:07:22,870 --> 00:07:25,140 Biarlah aku berlari ini. 185 00:07:25,140 --> 00:07:27,090 Dan sekarang anda boleh jenis melihat apa yang berlaku. 186 00:07:27,090 --> 00:07:30,140 Ini juga adalah gelung tak terhingga. 187 00:07:30,140 --> 00:07:33,080 Tetapi ini adalah sedikit soalan helah. 188 00:07:33,080 --> 00:07:35,460 Adakah ini akan mencetak nombor selama-lamanya? 189 00:07:35,460 --> 00:07:36,647 >> PENONTON: No. 190 00:07:36,647 --> 00:07:37,230 SPEAKER 1: No. 191 00:07:37,230 --> 00:07:37,620 Mengapa? 192 00:07:37,620 --> 00:07:38,820 Saya mendengar beberapa nos di sini. 193 00:07:38,820 --> 00:07:41,859 Someone-- Yeah. 194 00:07:41,859 --> 00:07:44,275 PENONTON: Anda tidak mempunyai cukup bit untuk benar-benar menyimpan berterusan. 195 00:07:44,275 --> 00:07:44,730 SPEAKER 1: Baiklah. 196 00:07:44,730 --> 00:07:46,000 Jadi, saya tidak mempunyai cukup bit untuk menyimpan berterusan. 197 00:07:46,000 --> 00:07:47,124 Jadi, apa yang akan berlaku? 198 00:07:47,124 --> 00:07:49,320 Ia hanya akan berhenti? 199 00:07:49,320 --> 00:07:52,542 >> PENONTON: Pada satu ketika ia akan menutup the-- 200 00:07:52,542 --> 00:07:54,500 SPEAKER 1: Ia akan ditutup gelung ke bawah, tetapi mengapa? 201 00:07:54,500 --> 00:07:57,950 Apa yang akan berlaku pada sangat akhir sempadannya? 202 00:07:57,950 --> 00:07:58,479 Ya? 203 00:07:58,479 --> 00:08:00,520 PENONTON: Ia akan kitaran kembali ke nombor negatif. 204 00:08:00,520 --> 00:08:02,900 SPEAKER 1: Untuk nombor negatif, atau jika kita hanya merawat positif, 205 00:08:02,900 --> 00:08:03,570 sifar sekurang-kurangnya. 206 00:08:03,570 --> 00:08:04,550 Jadi ya, sama sekali. 207 00:08:04,550 --> 00:08:08,059 Ingat bahawa kita melihat masa lalu bahawa jika anda kenaikan bit anda salah terlalu banyak kali, 208 00:08:08,059 --> 00:08:10,225 dan kami sudah berjaga limpahan kapasiti int anda 209 00:08:10,225 --> 00:08:13,058 atau apa sahaja jenis data adalah, anda berada akan membungkus, mungkin, 210 00:08:13,058 --> 00:08:14,020 dua nombor negatif. 211 00:08:14,020 --> 00:08:16,644 Atau jika anda telah menentukan bahawa anda pelbagai hanya boleh menjadi positif, 212 00:08:16,644 --> 00:08:18,560 yang anda boleh lakukan, tetapi kami telah tidak dilihat itu lagi, 213 00:08:18,560 --> 00:08:21,420 anda mungkin berakhir sekurang-kurangnya kembali pada sifar. 214 00:08:21,420 --> 00:08:22,410 Walaupun, sebenarnya ya. 215 00:08:22,410 --> 00:08:24,320 Dalam kes ini, negatif nombor, di mana 216 00:08:24,320 --> 00:08:26,870 gelung akan menamatkan kerana saya tidak, sebenarnya, 217 00:08:26,870 --> 00:08:29,220 lebih besar daripada atau sama dengan sifar jika ia negatif. 218 00:08:29,220 --> 00:08:31,780 >> Jadi, malangnya, bagaimana lama kita perlu menunggu? 219 00:08:31,780 --> 00:08:35,490 Sekarang kita berada sehingga apa, 2000000-ish? 220 00:08:35,490 --> 00:08:37,705 Kita seperti 2 bilion, kita akan perlu menunggu 221 00:08:37,705 --> 00:08:39,330 sehingga kita benar-benar dapat melihat gejala ini. 222 00:08:39,330 --> 00:08:46,200 Tetapi kita dapat melihat ia sedikit lebih cepat, maybe-- mari kita lihat jika kita boleh mengganggu. 223 00:08:46,200 --> 00:08:46,700 Datang pada. 224 00:08:46,700 --> 00:08:49,500 225 00:08:49,500 --> 00:08:51,331 Walaupun menu yang muncul perlahan-lahan. 226 00:08:51,331 --> 00:08:51,830 Baiklah. 227 00:08:51,830 --> 00:08:54,270 Jadi, kita akan kembali kepada yang lama. 228 00:08:54,270 --> 00:08:56,320 Ia adalah satu yang baik time-- sialan, anak anjing. 229 00:08:56,320 --> 00:08:58,280 >> Ia adalah masa yang baik untuk beberapa pengumuman. 230 00:08:58,280 --> 00:09:01,225 Jadi, jika anda mungkin suka untuk melibatkan diri dalam YHack, 231 00:09:01,225 --> 00:09:03,600 yang acara yang ditaja oleh rakan-rakan kami di Yale. 232 00:09:03,600 --> 00:09:05,990 Dan, sememangnya, beberapa kursus ini TFS di Yale adalah terlibat dengan ini. 233 00:09:05,990 --> 00:09:08,610 YHack merupakan antarabangsa hack-a-thon yang dianjurkan oleh dan diadakan 234 00:09:08,610 --> 00:09:12,395 di Yale, membawa bersama-sama 1500 seperti penggodam yang berfikiran kreatif dan semua 235 00:09:12,395 --> 00:09:13,120 seluruh dunia. 236 00:09:13,120 --> 00:09:14,610 Jika ini adalah kepentingan, lihat di sini. 237 00:09:14,610 --> 00:09:17,401 Jika ini adalah terlalu ringkas pada skrin, mengambil lihat slaid hari ini 238 00:09:17,401 --> 00:09:19,622 untuk URL untuk yhack.org. 239 00:09:19,622 --> 00:09:21,080 Jadi, juga beberapa pengumuman yang cepat. 240 00:09:21,080 --> 00:09:24,410 Jadi, secara rasmi bahagian akan mula minggu depan di sini dan di New Haven. 241 00:09:24,410 --> 00:09:27,660 Perlu diingat anda akan mendapat satu e-mel kemudian hujung minggu ini yang paling mungkin. 242 00:09:27,660 --> 00:09:29,390 Ia mengambil masa yang lama untuk CS50 seksyen, 243 00:09:29,390 --> 00:09:32,080 memandangkan semua orang di kelas dan semua orang bergerak di sekitar. 244 00:09:32,080 --> 00:09:34,871 Dan semua Felo Pengajaran ' jadual juga masih mengukuhkan, 245 00:09:34,871 --> 00:09:38,110 tetapi harap sabar menunggu untuk e-mel dan jika perlu berkenaan, anda boleh semula seksyen di sana selepas. 246 00:09:38,110 --> 00:09:39,580 >> Study.cs50.net. 247 00:09:39,580 --> 00:09:43,280 Jadi, walaupun anda seorang peserta yang berterusan di bahagian, menyedari bahawa hampir semua 248 00:09:43,280 --> 00:09:46,786 daripada sumber-sumber yang kita gunakan dalam bahagian boleh didapati secara umum di CS50 249 00:09:46,786 --> 00:09:48,460 Belajar di URL ini di sini. 250 00:09:48,460 --> 00:09:51,630 Jadi, jika anda pernah suka kepada kajian semula bahan daripada bahagian, atau membaca di hadapan, 251 00:09:51,630 --> 00:09:54,170 atau anda tidak boleh membuat ia beberapa minggu, sedar bahawa slaid sampel, 252 00:09:54,170 --> 00:09:58,210 dan masalah, dan definisi, dan banyak lagi semuanya di sana juga. 253 00:09:58,210 --> 00:10:00,645 >> Waktu pejabat menyambung semula hari ini, dan esok, dan Rabu, 254 00:10:00,645 --> 00:10:03,020 dan Khamis menyemak kursus ini laman web untuk jadual. 255 00:10:03,020 --> 00:10:05,690 >> Dan juga, kini melancarkan hari ini adalah CS50 Bincangkan. 256 00:10:05,690 --> 00:10:09,230 Jadi, jika dan apabila anda mempunyai soalan untuk satu sama lain atau untuk kakitangan kursus ini, 257 00:10:09,230 --> 00:10:12,099 dan biasanya bekerja pada beberapa set masalah, 258 00:10:12,099 --> 00:10:15,015 sedar bahawa anda tidak semestinya perlu kembali kepada manusia depan anda. 259 00:10:15,015 --> 00:10:17,810 Jika tidak ada seorang pun di sana, anda boleh mendekati kami dan rakan-rakan sekelas 260 00:10:17,810 --> 00:10:19,890 dalam talian melalui CS50 Bincangkan. 261 00:10:19,890 --> 00:10:22,600 Jadi, ini adalah perbincangan papan untuk kursus ini, 262 00:10:22,600 --> 00:10:24,550 dan sedar bahawa ini mungkin yang terbaik 263 00:10:24,550 --> 00:10:28,480 tempat untuk bermula apabila anda mempunyai soalan apabila di luar waktu pejabat 264 00:10:28,480 --> 00:10:29,470 khususnya. 265 00:10:29,470 --> 00:10:31,070 >> Makan tengah hari yang akan bermula pada minggu ini juga. 266 00:10:31,070 --> 00:10:33,170 Pada Bomba dan Ais [Didengar] di New Haven. 267 00:10:33,170 --> 00:10:35,379 Sila lihat pada perjalanan ini laman web untuk RSVP. 268 00:10:35,379 --> 00:10:36,753 First come, first serve untuk itu. 269 00:10:36,753 --> 00:10:39,380 Jika anda tidak mendapat dalam minggu ini kami akan melakukan yang ini paling setiap hari Jumaat 270 00:10:39,380 --> 00:10:40,400 sepanjang tempoh itu. 271 00:10:40,400 --> 00:10:41,830 >> OK, dan kini satu perkataan tentang penggredan. 272 00:10:41,830 --> 00:10:44,690 Terutamanya dalam kita masukkan masalah menetapkan satu, yang keluar minggu ini, 273 00:10:44,690 --> 00:10:46,670 dan masalah menetapkan dua dan selepas itu. 274 00:10:46,670 --> 00:10:51,680 Bagaimana kita pergi tentang menilai P set dan menilai kualiti itu? 275 00:10:51,680 --> 00:10:55,560 Jadi, ia adalah empat paksi yang kita gunakan dalam CS50, dan mereka empat sini. 276 00:10:55,560 --> 00:10:59,200 >> Skop, yang menangkap pada angka yang asas betapa banyak P set 277 00:10:59,200 --> 00:10:59,860 adakah anda menangani. 278 00:10:59,860 --> 00:11:02,890 Ia kira-kira sepadan dengan usaha, dan ia adalah cara kami untuk menguasai 279 00:11:02,890 --> 00:11:05,190 adakah anda cuba separuh P ditetapkan, semua P yang ditetapkan. 280 00:11:05,190 --> 00:11:08,860 Ini adalah sesuatu yang mudah untuk mendapatkan yang sempurna skor pada jika anda lakukan, sesungguhnya, 281 00:11:08,860 --> 00:11:11,020 cuba setiap aspek P yang ditetapkan. 282 00:11:11,020 --> 00:11:12,010 Jadi, ingatlah bahawa dalam fikiran. 283 00:11:12,010 --> 00:11:13,420 >> Ketepatan adalah tepat. 284 00:11:13,420 --> 00:11:17,760 Adakah kerja kod anda sebagai spesifikasi dan sebagai sampel penyelesaian staf 285 00:11:17,760 --> 00:11:19,730 mencadangkan bahawa kod anda perlu, sebenarnya, bekerja. 286 00:11:19,730 --> 00:11:23,260 Semak 50, jika anda telah tidak dipenuhi ia lagi, adalah di P menetapkan satu spesifikasi 287 00:11:23,260 --> 00:11:25,060 dan akan secara amnya memberikan anda ya / tidak jawapan 288 00:11:25,060 --> 00:11:26,518 sama ada kod anda adalah betul. 289 00:11:26,518 --> 00:11:30,680 Sekurang-kurangnya setakat yang kita akan untuk menilai ia berdasarkan ujian 290 00:11:30,680 --> 00:11:32,430 yang kita berjalan dalam program itu. 291 00:11:32,430 --> 00:11:33,850 >> Design adalah lebih subjektif. 292 00:11:33,850 --> 00:11:35,994 Ini adalah bagaimana yang ditulis dengan baik adalah kod anda. 293 00:11:35,994 --> 00:11:38,410 Dan ini adalah sesuatu yang anda akan mendapat lebih baik pada masa ke masa, 294 00:11:38,410 --> 00:11:41,201 dan ia adalah sesuatu yang kita akan memberi maklum balas lebih kualitatif pada. 295 00:11:41,201 --> 00:11:43,350 Dan dengan reka bentuk saya mungkin bermakna tidak lama anda 296 00:11:43,350 --> 00:11:47,650 mungkin akan terdorong dalam beberapa P bersedia untuk melakukan sesuatu loopingly, 297 00:11:47,650 --> 00:11:51,590 tetapi mempunyai mungkin tiga, atau empat, atau lima gelung hadapan bersarang atau semasa bersarang 298 00:11:51,590 --> 00:11:52,090 gelung. 299 00:11:52,090 --> 00:11:54,130 Yang biasanya perlu mula untuk membuat anda merasa jijik 300 00:11:54,130 --> 00:11:56,070 dan secara amnya akan menjadi reka bentuk yang tidak dipertimbangkan. 301 00:11:56,070 --> 00:11:59,490 Dan anda akan mula melihat di dalam kelas dan daripada cara kelas yang baik untuk melakukan sesuatu, 302 00:11:59,490 --> 00:12:02,920 cara-cara yang tidak baik dalam melakukan sesuatu yang semua mungkin betul, tetapi tidak 303 00:12:02,920 --> 00:12:04,304 semestinya direka dengan baik. 304 00:12:04,304 --> 00:12:05,220 Seperti menulis esei. 305 00:12:05,220 --> 00:12:08,100 Anda mungkin boleh untuk meletakkan perkataan pada halaman yang tatabahasa yang betul, 306 00:12:08,100 --> 00:12:10,016 tetapi esei atau tesis mereka dalam hanya 307 00:12:10,016 --> 00:12:11,810 benar-benar tidak keruan atau unpersuasive. 308 00:12:11,810 --> 00:12:15,930 Dan sebagainya yang mungkin analog di dunia bertulis daripada reka bentuk yang tidak atau baik. 309 00:12:15,930 --> 00:12:18,490 >> Dan gaya, juga, adalah agak subjektif. 310 00:12:18,490 --> 00:12:20,060 Tetapi sekurang-kurangnya kita harapkan konsisten. 311 00:12:20,060 --> 00:12:21,480 Ini adalah bagaimana cantik adalah kod anda. 312 00:12:21,480 --> 00:12:22,840 Adakah perkara-perkara baik dilekukan? 313 00:12:22,840 --> 00:12:26,600 Adakah pembolehubah anda juga dinamakan / Apakah semua kurungan anda dan pendakap kerinting 314 00:12:26,600 --> 00:12:27,920 selaras seperti yang seharusnya? 315 00:12:27,920 --> 00:12:31,490 Kami mempunyai panduan gaya CS50 sebagai set masalah akan menunjukkan anda di. 316 00:12:31,490 --> 00:12:33,730 Mereka lebih selesa berada dialu-alukan untuk sesat itu 317 00:12:33,730 --> 00:12:35,771 selagi anda bekerja sendiri konsisten. 318 00:12:35,771 --> 00:12:38,020 Dan ini juga adalah satu pengajaran kami akan mengukuhkan dalam seksyen. 319 00:12:38,020 --> 00:12:40,990 Jadi, jika semua ini adalah sedikit cepat, merealisasikan P set dan seksyen 320 00:12:40,990 --> 00:12:42,900 akan masuk ke dalam lebih mendalam tidak lama lagi. 321 00:12:42,900 --> 00:12:45,490 >> Tetapi secara umumnya kita ada sangat sedikit baldi untuk CS50. 322 00:12:45,490 --> 00:12:48,170 Skor umumnya pada skala yang satu hingga tiga, atau 1-5. 323 00:12:48,170 --> 00:12:50,836 Kami sebenarnya-- dan saya tidak boleh mengatakan ini cukup pada minggu pertama. 324 00:12:50,836 --> 00:12:51,582 Tiga adalah baik. 325 00:12:51,582 --> 00:12:54,290 Jadi, walaupun, ya, tiga daripada lima normal, matematik, 326 00:12:54,290 --> 00:12:57,240 mungkin 60 peratus atau seperti tolak D. 327 00:12:57,240 --> 00:12:58,840 Tiga adalah, sebenarnya, yang baik. 328 00:12:58,840 --> 00:13:01,050 Dan, sebenarnya, kami menjangka kebanyakan pelajar di dalam kelas 329 00:13:01,050 --> 00:13:04,280 untuk memulakan jangka masa sekitar berdua-dua, dan bertiga, dan merangkak. 330 00:13:04,280 --> 00:13:05,510 Mungkin tidak begitu banyak lima. 331 00:13:05,510 --> 00:13:06,661 Tidak terlalu banyak yang. 332 00:13:06,661 --> 00:13:08,910 Tetapi secara umumnya bermula pada tempat yang manis dalam keluk 333 00:13:08,910 --> 00:13:11,694 supaya sebagai masa berlalu, ada sebenarnya ruang untuk, 334 00:13:11,694 --> 00:13:13,360 dan peluang untuk perkembangan atas. 335 00:13:13,360 --> 00:13:15,810 Jadi, jangan menyamakan tiga dengan 60%. 336 00:13:15,810 --> 00:13:17,410 Ia lebih abstrak daripada itu. 337 00:13:17,410 --> 00:13:20,160 Formula yang kita mengira gred wajaran seperti berikut. 338 00:13:20,160 --> 00:13:21,610 Ketepatan adalah bernilai yang paling. 339 00:13:21,610 --> 00:13:23,010 Design adalah bernilai sedikit kurang. 340 00:13:23,010 --> 00:13:24,490 Gaya bernilai sedikit kurang. 341 00:13:24,490 --> 00:13:26,950 Dan ini secara amnya menangkap jumlah masa 342 00:13:26,950 --> 00:13:29,800 yang masuk ke dalam mendapatkan setiap paksi ini sahaja yang betul. 343 00:13:29,800 --> 00:13:31,810 Gaya adalah sangat mudah, harus super cepat, 344 00:13:31,810 --> 00:13:33,657 tetapi ia adalah satu tabiat yang mudah untuk mendapatkan malas tentang. 345 00:13:33,657 --> 00:13:35,490 Ketepatan mungkin mengambil anda kebanyakan masa. 346 00:13:35,490 --> 00:13:38,990 Mengejar beberapa kekuatan bug mengambil bahawa jam tambahan atau lebih, 347 00:13:38,990 --> 00:13:41,737 dan sebagainya, jaringan akhirnya menangkap itu. 348 00:13:41,737 --> 00:13:43,070 Dan sebagainya, kini perkataan yang lebih serius. 349 00:13:43,070 --> 00:13:45,240 Sejak CS50 mempunyai perbezaan, untuk lebih baik 350 00:13:45,240 --> 00:13:47,440 atau untuk lebih teruk, menjadi mungkin lebih baik berkenalan 351 00:13:47,440 --> 00:13:50,065 dengan isu-isu akademik kejujuran daripada kebanyakan mana-mana kursus lain. 352 00:13:50,065 --> 00:13:53,720 Dan sesungguhnya, ia adalah untuk pengetahuan saya yang kami menghantar lebih ramai pelajar, malangnya, 353 00:13:53,720 --> 00:13:56,690 untuk tujuan disiplin setiap tahun akibat. Jadi, 354 00:13:56,690 --> 00:13:59,040 demi kepentingan penuh pendedahan, mari kita bercakap secara ringkas 355 00:13:59,040 --> 00:14:02,820 tentang apa yang berlaku di dalam CS50, dan apa yang anda boleh lakukan, dan apa yang anda boleh menjadi sedar. 356 00:14:02,820 --> 00:14:05,530 >> Jadi, di sini sejak tahun 2007, apabila Saya mewarisi kursus ini, 357 00:14:05,530 --> 00:14:07,870 adalah jumlah kes Papan Iklan. 358 00:14:07,870 --> 00:14:10,690 Papan iklan adalah disiplin Harvard badan, atau kini Penasihat Honor, 359 00:14:10,690 --> 00:14:13,790 mana kes-kes yang dirujuk apabila pelajar melakukan sesuatu yang kursus ini 360 00:14:13,790 --> 00:14:15,470 sukatan pelajaran tidak munasabah. 361 00:14:15,470 --> 00:14:17,220 Tidak terdapat satu pola sebenar di sini, saya akan berkata. 362 00:14:17,220 --> 00:14:19,530 Ia turun naik ke atas tahun tetapi secara umumnya 363 00:14:19,530 --> 00:14:22,262 ini adalah jumlah kes-kes yang dirujuk. 364 00:14:22,262 --> 00:14:23,970 Bilangan pelajar yang terlibat? 365 00:14:23,970 --> 00:14:25,290 Ia juga berbeza-beza. 366 00:14:25,290 --> 00:14:27,930 Biasanya, pada tahun lepas untuk Contohnya, 29 pelajar di Harvard 367 00:14:27,930 --> 00:14:29,740 adalah Ad menaiki, jadi untuk bercakap. 368 00:14:29,740 --> 00:14:32,670 29 daripada mereka pelajar semasa, dua daripada mereka pelajar terlebih dahulu, 369 00:14:32,670 --> 00:14:35,610 yang bekerjasama dalam beberapa cara yang tidak diingini. 370 00:14:35,610 --> 00:14:38,400 Dan kemudian dari segi peratusan, ia biasanya kira-kira 3% 371 00:14:38,400 --> 00:14:41,360 kelas yang, malangnya, membuat jenis-jenis keputusan. 372 00:14:41,360 --> 00:14:44,470 >> Jadi, tahun lepas adalah 3.5% badan pelajar CS50 373 00:14:44,470 --> 00:14:46,820 itu adalah Ad menaiki, jadi untuk bercakap. 374 00:14:46,820 --> 00:14:48,490 >> Jadi, apakah semua ini bermakna? 375 00:14:48,490 --> 00:14:49,660 Dan apa yang kita benar-benar melakukan? 376 00:14:49,660 --> 00:14:52,930 >> Jadi, sebagai pendedahan sepenuhnya, kita sama sekali, kerana ahli-ahli sains komputer, 377 00:14:52,930 --> 00:14:57,620 mempunyai alat perisian di tangan kita dan ia sangat mudah bagi kita, dalam keadilan, 378 00:14:57,620 --> 00:15:00,980 rakan-rakan yang lain yang tidak menyeberangi ayat-ayat ini untuk menyeberangi membandingkan 379 00:15:00,980 --> 00:15:04,570 setiap penyerahan tahun ini terhadap setiap penyerahan sejak lapan tahun yang lalu. 380 00:15:04,570 --> 00:15:05,445 Perisian melakukan ini. 381 00:15:05,445 --> 00:15:07,440 Dan akhirnya ia mata manusia yang memutuskan 382 00:15:07,440 --> 00:15:11,410 sama ada atau tidak untuk merujuk beberapa perkara untuk pengadilan lanjut, 383 00:15:11,410 --> 00:15:12,737 tetapi perisian pasti membantu. 384 00:15:12,737 --> 00:15:15,820 Dan ini, terus-terang, sebab itu yang saya rasa kita ada nombor seperti besar dalam CS50. 385 00:15:15,820 --> 00:15:18,540 Ia bukan kerana CS50 pelajar atau CS lebih 386 00:15:18,540 --> 00:15:20,840 umumnya apa-apa kurang jujur daripada mana-mana pelajar lain, 387 00:15:20,840 --> 00:15:22,340 ia hanya kita mempunyai alat dan teknik-teknik 388 00:15:22,340 --> 00:15:24,095 yang boleh digunakan untuk mengambil pas pertama ini. 389 00:15:24,095 --> 00:15:25,960 >> Tetapi kita memerhatikan pada semua perkara-perkara ini 390 00:15:25,960 --> 00:15:30,340 dan juga, sekali lagi, demi kepentingan mengiktiraf kerja yang yang sedang dimasukkan 391 00:15:30,340 --> 00:15:32,397 dalam dengan majoriti super kelas. 392 00:15:32,397 --> 00:15:34,230 Dan dasar kursus ini kejujuran akademik, 393 00:15:34,230 --> 00:15:37,021 walaupun ia adalah sekumpulan perenggan panjang dengan sekumpulan peluru 394 00:15:37,021 --> 00:15:40,490 yang diharapkan agak boleh dibaca, ia benar-benar tidak mendidih ke munasabah. 395 00:15:40,490 --> 00:15:44,000 Dan peraturan yang terbaik daripada ibu jari yang kami menawarkan sehingga dalam sukatan pelajaran 396 00:15:44,000 --> 00:15:46,020 adalah ini, intipati bagi semua kerja yang 397 00:15:46,020 --> 00:15:47,850 mengemukakan kepada kursus ini mesti anda sendiri. 398 00:15:47,850 --> 00:15:51,510 Dan sesungguhnya, di hampir semua orang-orang kes yang dirujuk untuk tindakan tatatertib 399 00:15:51,510 --> 00:15:55,640 ia adalah kerana seseorang lewat pelajar malam biasanya bertukar kod nya 400 00:15:55,640 --> 00:15:58,130 lebih secara terang-terangan kepada seorang rakan sekelas, yang kemudiannya diterima pakai 401 00:15:58,130 --> 00:16:00,840 keseluruhannya atau ketara daripadanya. 402 00:16:00,840 --> 00:16:02,680 >> Tetapi benar-benar, ini adalah OK. 403 00:16:02,680 --> 00:16:04,684 Dan sesungguhnya, di pejabat jam, slip kertas 404 00:16:04,684 --> 00:16:07,850 anda telah diserahkan jika anda datang oleh pejabat jam seminggu lalu menggalakkan sebanyak. 405 00:16:07,850 --> 00:16:09,710 Anda benar-benar dialu-alukan dan digalakkan 406 00:16:09,710 --> 00:16:12,340 untuk membincangkan set masalah dengan rakan-rakan. 407 00:16:12,340 --> 00:16:14,461 Untuk membantu antara satu sama lain apabila tersandung. 408 00:16:14,461 --> 00:16:17,710 Tetapi secara umumnya kemestian sekiranya menjadi ini, "apabila kamu minta tolong, 409 00:16:17,710 --> 00:16:20,412 anda boleh menunjukkan kod anda kepada orang lain, tetapi anda tidak boleh melihat mereka. " 410 00:16:20,412 --> 00:16:22,620 Jadi, dalam erti kata lain, jika saya bergelut dengan beberapa set P 411 00:16:22,620 --> 00:16:25,290 dan saya duduk di sana dalam bilik makan, atau di perpustakaan, 412 00:16:25,290 --> 00:16:28,470 atau di dalam bilik darjah cuba untuk mencari beberapa kesalahan, 413 00:16:28,470 --> 00:16:30,340 Saya pasti boleh tunjukkan kod saya pada skrin saya 414 00:16:30,340 --> 00:16:32,590 kepada orang yang duduk di sebelah kepada saya, pasti kakitangan, 415 00:16:32,590 --> 00:16:33,600 tetapi juga rakan sekelas. 416 00:16:33,600 --> 00:16:36,580 Tetapi jika penyelesaian yang rakan sekelas saya menawarkan adalah, oh, 417 00:16:36,580 --> 00:16:39,200 di sini hanya mengambil lihat apa Saya lakukan, yang melintasi garisan. 418 00:16:39,200 --> 00:16:43,120 >> Dan saya akan berani mengatakan bahawa secara amnya satu perkara yang munasabah bagi kebanyakan orang 419 00:16:43,120 --> 00:16:45,030 untuk dengan mudah mengesan garis. 420 00:16:45,030 --> 00:16:47,195 Dan sebagainya, melihat sukatan pelajaran untuk maklumat lanjut. 421 00:16:47,195 --> 00:16:49,070 Dan sekarang salah satu yang lebih aspek kontroversi 422 00:16:49,070 --> 00:16:52,529 sukatan pelajaran CS50 yang saya fikir saya akan bercakap dengan dalam kesimpulan di sini 423 00:16:52,529 --> 00:16:53,820 adalah klausa penyesalan kononnya. 424 00:16:53,820 --> 00:16:55,340 Jadi, di sini semua baik cetak. 425 00:16:55,340 --> 00:16:58,090 Tetapi secara umum yang telah kita lihat sejak 8 tahun campur lalu 426 00:16:58,090 --> 00:17:01,510 itu, sesungguhnya, hampir semua CS50 kes-kes kesalahan akademik 427 00:17:01,510 --> 00:17:04,390 telah hasil hanya miskin membuat lewat malam keputusan. 428 00:17:04,390 --> 00:17:07,144 Hasil daripada tekanan, hasilnya kekurangan makan, kurang tidur, 429 00:17:07,144 --> 00:17:09,560 terlalu banyak set P, terlalu banyak tarikh akhir, terlalu banyak komitmen. 430 00:17:09,560 --> 00:17:13,520 Tekanan membina dalam 2:00, 3:00 AM, 4:00 AM, dengan tarikh akhir yang menjulang. 431 00:17:13,520 --> 00:17:17,020 Kebanyakan pelajar dalam kes-kes baru sahaja membuat keputusan yang buruk 432 00:17:17,020 --> 00:17:20,619 bahawa mereka dengan baik mungkin menyesal keesokan harinya jika tidak minit kemudian, 433 00:17:20,619 --> 00:17:25,490 tetapi sehingga tahun lepas tidak ada injap keluaran yang pelajar-pelajar boleh 434 00:17:25,490 --> 00:17:29,140 sebenarnya membuka untuk benar-benar menangani kepala masalah pada tanpa ketakutan menjadi 435 00:17:29,140 --> 00:17:30,850 boot dari kolej sama sekali. 436 00:17:30,850 --> 00:17:33,260 >> Dan, sememangnya, kami memperkenalkan ini fasal penyesalan pada tahun lepas, 437 00:17:33,260 --> 00:17:35,970 yang mengatakan bahawa jika dalam 72 jam, tiga hari, 438 00:17:35,970 --> 00:17:37,970 menyeberangi beberapa baris ditetapkan dalam sukatan pelajaran 439 00:17:37,970 --> 00:17:41,178 anda tampil ke hadapan untuk satu kursus ini kepala dan kami akan mempunyai sembang mengenainya. 440 00:17:41,178 --> 00:17:43,720 Masih terdapat beberapa hasil, bertentangan dengan apa yang 441 00:17:43,720 --> 00:17:44,990 telah dilaporkan yang berlawanan. 442 00:17:44,990 --> 00:17:49,190 Masih ada beberapa hasil yang adalah diambil tindakan oleh kursus ini, 443 00:17:49,190 --> 00:17:51,611 umumnya zeroing satu set P atau mengambil tindakan lain, 444 00:17:51,611 --> 00:17:53,610 tetapi kita akan, sesungguhnya, mengendalikan diri kita dan tidak 445 00:17:53,610 --> 00:17:58,460 maka kembalikanlah ia lebih tinggi adalah hasil mungkin menjadi lebih teruk. 446 00:17:58,460 --> 00:18:01,810 Dan, sememangnya, untuk berkongsi apa yang berlaku tahun lepas, dalam tempoh lapan tahun, dan kini 447 00:18:01,810 --> 00:18:04,950 sembilan tahun, pengajaran kursus ini dan selepas tinkering dengan pelbagai tombol, 448 00:18:04,950 --> 00:18:07,866 beralih pelbagai mendail lebih masa lalu beberapa tahun kejujuran akademik, 449 00:18:07,866 --> 00:18:11,920 dan melihat setiap data yang tidak jelas kesan, walaupun ucapan seperti ini, 450 00:18:11,920 --> 00:18:15,490 ini adalah tangan ke bawah perkara yang terbaik kami telah diperkenalkan pedagogically 451 00:18:15,490 --> 00:18:18,090 dalam tempoh lapan tahun bersama-sama ayat-ayat ini dalam CS50. 452 00:18:18,090 --> 00:18:21,010 >> 19 pelajar datang ke hadapan di bawah fasal ini tahun lepas. 453 00:18:21,010 --> 00:18:23,389 Kami tidak mengambil sebarang tindakan untuk tujuh orang pelajar, 454 00:18:23,389 --> 00:18:25,430 menentukan bahawa mereka tidak perlu bimbang. 455 00:18:25,430 --> 00:18:27,304 Mereka tidak mempunyai, pada hakikatnya, melintasi garis, tetapi ia 456 00:18:27,304 --> 00:18:28,960 adalah chat yang baik untuk mempunyai tetap. 457 00:18:28,960 --> 00:18:31,190 Kami menumpukan perhatian 11 markah yang telah dihantar. 458 00:18:31,190 --> 00:18:33,840 Dan dalam satu kes kami menyoal pelajar untuk melakukan set masalah. 459 00:18:33,840 --> 00:18:36,370 Tetapi yang lebih menarik, secara jujur, dengan ini 19 perbualan, 460 00:18:36,370 --> 00:18:39,020 yang merupakan cara yang lebih daripada saya dijangka mempunyai, setiap daripada mereka 461 00:18:39,020 --> 00:18:41,370 10 minit untuk mungkin satu jam panjang, juga membawa 462 00:18:41,370 --> 00:18:44,920 untuk menyalakan beberapa isu mengenai isu-isu kekeluargaan, isu-isu kawan, 463 00:18:44,920 --> 00:18:46,940 isu-isu kesihatan mental yang kita ketika itu bekerja, 464 00:18:46,940 --> 00:18:50,200 dengan berkat, pemastautin pelajar Dekan, atau rakan-rakan, atau mana-mana nombor lain 465 00:18:50,200 --> 00:18:51,450 sumber sokongan. 466 00:18:51,450 --> 00:18:54,454 Jadi bahawa ini adalah dengan jauh salah kegunaan yang terbaik pada masa ini 467 00:18:54,454 --> 00:18:55,870 dan salah satu daripada campur tangan terbaik. 468 00:18:55,870 --> 00:18:58,870 >> Dengan itu berkata, ia tidak mempunyai input kepada kadar pengesanan 469 00:18:58,870 --> 00:19:00,909 ketidakjujuran akademik amnya. 470 00:19:00,909 --> 00:19:02,950 Dan saya berani mengatakan, subset ini pelajar tahun lepas 471 00:19:02,950 --> 00:19:06,350 adalah demografi yang kita sebelum ini tidak pernah dikenal pasti sebelum 472 00:19:06,350 --> 00:19:08,140 dan tidak pernah disambung sebelum ini. 473 00:19:08,140 --> 00:19:10,020 Dan sebagainya, ini adalah kisah-kisah kejayaan yang indah 474 00:19:10,020 --> 00:19:13,390 walaupun mereka telah dibawa ke cahaya dalam masa kurang daripada keadaan yang optimum. 475 00:19:13,390 --> 00:19:15,640 Jadi, ingatlah ini kerana anda membuat, mungkin, 476 00:19:15,640 --> 00:19:17,390 beberapa keputusan yang buruk diri lewat malam, 477 00:19:17,390 --> 00:19:20,151 bahawa ada jalan lain begitu lama sebagai pelajar di dalam keadaan yang 478 00:19:20,151 --> 00:19:23,400 memiliki dan datang ke hadapan supaya kita boleh mempunyai bahawa jenis chat dan menanganinya 479 00:19:23,400 --> 00:19:27,310 dengan cara yang itulah pendidikan, dan kemudian kita boleh meletakkannya di belakang kita pada hari berikutnya. 480 00:19:27,310 --> 00:19:30,335 >> Jadi tanpa berlengah-lengah lagi, mengambil tepi off perbualan ini, 481 00:19:30,335 --> 00:19:35,080 sebab anak anjing sehingga IS hanya untuk memecahkan ais untuk seketika. 482 00:19:35,080 --> 00:19:39,560 Dan malangnya, mereka semuanya, tetapi apa yang sepatutnya berlaku di sini 483 00:19:39,560 --> 00:19:41,760 adalah semua orang sepatutnya untuk kagum dan jenis berehat 484 00:19:41,760 --> 00:19:43,910 selepas itu perbualan yang sangat berat. 485 00:19:43,910 --> 00:19:46,930 Tetapi nampaknya saya meletakkan anak anjing tidur. 486 00:19:46,930 --> 00:19:50,070 Tetapi jika anda pergi ke ini CS50 anak anjing laman web slash, 487 00:19:50,070 --> 00:19:51,610 anda boleh menonton mereka sepanjang hari. 488 00:19:51,610 --> 00:19:55,280 Terutama mungkin 2:00, atau 03:00, atau 04:00 pada waktu malam 489 00:19:55,280 --> 00:19:57,480 untuk melihat melegakan tekanan kecil di sana. 490 00:19:57,480 --> 00:19:58,805 Jadi itulah mengurangkan anak anjing. 491 00:19:58,805 --> 00:20:01,700 492 00:20:01,700 --> 00:20:02,200 Baiklah. 493 00:20:02,200 --> 00:20:03,020 Tidak menyeronokkan itu? 494 00:20:03,020 --> 00:20:04,200 OKAY. 495 00:20:04,200 --> 00:20:07,140 Jadi, kembali kepada beberapa komputer sains, jika saya boleh. 496 00:20:07,140 --> 00:20:10,600 >> Jadi, ingat bahawa masa lalu kami mula tidak melihat hanya pada utama, yang 497 00:20:10,600 --> 00:20:13,930 adalah fungsi lalai, apabila bendera hijau diklik setara, 498 00:20:13,930 --> 00:20:16,999 tetapi kita juga mula secara ringkas menulis beberapa fungsi kita sendiri. 499 00:20:16,999 --> 00:20:20,040 Dan setakat ini tiada seorang pun daripada fungsi-fungsi ini telah begitu besar atau penuh daging. 500 00:20:20,040 --> 00:20:24,570 Anda akan masuk ke dalam orang-orang yang lebih besar fungsi mungkin, P menetapkan 2, P menetapkan 3, 501 00:20:24,570 --> 00:20:26,410 pasti P menetapkan 4 dan seterusnya. 502 00:20:26,410 --> 00:20:29,340 Buat masa ini sebahagian besar daripada program anda, jika tidak semua daripada mereka, sudah tentu untuk P 503 00:20:29,340 --> 00:20:31,550 set 1 boleh dilakukan sepenuhnya dalam utama. 504 00:20:31,550 --> 00:20:33,810 Jika program anda hanya lima baris, 10 baris, 505 00:20:33,810 --> 00:20:37,070 malah 20 barisan panjang, sempurna munasabah untuk menulisnya 506 00:20:37,070 --> 00:20:40,930 semua dalam utama dan tidak kepada lebih merumitkan kod anda, tetapi apa yang kita lakukan hari ini 507 00:20:40,930 --> 00:20:44,360 dan seterusnya cuba juga memperkenalkan beberapa teknik reka bentuk yang baik 508 00:20:44,360 --> 00:20:48,660 supaya sebagai kod anda mendapat lebih rumit dan sebagai masalah 509 00:20:48,660 --> 00:20:51,690 anda mahu untuk menyelesaikan mendapat lebih keras dan lebih menarik anda mempunyai, jenis, 510 00:20:51,690 --> 00:20:55,850 alat-alat dalam toolbox anda dengan yang untuk mereka bentuk penyelesaian yang baik kepada mereka. 511 00:20:55,850 --> 00:21:01,210 >> Jadi, mari kita lihat cepat kembali program ini dari minggu lepas saya, yang 512 00:21:01,210 --> 00:21:06,550 adalah fungsi sifar dot C. Dan perhatian bahawa, agak mudah, 513 00:21:06,550 --> 00:21:10,310 ia kelihatan seperti ini dengan dua fungsi, utama dan nama cetak. 514 00:21:10,310 --> 00:21:13,160 Dan memikirkan kembali atau mungkin kejuruteraan terbalik hari ini, 515 00:21:13,160 --> 00:21:16,880 apa yang motivasi untuk memperkenalkan satu majlis di talian 28 dipanggil, 516 00:21:16,880 --> 00:21:18,180 Nama cetak? 517 00:21:18,180 --> 00:21:21,745 Atau apakah ini satu contoh dalam segi prinsip atau bawa pulang, 518 00:21:21,745 --> 00:21:22,605 jika anda akan. 519 00:21:22,605 --> 00:21:26,560 520 00:21:26,560 --> 00:21:27,300 Sesetengah murmurs. 521 00:21:27,300 --> 00:21:28,830 Apa? 522 00:21:28,830 --> 00:21:32,210 >> Yeah penguraian supaya berfungsi adalah jenis cara mewah untuk mengatakan, 523 00:21:32,210 --> 00:21:34,690 mengurai program anda kepada bahagian-bahagian konstituennya 524 00:21:34,690 --> 00:21:37,530 dan kemudian menggunakan bahagian-bahagian untuk berhimpun secara keseluruhannya. 525 00:21:37,530 --> 00:21:39,620 Jadi, itu juga adalah hanya jenis daripada hal yg sudah, 526 00:21:39,620 --> 00:21:42,050 tetapi ini mungkin juga contoh yang lebih baik daripada sesuatu yang 527 00:21:42,050 --> 00:21:43,081 hanya dipanggil abstraksi. 528 00:21:43,081 --> 00:21:43,580 Betul? 529 00:21:43,580 --> 00:21:46,950 Pengekstrakan akan menjadi salah satu tema yang berulang-ulang dalam CS50 530 00:21:46,950 --> 00:21:49,085 dan juga sains komputer secara umum kerana ia adalah 531 00:21:49,085 --> 00:21:53,060 teknik yang anda boleh menyelesaikan masalah dengan lebih berkesan kerana anda 532 00:21:53,060 --> 00:21:56,807 boleh menulis penyelesaian yang lebih intuitif dan dengan cara yang bersisik 533 00:21:56,807 --> 00:21:58,390 dan boleh difahami oleh orang lain. 534 00:21:58,390 --> 00:21:59,860 Apa yang saya maksudkan dengan itu? 535 00:21:59,860 --> 00:22:04,340 >> Jadi, boleh dikatakan ia adalah lebih mudah dibaca untuk melihat program seperti ini, 536 00:22:04,340 --> 00:22:05,990 super pendek walaupun ia adalah. 537 00:22:05,990 --> 00:22:10,050 Apabila anda melihat pada baris 22 bahawa ada fungsi yang dipanggil, nama cetak. 538 00:22:10,050 --> 00:22:12,620 Bahawa nama sahaja mengatakan apa yang dilakukan. 539 00:22:12,620 --> 00:22:15,780 Fungsi yang nampaknya mengambil input antara kurungan, yang 540 00:22:15,780 --> 00:22:18,600 dan nampaknya membuat sesuatu, mungkin mencetak nama. 541 00:22:18,600 --> 00:22:20,880 Dan sebagainya, walaupun kita benar-benar boleh mempunyai 542 00:22:20,880 --> 00:22:25,280 melakukan apa yang kita lakukan pada minggu yang lalu, yang hanya mengambil baris ini sebenar kod, 543 00:22:25,280 --> 00:22:28,710 menghilangkan ini, dan mendapatkan menghapuskan ini semua bersama-sama, 544 00:22:28,710 --> 00:22:31,436 kita semacam disarikan jauh tanggapan mencetak nama. 545 00:22:31,436 --> 00:22:33,060 Saya tidak peduli jika anda menggunakan cetak def. 546 00:22:33,060 --> 00:22:35,601 Saya tidak peduli jika anda mempunyai peratus S dan garis sendeng terbalik N. Ini 547 00:22:35,601 --> 00:22:37,270 adalah butiran yang amat sukar difahami. 548 00:22:37,270 --> 00:22:40,090 Apa yang saya tidak mengambil berat tentang sebagai programmer mencetak nama. 549 00:22:40,090 --> 00:22:43,414 Dan sebagainya, apa cara yang lebih baik untuk berbuat demikian daripada dengan memanggil fungsi, nama cetak? 550 00:22:43,414 --> 00:22:46,330 Dan sebagainya, yang merupakan salah satu motivasi untuk berbuat sesuatu seperti ini. 551 00:22:46,330 --> 00:22:50,370 Menjadikan kod lebih mudah dibaca, lebih boleh diguna semula, dan juga diri deskriptif. 552 00:22:50,370 --> 00:22:52,120 Sekarang, mari kita lihat pada contoh yang lain, 553 00:22:52,120 --> 00:22:56,220 yang merupakan fungsi satu, mana kita mempunyai di sini. 554 00:22:56,220 --> 00:23:00,367 >> Jadi, ini adalah mungkin lebih menarik kerana, dalam kes ini, 555 00:23:00,367 --> 00:23:01,700 Saya tidak mahu hanya mendapat int. 556 00:23:01,700 --> 00:23:03,320 Saya ingin mendapatkan int yang positif. 557 00:23:03,320 --> 00:23:06,470 Dan ternyata untuk mendapatkan yang positif int yang anda perlu lakukan sekumpulan kerja keras. 558 00:23:06,470 --> 00:23:06,969 Betul? 559 00:23:06,969 --> 00:23:09,600 Ia bukan satu talian mudah memanggil seperti nama cetak adalah, 560 00:23:09,600 --> 00:23:11,480 yang diakui kurang menarik. 561 00:23:11,480 --> 00:23:16,000 >> Untuk mendapatkan int yang positif, logically-- biarlah saya skrol kembali ke bawah untuk menyembunyikan ini. 562 00:23:16,000 --> 00:23:18,887 Apa yang anda perlu lakukan? 563 00:23:18,887 --> 00:23:20,720 Seperti semua alat yang kita ada pada masa ini sedang 564 00:23:20,720 --> 00:23:24,440 perkara seperti cetak def dari Standard Perpustakaan dan juga dari perpustakaan CS50 565 00:23:24,440 --> 00:23:26,990 kami mempunyai Dapatkan Int, dan Dapatkan Float, Dapatkan Long Long, Dapatkan String, 566 00:23:26,990 --> 00:23:29,260 tetapi satu-satunya, Germane, sekarang ialah Dapatkan Int. 567 00:23:29,260 --> 00:23:32,970 Jadi, jika alat yang hanya anda mempunyai dalam kotak alat anda Dapatkan Int, 568 00:23:32,970 --> 00:23:35,505 bagaimana kita pergi tentang melaksanakan ia untuk mendapatkan int positif? 569 00:23:35,505 --> 00:23:35,929 >> PENONTON: Buat log dan semak sama ada input yang mereka memberi 570 00:23:35,929 --> 00:23:36,762 adalah positif atau tidak. 571 00:23:36,762 --> 00:23:39,390 572 00:23:39,390 --> 00:23:40,640 >> SPEAKER 1: Perfect. 573 00:23:40,640 --> 00:23:41,200 Tepat sekali. 574 00:23:41,200 --> 00:23:43,950 Satu lagi alat yang kita ada dalam kita toolbox dari satu atau dua minggu yang lalu 575 00:23:43,950 --> 00:23:45,419 hanyalah membina gegelung. 576 00:23:45,419 --> 00:23:48,210 Dan sebagainya, yeah, jika kita menggunakan seketika gelung, atau do manakala gelung, atau hadapan yang 577 00:23:48,210 --> 00:23:50,850 gelung kita mungkin boleh lari dengan mana-mana dalam bentuk tertentu. 578 00:23:50,850 --> 00:23:55,140 Kita boleh melaksanakan konsep get int positif dengan hanya menggunakan Dapatkan Int, 579 00:23:55,140 --> 00:23:57,830 dan kemudian hanya menyimpan memanggil lagi dan pestering pengguna 580 00:23:57,830 --> 00:24:00,320 sehingga dia benar-benar memberikan kita apa yang kita mahu. 581 00:24:00,320 --> 00:24:03,260 >> Dan sehingga kini, ini abstraksi proses 582 00:24:03,260 --> 00:24:05,680 mendapat int yang positif ke dalam fungsi yang dipanggil 583 00:24:05,680 --> 00:24:08,930 Dapatkan Positif Int adalah lebih sedikit menarik kerana melihat ini. 584 00:24:08,930 --> 00:24:10,990 Ini adalah seperti 10 tambah baris kod yang 585 00:24:10,990 --> 00:24:15,090 terlibat dalam mendapatkan int yang positif, dan saya tidak peduli bagaimana anda melakukannya. 586 00:24:15,090 --> 00:24:17,850 Apa yang saya peduli adalah bahawa anda boleh melakukannya, dan saya telah 587 00:24:17,850 --> 00:24:21,660 tersembunyi segala butir-butir di belakang fungsi dipanggil Dapatkan Positif int itu, 588 00:24:21,660 --> 00:24:23,430 sesungguhnya, mempunyai tugasan ini manakala gelung. 589 00:24:23,430 --> 00:24:27,660 >> Dan melihat minggu lalu bagi sintaks di sana, tetapi ia hanya mengisytiharkan N, 590 00:24:27,660 --> 00:24:29,800 dan ia mencetak keluar arahan kepada pengguna. 591 00:24:29,800 --> 00:24:33,330 Ia menyeru Dapatkan Int dan kemudian ia memeriksa keadaan ini sekali lagi, dan sekali lagi, 592 00:24:33,330 --> 00:24:35,230 dan sekali lagi sehingga pengguna bekerjasama. 593 00:24:35,230 --> 00:24:38,000 >> Oleh sebab itu, satu semakan waras sahaja. 594 00:24:38,000 --> 00:24:40,370 Bagi mereka yang mungkin biasa dengan beberapa pengaturcaraan, 595 00:24:40,370 --> 00:24:46,410 mengapa N diisytiharkan, mengapa saya membuat N luar do manakala gelung? 596 00:24:46,410 --> 00:24:50,370 Mengapa pada baris 29 dan tidak pada seperti 33, misalnya. 597 00:24:50,370 --> 00:24:53,529 >> PENONTON: Kerana apabila anda mengisytiharkan ia di luar, ia jenis 598 00:24:53,529 --> 00:24:56,688 lebih, scope-- yang lebih besar 599 00:24:56,688 --> 00:24:58,146 >> SPEAKER 1: Baik. 600 00:24:58,146 --> 00:24:59,604 >> PENONTON: --and jika anda mengisytiharkan ia di dalam gelung, [didengar] 601 00:24:59,604 --> 00:25:00,979 kerana ia tidak tahu mengenainya. 602 00:25:00,979 --> 00:25:02,819 603 00:25:02,819 --> 00:25:03,610 SPEAKER 1: Tepat sekali. 604 00:25:03,610 --> 00:25:06,330 Jika saya boleh simplify-- ia adalah satu isu skop. 605 00:25:06,330 --> 00:25:11,530 Dan skop merujuk kepada konteks di yang berubah-ubah yang wujud atau boleh digunakan. 606 00:25:11,530 --> 00:25:15,050 Dan peraturan yang baik ibu jari di sini ialah secara amnya apabila anda mengisytiharkan atau membuat 607 00:25:15,050 --> 00:25:21,642 pembolehubah yang anda hanya boleh menggunakan ia di dalam yang paling dekat memeluk pendakap kerinting. 608 00:25:21,642 --> 00:25:22,600 Jadi apa maksudnya? 609 00:25:22,600 --> 00:25:26,551 Jika saya, sebaliknya, membatalkan dan pergi dengan sesuatu yang berasa sedikit lebih mudah. 610 00:25:26,551 --> 00:25:27,050 Betul? 611 00:25:27,050 --> 00:25:29,360 >> Line 32 hanya kelihatan lebih bersih kepada saya sekarang. 612 00:25:29,360 --> 00:25:31,500 Saya melakukan kedua-dua perkara di sekali dan kemudian memberikan 613 00:25:31,500 --> 00:25:33,070 tangan kanan ke tangan kiri. 614 00:25:33,070 --> 00:25:35,180 Masalahnya sekarang berdasarkan bahawa definisi skop 615 00:25:35,180 --> 00:25:41,130 adalah bahawa N boleh digunakan dalam talian 31 dan 32 di dalam gelung ini, 616 00:25:41,130 --> 00:25:45,100 tetapi di mana mengikut definisi yang ia tidak boleh digunakan? 617 00:25:45,100 --> 00:25:45,660 Selaras apa? 618 00:25:45,660 --> 00:25:46,160 Yeah. 619 00:25:46,160 --> 00:25:47,490 >> PENONTON: 35. 620 00:25:47,490 --> 00:25:49,180 >> SPEAKER 1: 35. 621 00:25:49,180 --> 00:25:50,480 Pasti tidak 35. 622 00:25:50,480 --> 00:25:52,349 Dan juga di mana lagi? 623 00:25:52,349 --> 00:25:52,890 PENONTON: 34. 624 00:25:52,890 --> 00:25:55,040 SPEAKER 1: Genap 34 adalah bermasalah kerana ia adalah 625 00:25:55,040 --> 00:25:56,450 luar pendakap kerinting. 626 00:25:56,450 --> 00:25:58,200 Dan sebagainya sebenarnya, mari kita lihat apa yang berlaku. 627 00:25:58,200 --> 00:25:58,700 Betul? 628 00:25:58,700 --> 00:26:00,722 Ini mungkin kelihatan sedikit intuitif atau tidak mungkin, 629 00:26:00,722 --> 00:26:02,680 tetapi mari kita lihat apa yang pengkompil telah mengatakan apabila 630 00:26:02,680 --> 00:26:04,730 kita pergi ke direktori sumber hari ini. 631 00:26:04,730 --> 00:26:08,950 Membuat fungsi satu. 632 00:26:08,950 --> 00:26:11,231 Oh, my god. 633 00:26:11,231 --> 00:26:12,980 Well, saya akhirnya selesai yang, dengan cara itu. 634 00:26:12,980 --> 00:26:14,030 Baiklah. 635 00:26:14,030 --> 00:26:15,510 Dan apa isu di sini? 636 00:26:15,510 --> 00:26:17,430 Sangat sukar difahami untuk melihat. 637 00:26:17,430 --> 00:26:19,570 Tetapi di sini adalah apa yang saya typed-- membuat fungsi satu. 638 00:26:19,570 --> 00:26:21,640 Berikut adalah apa yang membuat disebabkan, yang sebenarnya 639 00:26:21,640 --> 00:26:23,705 menggunakan dilafaz pengkompil dengan beberapa orang-orang bendera 640 00:26:23,705 --> 00:26:25,080 bahawa kita akan melihat sekali lagi tidak lama lagi. 641 00:26:25,080 --> 00:26:26,829 Dan sekali lagi, sentiasa kelihatan di ralat yang pertama, 642 00:26:26,829 --> 00:26:30,540 kerana ia hanya mungkin mempunyai melata yang kesan bermakna pada baris lain. 643 00:26:30,540 --> 00:26:34,410 >> Jadi apa ini bermakna bahawa masalah adalah dalam fungsi 1.c. 644 00:26:34,410 --> 00:26:36,890 Ia berada di talian 32. 645 00:26:36,890 --> 00:26:39,712 Dan ia di ruangan, atau watak, 13. 646 00:26:39,712 --> 00:26:42,670 Oleh itu, apabila editor teks anda yang boleh membantu anda mengenal pasti di mana isu ini. 647 00:26:42,670 --> 00:26:47,079 Jadi, jika saya tatal ke atas, apakah garis 32? 648 00:26:47,079 --> 00:26:49,120 Itu memang satu ini yang sudah menekankan 649 00:26:49,120 --> 00:26:50,607 n ubah hak sini-- yang tidak digunakan. 650 00:26:50,607 --> 00:26:51,440 Tetapi ia tidak digunakan. 651 00:26:51,440 --> 00:26:52,320 Saya menggunakannya. 652 00:26:52,320 --> 00:26:56,110 Tetapi pengkompil yang keliru, kerana ia hanya wujud di dalam skop ini. 653 00:26:56,110 --> 00:26:57,727 Oleh itu, saya tidak boleh menggunakannya di sini. 654 00:26:57,727 --> 00:26:58,560 Saya tidak boleh menggunakan di sini. 655 00:26:58,560 --> 00:27:01,320 Dan pengkompil, oleh itu, tidak peduli yang saya cuba. 656 00:27:01,320 --> 00:27:03,940 Ia seolah-olah yang tidak digunakan dalam skop yang sebenar. 657 00:27:03,940 --> 00:27:08,854 >> Oleh itu, kita boleh meluaskan skop dengan melakukan apa yang kami mula with-- int n. 658 00:27:08,854 --> 00:27:11,020 Dan walaupun ia tidak kelihatan elegan, mungkin, 659 00:27:11,020 --> 00:27:15,110 dan kami mengambil satu baris tambahan di sini, kini ia dalam skop mana-mana. 660 00:27:15,110 --> 00:27:15,970 Jadi mari kita cuba lagi. 661 00:27:15,970 --> 00:27:19,040 Oleh itu, satu fungsi. 662 00:27:19,040 --> 00:27:19,610 Nice. 663 00:27:19,610 --> 00:27:23,370 Dan kini jika saya jika saya menjalankan fungsi satu, mari kita negatif 10, 664 00:27:23,370 --> 00:27:27,170 -1, 0, 1, dan ia memang berkesan. 665 00:27:27,170 --> 00:27:28,610 >> Jadi ada penyelesaian yang lain di sini. 666 00:27:28,610 --> 00:27:29,280 Awak tahu tak? 667 00:27:29,280 --> 00:27:31,230 Bagaimana jika saya benar-benar sedang bergelut dengan ini? 668 00:27:31,230 --> 00:27:33,140 Saya tidak tahu di mana n sepatutnya pergi. 669 00:27:33,140 --> 00:27:33,723 Awak tahu tak? 670 00:27:33,723 --> 00:27:39,220 Saya hanya akan meletakkan ia semua cara di bahagian atas fail saya di sini. 671 00:27:39,220 --> 00:27:42,835 Apa yang akan lakukan, yang anda fikir? 672 00:27:42,835 --> 00:27:43,335 Ya? 673 00:27:43,335 --> 00:27:44,251 >> PENONTON: [didengar]. 674 00:27:44,251 --> 00:27:47,964 675 00:27:47,964 --> 00:27:48,630 SPEAKER 1: Ya. 676 00:27:48,630 --> 00:27:50,560 Jadi saya telah membuat ia global, jadi untuk bercakap. 677 00:27:50,560 --> 00:27:54,430 Jika anda mempunyai pembolehubah itu di luar semua fungsi anda yang dibenarkan, 678 00:27:54,430 --> 00:27:58,780 dan kod yang harus menyusun, dan n kini boleh juga didapati bukan sahaja di get 679 00:27:58,780 --> 00:28:02,490 int positif, tetapi juga dalam main-- yang adalah membimbangkan sedikit kerana ada 680 00:28:02,490 --> 00:28:04,864 sudah menjadi n di utama, jadi lebih kepada yang dalam hanya moment-- yang 681 00:28:04,864 --> 00:28:06,530 tetapi ini akan dianggap sebagai reka bentuk yang tidak. 682 00:28:06,530 --> 00:28:06,910 Baiklah. 683 00:28:06,910 --> 00:28:08,570 Jika anda perlu mengambil jalan keluar sesuatu seperti, oh, saya akan 684 00:28:08,570 --> 00:28:10,125 hanya meletakkan ia di sini kerana kod seolah-olah menyusun 685 00:28:10,125 --> 00:28:12,180 biasanya tidak amalan terbaik. 686 00:28:12,180 --> 00:28:14,590 Sebaliknya anda mahu memilih skop yang sempit mungkin 687 00:28:14,590 --> 00:28:18,720 untuk pembolehubah anda, yang bermakna pergi dengan reka bentuk awal kami, yang 688 00:28:18,720 --> 00:28:19,920 adalah di sini. 689 00:28:19,920 --> 00:28:24,400 >> Sekarang sebagai diketepikan, jika anda tidak mempunyai yang sepercaman dinamakan-pembolehubah di sini, 690 00:28:24,400 --> 00:28:27,750 cara c akan mengendalikan this-- walaupun ini tidak akan berlaku terlalu often-- 691 00:28:27,750 --> 00:28:30,150 adalah bahawa ini adalah masih betul-betul halus di sini. 692 00:28:30,150 --> 00:28:35,000 Tetapi definisi ini n selaras 22 akan shadow satu global. 693 00:28:35,000 --> 00:28:38,190 Jadi yang satu ini akan bekerja dalam utama, dan yang global 694 00:28:38,190 --> 00:28:41,670 sebenarnya akan dikenakan apabila anda berada dalam mendapatkan int positif Tetapi lebih kepada yang 695 00:28:41,670 --> 00:28:43,890 masa yang lain, tetapi hanya bagi mereka yang ingin tahu. 696 00:28:43,890 --> 00:28:45,970 >> Jadi ringkasnya, kita menetapkan ini di sini. 697 00:28:45,970 --> 00:28:49,220 Sekarang mari kita mengusik selain dua-bahagian lain sebelum kita melihat satu baris terakhir kod 698 00:28:49,220 --> 00:28:50,170 dalam program ini. 699 00:28:50,170 --> 00:28:52,170 Dapatkan int positif. 700 00:28:52,170 --> 00:28:54,450 Pada bahagian kiri daripada perkataan adalah int perkataan. 701 00:28:54,450 --> 00:28:56,860 Apa yang menandakan yang anda fikir? 702 00:28:56,860 --> 00:28:58,900 Setakat ini kami telah kebanyakannya dilihat tidak sah. 703 00:28:58,900 --> 00:28:59,400 Ya? 704 00:28:59,400 --> 00:29:01,810 >> PENONTON: Ia jenis pembolehubah yang anda meminta kira-kira. 705 00:29:01,810 --> 00:29:04,550 >> SPEAKER 1: Ya Ia jenis, biarlah saya tidak mengatakan berubah-ubah, tetapi jenis nilai 706 00:29:04,550 --> 00:29:05,990 bahawa saya meminta kembali untuk. 707 00:29:05,990 --> 00:29:08,070 Dan sesungguhnya, itulah intuitif sini, mudah-mudahan. 708 00:29:08,070 --> 00:29:08,200 Betul? 709 00:29:08,200 --> 00:29:10,250 Jika anda ingin mendapatkan int positif, apa yang anda 710 00:29:10,250 --> 00:29:12,920 mahu function-- seperti kami sukarelawan dari minggu yang lalu 711 00:29:12,920 --> 00:29:15,720 ke tangan anda kembali sekeping kertas dengan int di atasnya? 712 00:29:15,720 --> 00:29:19,190 Dan dengan itu kita telah dinyatakan bahawa apa yang dikenali sebagai jenis pulangan fungsi ini 713 00:29:19,190 --> 00:29:20,450 adalah mendapatkan int positif. 714 00:29:20,450 --> 00:29:22,990 Jika kita tidak mahu ia kembali apa-apa, anda mengatakan tidak sah. 715 00:29:22,990 --> 00:29:25,270 Jika anda mahu ia kembali rentetan, anda mengatakan tali. 716 00:29:25,270 --> 00:29:27,310 Jika anda mahu ia kembali apungan, anda mengatakan apung. 717 00:29:27,310 --> 00:29:30,440 Tetapi satu-satunya yang boleh digunakan di sini secara logik, kerana saya menggunakan get int, 718 00:29:30,440 --> 00:29:34,130 walaupun saya menyekat kepada nilai-nilai positif, adalah untuk kembali int. 719 00:29:34,130 --> 00:29:38,380 >> Jadi sebaliknya, apakah maknanya bahawa ada kekosongan dalam kurungan? 720 00:29:38,380 --> 00:29:40,130 Apa yang kurungan umumnya menentukan? 721 00:29:40,130 --> 00:29:40,588 Ya? 722 00:29:40,588 --> 00:29:42,880 >> PENONTON: Ia bermakna fungsi ini tidak benar-benar mendapatkannya. 723 00:29:42,880 --> 00:29:44,650 >> SPEAKER 1: Ia bermakna fungsi ini sebenarnya tidak mendapat apa? 724 00:29:44,650 --> 00:29:45,430 >> PENONTON: Satu input. 725 00:29:45,430 --> 00:29:46,763 >> SPEAKER 1: input, sekalipun. 726 00:29:46,763 --> 00:29:49,870 Maka sesungguhnya, jika kurungan di sini anda nyatakan tidak sah, 727 00:29:49,870 --> 00:29:51,650 yang hanya bermakna saya tidak mahu apa-apa input. 728 00:29:51,650 --> 00:29:53,269 Saya akan berurusan dengan masalah diri saya sendiri. 729 00:29:53,269 --> 00:29:55,810 Dan sesungguhnya, anda tidak perlu memberitahu mendapat apa-apa int positif. 730 00:29:55,810 --> 00:29:59,630 Anda hanya berkata, dapatkan int positif, dan yang fungsi ini hendak pergi dan melakukan perkara. 731 00:29:59,630 --> 00:30:02,970 >> Tetapi ada adalah satu helah sedikit saya telah telah bermain di sini masa ini keseluruhan 732 00:30:02,970 --> 00:30:04,970 memastikan kod ini menyusun. 733 00:30:04,970 --> 00:30:09,620 Perhatikan bahawa int-- mendapatkan positif int void-- berada di talian 27. 734 00:30:09,620 --> 00:30:14,530 Tetapi atas sebab tertentu yang seolah-olah pelik ia juga di sini di talian 16. 735 00:30:14,530 --> 00:30:18,530 Dan hanya untuk menjadikannya lebih menarik saya akan mengulangi ini supaya ia sempurna sama. 736 00:30:18,530 --> 00:30:21,640 Dan saya telah berkata prototaip dengan komen satu baris sedikit. 737 00:30:21,640 --> 00:30:28,850 Apakah yang akan berlaku jika saya memadamkannya, Dan sekarang jalankan lagi membuat fungsi 1, masukkan. 738 00:30:28,850 --> 00:30:29,350 Alamak. 739 00:30:29,350 --> 00:30:32,527 740 00:30:32,527 --> 00:30:33,110 Tunggu sekejap. 741 00:30:33,110 --> 00:30:34,764 Di mana tab saya? 742 00:30:34,764 --> 00:30:35,263 Huh? 743 00:30:35,263 --> 00:30:37,969 744 00:30:37,969 --> 00:30:39,620 Bersedia. 745 00:30:39,620 --> 00:30:41,570 Membuat fungsi 1. 746 00:30:41,570 --> 00:30:42,150 Di sana kami pergi. 747 00:30:42,150 --> 00:30:42,310 OKAY. 748 00:30:42,310 --> 00:30:43,400 Telah tidak disimpan dengan betul. 749 00:30:43,400 --> 00:30:45,220 Jadi, saya fikir ada sedikit bug di sini di mana saya tidak 750 00:30:45,220 --> 00:30:46,636 melihat nama tab pada masa ini. 751 00:30:46,636 --> 00:30:47,940 Jadi apa yang sedang berlaku di sini? 752 00:30:47,940 --> 00:30:52,210 Pengakuan tersirat fungsi mendapatkan int positif adalah tidak sah di C99. 753 00:30:52,210 --> 00:30:53,940 Jadi mengelirukan lagi. 754 00:30:53,940 --> 00:30:55,200 Jadi apa petunjuk ini? 755 00:30:55,200 --> 00:30:57,287 Nah, ternyata bahawa C agak bodoh. 756 00:30:57,287 --> 00:30:59,912 Nah, itu pengaturcaraan bahasa, atau sebaliknya pengkompil adalah. 757 00:30:59,912 --> 00:31:02,940 Ia hanya mengetahui apa yang anda perlu mengajar, dan ia hanya 758 00:31:02,940 --> 00:31:05,640 akan tahu sesuatu jika anda diajar sebelum ini. 759 00:31:05,640 --> 00:31:07,960 Dalam erti kata lain, utama pada masa ini, Saya 760 00:31:07,960 --> 00:31:10,900 cuba untuk memanggil fungsi dipanggil mendapatkan int positif. 761 00:31:10,900 --> 00:31:14,120 Tetapi pengkompil tidak akan untuk melihat bahawa mendapatkan int positif 762 00:31:14,120 --> 00:31:16,500 wujud sehingga garisan 26. 763 00:31:16,500 --> 00:31:21,360 Dan jadi apa pengkompil tidak hanya kesilapan sebaik sahaja ia mendapat untuk beratur 17, 764 00:31:21,360 --> 00:31:23,700 berkata pengisytiharan tersirat untuk mendapatkan int positif, yang 765 00:31:23,700 --> 00:31:27,740 hanya cara mewah untuk mengatakan, saya tidak tahu apa yang mendapat int positif lagi. 766 00:31:27,740 --> 00:31:31,240 >> Bahasa-bahasa lain seperti Jawa dan Python dan Ruby mungkin melihat ke hadapan. 767 00:31:31,240 --> 00:31:32,240 C tidak. 768 00:31:32,240 --> 00:31:35,110 Dan begitu cara kita menetapkan ini adalah salah satu daripada dua cara. 769 00:31:35,110 --> 00:31:40,160 Sama ada satu, jika masalah ini adalah yang mendapat int positif tidak pernah berlaku sebelum ini, 770 00:31:40,160 --> 00:31:42,150 baik, biarlah saya hanya bergerak ke atas. 771 00:31:42,150 --> 00:31:43,650 Yang akan menyelesaikan masalah ini. 772 00:31:43,650 --> 00:31:46,790 Tetapi secara umumnya, ia adalah dianggap teknik yang lebih baik 773 00:31:46,790 --> 00:31:50,220 untuk meletakkan fungsi utama anda sekurang- terbaik supaya manusia membaca kod anda 774 00:31:50,220 --> 00:31:52,710 mengetahui apa yang program ini tidak, kerana utama tidak dikebumikan semua 775 00:31:52,710 --> 00:31:53,960 jalan di bawah atau di tengah-tengah. 776 00:31:53,960 --> 00:31:55,130 Ia adalah di bahagian paling atas. 777 00:31:55,130 --> 00:31:56,410 Jadi yang tidak merasa ideal. 778 00:31:56,410 --> 00:31:58,326 Dan anda sebenarnya boleh mendapatkan ke dalam situasi di mana 779 00:31:58,326 --> 00:32:00,820 jika panggilan satu fungsi yang lain, yang panggilan lain, 780 00:32:00,820 --> 00:32:04,630 anda boleh masuk ke satu isu di mana tidak boleh pergi daripada yang lain, secara logik. 781 00:32:04,630 --> 00:32:05,920 Ia hanya tidak mungkin. 782 00:32:05,920 --> 00:32:09,290 >> Dan sebagainya perjalanan ke tempat kerja sekitar ini adalah untuk hanya mengambil 783 00:32:09,290 --> 00:32:13,200 tandatangan fungsi ini, jadi untuk speak-- baris pertama di mana ia declared-- 784 00:32:13,200 --> 00:32:16,850 dan hanya copy, paste ia di bahagian, tetapi tidak dengan braces-- kerinting 785 00:32:16,850 --> 00:32:17,980 hanya dengan koma bernoktah. 786 00:32:17,980 --> 00:32:20,840 Ia seperti tanda-tanda kecil apa yang akan datang. 787 00:32:20,840 --> 00:32:26,630 Dan sebenarnya, setiap masa ini apabila kita telah melihat perkara seperti io.h standard 788 00:32:26,630 --> 00:32:33,040 dan cs50.h, begitu juga, dalam orang-orang dot h fail yang ada prototaip lain. 789 00:32:33,040 --> 00:32:35,250 Dan kita akan melihat bahawa tidak lama lagi. 790 00:32:35,250 --> 00:32:39,340 >> Jadi ringkasnya, apabila anda mempunyai program dalam fail dengan pelbagai fungsi 791 00:32:39,340 --> 00:32:42,300 selain utama, anda hampir sentiasa mau memberitakan 792 00:32:42,300 --> 00:32:45,360 hanya dengan cara pertama mereka line, diikuti oleh koma bertitik, 793 00:32:45,360 --> 00:32:48,410 di bahagian paling fail. 794 00:32:48,410 --> 00:32:50,460 Itu adalah banyak sekaligus. 795 00:32:50,460 --> 00:32:53,130 Ada soalan? 796 00:32:53,130 --> 00:32:53,920 Ada soalan? 797 00:32:53,920 --> 00:32:54,530 Baiklah. 798 00:32:54,530 --> 00:32:59,760 >> Jadi mari kita beralih kemudian kepada sesuatu seperti batuk. 799 00:32:59,760 --> 00:33:00,260 Oh. 800 00:33:00,260 --> 00:33:00,570 Bagaimana sesuai. 801 00:33:00,570 --> 00:33:01,220 Baiklah. 802 00:33:01,220 --> 00:33:02,260 Batuk. 803 00:33:02,260 --> 00:33:05,080 Jadi di sini adalah c pelaksanaan program 804 00:33:05,080 --> 00:33:07,560 kita lakukan pada hari yang lain di Scratch yang sangat mudah hanya 805 00:33:07,560 --> 00:33:08,691 kata batuk, batuk, batuk. 806 00:33:08,691 --> 00:33:09,190 Baiklah. 807 00:33:09,190 --> 00:33:11,136 Dan seseorang berkata beberapa hari lalu bahawa ada 808 00:33:11,136 --> 00:33:12,760 cara membersihkan kod ini sehingga sudah. 809 00:33:12,760 --> 00:33:12,880 Semua betul? 810 00:33:12,880 --> 00:33:15,440 Sebaik sahaja anda menyalin dan menampal reka bentuk mungkin tidak baik. 811 00:33:15,440 --> 00:33:18,725 Sekurang-kurangnya sekali kita dapat empat atau lima atau 20 batuk, rasanya amalan yang tidak baik. 812 00:33:18,725 --> 00:33:19,850 Kami hanya menyimpan salinan, menampal. 813 00:33:19,850 --> 00:33:22,213 Apakah penyelesaian yang jelas untuk membersihkan program ini sehingga? 814 00:33:22,213 --> 00:33:23,120 >> PENONTON: Loop. 815 00:33:23,120 --> 00:33:23,350 >> SPEAKER 1: Ya. 816 00:33:23,350 --> 00:33:24,070 Jadi menggunakan gelung. 817 00:33:24,070 --> 00:33:27,697 Dan kita boleh menggunakan untuk gelung, manakala gelung, apa-apa bilangan pendekatan. 818 00:33:27,697 --> 00:33:29,780 Dan sesungguhnya, itulah yang yang kita lakukan dalam versi satu di sini. 819 00:33:29,780 --> 00:33:32,250 Saya bukannya ditulis semula ia dalam versi salah satu cough.c 820 00:33:32,250 --> 00:33:35,170 menjadi batuk hanya dalam masa untuk gelung. 821 00:33:35,170 --> 00:33:38,240 Baiklah, tetapi ada satu peluang sekarang untuk jenis permulaan 822 00:33:38,240 --> 00:33:41,630 untuk mereka bentuk ini sedikit lebih seperti pengajaran yang kita diajar masa yang lalu, 823 00:33:41,630 --> 00:33:46,190 yang this-- menganggap bahawa saya mahu untuk mewujudkan fungsi yang dipanggil batuk, 824 00:33:46,190 --> 00:33:49,730 mari kita mempertimbangkan untuk seketika apa yang ia akan kelihatan seperti. 825 00:33:49,730 --> 00:33:51,900 Jadi, jika saya mahu sesuatu batuk, saya hanya perlu 826 00:33:51,900 --> 00:33:53,800 menggunakan cetak f di dalam majlis itu. 827 00:33:53,800 --> 00:33:55,030 Dan sesungguhnya saya. 828 00:33:55,030 --> 00:33:56,990 Dan sebenarnya, semua ini masa, bila-bila masa anda berada 829 00:33:56,990 --> 00:33:59,000 mencetak sesuatu untuk skrin, seorang programmer 830 00:33:59,000 --> 00:34:00,610 akan memanggil bahawa kesan sampingan. 831 00:34:00,610 --> 00:34:02,990 Ia bukan saya menyerahkan kembali seseorang nilai. 832 00:34:02,990 --> 00:34:06,170 Ia saya mengambil beberapa tindakan yang mungkin visual jelas. 833 00:34:06,170 --> 00:34:10,672 Tetapi batuk fungsi ini, adakah ia kembali apa-apa yang berdasarkan pada baris pertama? 834 00:34:10,672 --> 00:34:12,880 Tidak, kerana jenis pulangan adalah tidak sah, yang hanya bermakna 835 00:34:12,880 --> 00:34:14,250 ia tidak menyerahkan saya apa-apa kembali. 836 00:34:14,250 --> 00:34:16,791 Ia mungkin melakukan sesuatu visual, tetapi ia tidak menyerahkan saya 837 00:34:16,791 --> 00:34:18,639 menyokong sehelai kertas seperti minggu lepas. 838 00:34:18,639 --> 00:34:21,310 >> Adakah ia memerlukan input? 839 00:34:21,310 --> 00:34:21,810 No. 840 00:34:21,810 --> 00:34:23,134 Oleh karena itu, tidak sah di sini juga. 841 00:34:23,134 --> 00:34:25,600 Jadi ini juga adalah sejenis lebih-kejuruteraan masalah ini. 842 00:34:25,600 --> 00:34:26,099 Betul? 843 00:34:26,099 --> 00:34:28,820 Saya telah membuat program yang lebih kompleks, lebih baris kod, 844 00:34:28,820 --> 00:34:31,889 Saya tidak pernah membuat apa-apa lebih berfungsi, tetapi ini 845 00:34:31,889 --> 00:34:34,210 akan menjadi batu loncatan, mungkin, untuk yang lebih luas 846 00:34:34,210 --> 00:34:36,830 konteks dengan kod yang lebih rumit. 847 00:34:36,830 --> 00:34:38,150 Tetapi bagaimana pula dengan ini? 848 00:34:38,150 --> 00:34:42,050 Apa yang telah saya done-- hanya sambil mengerling ke arah ini tanpa melihat komen 849 00:34:42,050 --> 00:34:46,076 di bahagian paling atas file-- apa yang ada Saya pada dasarnya dilakukan di sini dengan batuk saya 850 00:34:46,076 --> 00:34:47,409 pelaksanaan itu berbeza? 851 00:34:47,409 --> 00:34:48,327 Ya, di belakang? 852 00:34:48,327 --> 00:34:51,384 >> PENONTON: Jadikan ia supaya anda boleh mempunyai watak yang mematikan. 853 00:34:51,384 --> 00:34:52,050 SPEAKER 1: Ya. 854 00:34:52,050 --> 00:34:53,270 Jadi ini merasakan sejenis bagus. 855 00:34:53,270 --> 00:34:53,389 Betul? 856 00:34:53,389 --> 00:34:56,600 Ia seperti menambah ciri-ciri untuk anda program atau fungsi anda, dalam kes ini. 857 00:34:56,600 --> 00:34:57,830 Ia masih kembali apa-apa. 858 00:34:57,830 --> 00:35:00,538 Ia mungkin mempunyai kesan sampingan yang visual, kerana ia memanggil cetak f. 859 00:35:00,538 --> 00:35:02,800 Tetapi sekarang saya telah parametrized majlis itu, yang 860 00:35:02,800 --> 00:35:06,470 bermakna saya telah dinyatakan diambil input jenis int dan memanggilnya n, 861 00:35:06,470 --> 00:35:08,510 tetapi saya dapat memanggilnya apa-apa yang saya mahu. 862 00:35:08,510 --> 00:35:11,550 Malah, ia hanya boleh menjadi kali untuk menjadi lebih jelas. 863 00:35:11,550 --> 00:35:13,310 Dan kemudian saya hanya boleh mengubah ini di sini. 864 00:35:13,310 --> 00:35:16,450 Tetapi persoalannya adalah bahawa ini adalah bagaimana saya membuat fungsi yang mengambil input. 865 00:35:16,450 --> 00:35:19,530 Dan jika anda masih ingat Melibas melalui talian mungkin dalam satu 866 00:35:19,530 --> 00:35:23,000 daripada berjalan-lewat, yang keempat dan contoh batuk akhir, 867 00:35:23,000 --> 00:35:27,150 anda akan melihat di sini saya telah umum jenis further-- kod saya untuk cabutan 868 00:35:27,150 --> 00:35:27,690 lebih lanjut. 869 00:35:27,690 --> 00:35:31,390 Seperti batuk dan bersin, kedua-duanya kira-kira seperti mengatakan sesuatu atau membuat 870 00:35:31,390 --> 00:35:32,330 beberapa jenis bunyi. 871 00:35:32,330 --> 00:35:34,725 Simpan akan menjadi sama blok Scratch. 872 00:35:34,725 --> 00:35:37,350 Dan supaya apa yang saya lakukan dalam versi ini, mana kita boleh hanya renungan, 873 00:35:37,350 --> 00:35:43,170 adalah batuk adalah sama seperti berkata, [batuk], batuk, dan sementara itu, bersin adalah 874 00:35:43,170 --> 00:35:44,570 seperti mengatakan, [Achoo]. 875 00:35:44,570 --> 00:35:46,900 Oleh itu, saya telah umum untuk melaksanakan apa yang 876 00:35:46,900 --> 00:35:48,970 sekarang melaksanakan fungsi generik ini, 877 00:35:48,970 --> 00:35:51,490 mengatakan, yang menarik untuk tujuan hari ini 878 00:35:51,490 --> 00:35:54,300 hanya kerana ia masih tidak mempunyai jenis balasan. 879 00:35:54,300 --> 00:35:56,398 Tetapi berapa ramai input adakah ia mempunyai? 880 00:35:56,398 --> 00:35:56,981 PENONTON: Dua. 881 00:35:56,981 --> 00:35:57,430 SPEAKER 1: Dua. 882 00:35:57,430 --> 00:35:59,263 Dan jadi jika anda mahu mengambil dalam dua hujah, 883 00:35:59,263 --> 00:36:00,710 hanya memisahkan mereka dengan koma. 884 00:36:00,710 --> 00:36:03,110 Dan jika anda mahu untuk kemudian memanggil fungsi itu, 885 00:36:03,110 --> 00:36:05,800 melihat bahawa anda hanya memanggil katakan, quote, unquote, 886 00:36:05,800 --> 00:36:09,090 untuk hujah pertama, biasa n, untuk hujah kedua. 887 00:36:09,090 --> 00:36:12,130 Jadi sekali lagi, kita hanya perlu sekarang blok binaan supaya kita boleh sebenarnya 888 00:36:12,130 --> 00:36:15,686 melaksanakan beberapa fungsi kita sendiri. 889 00:36:15,686 --> 00:36:16,570 Baiklah. 890 00:36:16,570 --> 00:36:19,690 Sebarang pertanyaan mengenai ini? 891 00:36:19,690 --> 00:36:22,400 >> Jadi sekarang mari kita mengupas kembali lapisan jika demikian. 892 00:36:22,400 --> 00:36:24,840 Dan matlamatnya, akhirnya, adalah set masalah minggu depan 893 00:36:24,840 --> 00:36:27,710 akan berada di cryptogrophy-- seni berebut maklumat. 894 00:36:27,710 --> 00:36:30,640 Dan khususnya, maklumat yang akan anda menyulitkan atau menyahsulit 895 00:36:30,640 --> 00:36:31,605 akan menjadi teks. 896 00:36:31,605 --> 00:36:33,980 Dan sebagainya yang jenis jemputan soalan hari ini seperti juga, 897 00:36:33,980 --> 00:36:38,480 apa yang sedang berlaku di bawah hood dengan teks yang melebihi ASCII dari minggu sifar, 898 00:36:38,480 --> 00:36:40,730 dan bagaimana boleh kita benar-benar mula memanipulasi ia? 899 00:36:40,730 --> 00:36:43,070 Jadi di sini adalah nama Zamyla ini. 900 00:36:43,070 --> 00:36:47,380 Dan dalam teks, yang mungkin akan dimasukkan ke dalam seperti fungsi mendapatkan tali. 901 00:36:47,380 --> 00:36:52,540 Dan mulai sekarang, apabila anda melihat rentetan seperti this-- Z-A-M-Y-L-A-- 902 00:36:52,540 --> 00:36:56,550 mula memikirkan ia seolah-olah setiap daripada mereka watak-watak adalah dalam sekotak yang 903 00:36:56,550 --> 00:36:57,050 sendiri. 904 00:36:57,050 --> 00:36:59,460 Dan sesungguhnya, dalam seminggu atau lebih yang masa, setiap kotak-kotak 905 00:36:59,460 --> 00:37:04,280 akan mewakili secara khusus satu blok memory-- santapan memori. 906 00:37:04,280 --> 00:37:07,050 Jadi masing-masing huruf, akhirnya, akan mewakili 8 bit. 907 00:37:07,050 --> 00:37:10,560 Dan kami benar-benar akan melihat apa yang berlaku di bawah hood dalam komputer saya. 908 00:37:10,560 --> 00:37:13,440 >> Tetapi kerana tidak ia mencukupi hanya untuk melihat Zamyla 909 00:37:13,440 --> 00:37:17,520 melalui kanta ini, di mana setiap surat-surat yang ada dalam kotak sendiri. 910 00:37:17,520 --> 00:37:22,697 Dan baik yang mencukupi dalam C kita boleh mengakses setiap kotak-kotak secara langsung. 911 00:37:22,697 --> 00:37:25,530 Jadi, jika anda ingin mendapatkan yang pertama surat namanya, sangat mudah dalam C. 912 00:37:25,530 --> 00:37:28,410 Jika anda ingin mendapatkan lalu surat, sangat mudah dan juga 913 00:37:28,410 --> 00:37:30,240 dengan sekeping sintaks baru. 914 00:37:30,240 --> 00:37:36,250 >> Jadi, saya akan pergi ke hadapan ke dalam CS50 IDE dan membuka tali sifar titik C. 915 00:37:36,250 --> 00:37:40,270 Dan dalam contoh ini di sini, terdapat beberapa perkara yang baru berlaku. 916 00:37:40,270 --> 00:37:44,360 Jadi pertama selaras 19, kami telah melihat ini mendapatkan tali sebelum itu. 917 00:37:44,360 --> 00:37:49,840 Jadi hanya sebagai cek kewarasan cepat, jika seseorang boleh menawarkan sehingga secara lisan 918 00:37:49,840 --> 00:37:52,662 penjelasan yang orang biasa itu daripada apa yang berlaku di dalam talian 19. 919 00:37:52,662 --> 00:37:55,370 Seperti hanya menterjemahkan ini ke dalam Inggeris yang rakan sebilik tidak CS50 920 00:37:55,370 --> 00:37:56,416 mungkin faham. 921 00:37:56,416 --> 00:37:56,916 Yeah. 922 00:37:56,916 --> 00:37:59,749 >> PENONTON: Mempunyai penggunaan input tali dan simpan dalam s berubah-ubah. 923 00:37:59,749 --> 00:38:01,934 924 00:38:01,934 --> 00:38:02,600 SPEAKER 1: Baik. 925 00:38:02,600 --> 00:38:05,579 Mempunyai input pengguna rentetan dan menyimpannya dalam s berubah-ubah. 926 00:38:05,579 --> 00:38:06,120 Itu yang besar. 927 00:38:06,120 --> 00:38:08,090 Maka pada tangan kanan sampingan, kita panggil mendapatkan tali. 928 00:38:08,090 --> 00:38:10,340 Yang mengembalikan nilai yang yang tidak mendapat ditugaskan 929 00:38:10,340 --> 00:38:14,230 dari sebelah kanan ke kiri tangan sebelah ke dalam pembolehubah dipanggil s itu 930 00:38:14,230 --> 00:38:15,950 direka untuk menyimpan rentetan. 931 00:38:15,950 --> 00:38:16,800 Tepat sekali. 932 00:38:16,800 --> 00:38:20,000 >> Jadi sekarang beratur 22, semalam komen dalam talian 21, 933 00:38:20,000 --> 00:38:22,780 jelas mencetak rentetan yang satu aksara setiap baris. 934 00:38:22,780 --> 00:38:23,740 Tapi bagaimana? 935 00:38:23,740 --> 00:38:27,040 Jadi pertama sekali, kita memulakan I kepada 0. 936 00:38:27,040 --> 00:38:31,061 Dan maka bagaimana kita dapat akhir nama Zamyla ini? 937 00:38:31,061 --> 00:38:32,810 Nah, pada akhir Nama Zamyla, saya boleh 938 00:38:32,810 --> 00:38:38,151 taip secara manual dalam watak terakhir namanya entah bagaimana, atau bilangan itu. 939 00:38:38,151 --> 00:38:38,650 Betul? 940 00:38:38,650 --> 00:38:43,500 Jika kita kembali sini-- Z-A-M-L-- Y-L-A-- jadi saya boleh menaip. 941 00:38:43,500 --> 00:38:47,340 Apa yang indeks Surat terakhir Zamyla ini? 942 00:38:47,340 --> 00:38:52,517 Jika ini adalah 0-- bercakap seperti programmer-- 0, 1, 2, 3, 4, 5, 943 00:38:52,517 --> 00:38:56,570 Saya heard-- maka sesungguhnya, huruf terakhir nama Zamyla adalah yang keenam, 944 00:38:56,570 --> 00:38:58,890 tetapi jika kita mengira dari 0, ia akan menjadi nombor 5. 945 00:38:58,890 --> 00:39:01,320 Jadi menyimpan bahawa dalam fikiran di sini. 946 00:39:01,320 --> 00:39:04,929 >> Ternyata ada satu majlis di C dipanggil strlen, dan kembali pada hari 947 00:39:04,929 --> 00:39:06,720 dan sehingga hari ini masih, banyak pengaturcara 948 00:39:06,720 --> 00:39:09,524 memilih untuk menyegerakkan nama untuk mereka fungsi yang bunyi seperti kata-kata 949 00:39:09,524 --> 00:39:10,440 mereka cuba untuk mengatakan. 950 00:39:10,440 --> 00:39:12,590 Jadi strlen ialah panjang tali. 951 00:39:12,590 --> 00:39:18,168 Dan supaya apa yang akan panjang rentetan S kembali apabila Zamyla adalah input? 952 00:39:18,168 --> 00:39:19,569 >> PENONTON: Lima. 953 00:39:19,569 --> 00:39:22,090 >> SPEAKER 1: Z-A-M-Y-L. Enam. 954 00:39:22,090 --> 00:39:22,590 Betul? 955 00:39:22,590 --> 00:39:23,940 Apa yang panjang nama Zamyla ini? 956 00:39:23,940 --> 00:39:24,440 Betul? 957 00:39:24,440 --> 00:39:26,240 Dan hanya dalam realiti, enam huruf. 958 00:39:26,240 --> 00:39:26,740 Betul? 959 00:39:26,740 --> 00:39:28,940 Dan jadi apa maksudnya untuk gelung kita? 960 00:39:28,940 --> 00:39:32,130 Kami akan pergi dari 0 sehingga enam, yang 961 00:39:32,130 --> 00:39:33,650 akan memberi kita lima lelaran. 962 00:39:33,650 --> 00:39:34,890 Apa yang kami lakukan pada setiap lelaran? 963 00:39:34,890 --> 00:39:36,870 Nah, peratus C, seseorang fikirkan hari yang lain, 964 00:39:36,870 --> 00:39:38,710 bermakna pemegang tempat untuk apa? 965 00:39:38,710 --> 00:39:39,335 >> PENONTON: Char. 966 00:39:39,335 --> 00:39:40,293 SPEAKER 1: Hanya char. 967 00:39:40,293 --> 00:39:42,877 Jadi character-- tunggal tidak pelbagai watak-watak seperti rentetan. 968 00:39:42,877 --> 00:39:45,251 Dan kemudian inilah barisan baru bahawa kita telah mendapat mencetak. 969 00:39:45,251 --> 00:39:46,580 Dan kemudian di sini adalah sintaks baru. 970 00:39:46,580 --> 00:39:51,130 Jika anda ingin mencetak i-ke- watak dalam rentetan S, boleh dikatakan, 971 00:39:51,130 --> 00:39:54,060 anda hanya boleh mengatakan menamakan tali S, 972 00:39:54,060 --> 00:39:58,230 dan kemudian membuka kurungan persegi, dan kemudian ditutup kurungan persegi, dengan i 973 00:39:58,230 --> 00:39:58,780 di tengah-tengah. 974 00:39:58,780 --> 00:40:01,430 Dan ia sejenis baik dalam yang ia jenis kelihatan seperti segiempat 975 00:40:01,430 --> 00:40:06,210 sama seperti kuasa dua di mana ini Zamyla Watak wujud pada gambar yang di sana. 976 00:40:06,210 --> 00:40:09,970 >> Jadi, jika saya benar-benar menjalankan ini sekarang, mari kita lihat apa yang berlaku. 977 00:40:09,970 --> 00:40:15,190 Membuat rentetan 0 dot slash rentetan 0, dan kemudian saya 978 00:40:15,190 --> 00:40:16,720 akan menaip nama Zamyla ini. 979 00:40:16,720 --> 00:40:19,428 Tidak ada yang cepat, kerana saya tidak menggunakan cetak f, tetapi itulah denda. 980 00:40:19,428 --> 00:40:20,660 Saya hanya tahu apa yang perlu dilakukan. 981 00:40:20,660 --> 00:40:23,240 Dan sesungguhnya ia mencetak Nama Zamyla, satu bagi setiap baris. 982 00:40:23,240 --> 00:40:25,760 >> Sekarang mari kita menjadi sedikit melulu. 983 00:40:25,760 --> 00:40:28,461 Katakan bahawa saya tidak tahu tentang strlen dan saya menganggap, 984 00:40:28,461 --> 00:40:31,460 semua betul, tiada siapa yang akan mempunyai menamakan lebih besar daripada seperti 50 aksara. 985 00:40:31,460 --> 00:40:36,360 Mari kita pergi ke hadapan dan susun semula ini dan jalankan, dan kemudian taip Zamyla 986 00:40:36,360 --> 00:40:37,160 lagi. 987 00:40:37,160 --> 00:40:40,850 Secara logiknya, apakah program akan cuba untuk mencetak? 988 00:40:40,850 --> 00:40:49,545 Z-A-M-Y-L-A kemudian seperti 45 bait tidak diketahui ingatan. 989 00:40:49,545 --> 00:40:51,670 Dan sesungguhnya kita akan kembali idea ini ingatan. 990 00:40:51,670 --> 00:40:54,180 Tetapi secara logik, jika Nama Zamyla ialah yang panjang ini, 991 00:40:54,180 --> 00:40:56,450 seperti gambar di di sini, apa yang kita katakan 992 00:40:56,450 --> 00:40:59,810 adalah menjaga percetakan, percetakan menyimpan, menyimpan percetakan, percetakan menyimpan, menyimpan percetakan, 993 00:40:59,810 --> 00:41:03,781 sepanjang jalan ke watak-50, yang yang tahu apa yang akan berlaku. 994 00:41:03,781 --> 00:41:05,030 Jadi mari kita sebenarnya membaca. 995 00:41:05,030 --> 00:41:06,720 Mari kita menaip Zamyla. 996 00:41:06,720 --> 00:41:07,250 Menarik. 997 00:41:07,250 --> 00:41:08,190 Kami mendapat bertuah. 998 00:41:08,190 --> 00:41:09,700 Hanya sejumlah besar ruang putih. 999 00:41:09,700 --> 00:41:09,930 Oh. 1000 00:41:09,930 --> 00:41:11,120 Ada satu watak funky. 1001 00:41:11,120 --> 00:41:14,577 Ia kelihatan jenis seperti soalan pelik menandakan di sana, tetapi terdapat nama Zamyla ini. 1002 00:41:14,577 --> 00:41:15,660 Mari kita benar-benar melulu. 1003 00:41:15,660 --> 00:41:20,000 Bagaimana pula kita mencetak 500 blok kepada yang tidak diketahui? 1004 00:41:20,000 --> 00:41:24,380 Mari kita pergi ke hadapan dan membuat ini juga dan kemudian semula jangka. 1005 00:41:24,380 --> 00:41:27,980 Dan mari kita skrin penuh, kerana kita perlu melihat lebih banyak ruang. 1006 00:41:27,980 --> 00:41:30,460 Zamyla. 1007 00:41:30,460 --> 00:41:31,830 Bernasib baik lagi. 1008 00:41:31,830 --> 00:41:33,070 >> Berani kita mendapatkan lebih melulu? 1009 00:41:33,070 --> 00:41:36,070 Mari kita mendapatkan lebih banyak melulu. 1010 00:41:36,070 --> 00:41:39,350 50000 aksara. 1011 00:41:39,350 --> 00:41:41,390 Sesungguhnya ini ialah bukan idea yang baik. 1012 00:41:41,390 --> 00:41:41,890 Baiklah. 1013 00:41:41,890 --> 00:41:42,990 Membuat rentetan 0. 1014 00:41:42,990 --> 00:41:44,720 Ini akan menjadi demo terakhir kami. 1015 00:41:44,720 --> 00:41:47,261 Zamyla. 1016 00:41:47,261 --> 00:41:48,632 Ugh. 1017 00:41:48,632 --> 00:41:50,010 Ugh. 1018 00:41:50,010 --> 00:41:50,680 OKAY. 1019 00:41:50,680 --> 00:41:54,407 Jadi ingatan saya adalah benar-benar kosong sekarang, yang sebenarnya jenis mudah. 1020 00:41:54,407 --> 00:41:55,990 Apa yang saya cuba untuk mendapatkan supaya- hak semua. 1021 00:41:55,990 --> 00:41:57,614 Dan sekarang saya hanya akan mendapat melulu. 1022 00:41:57,614 --> 00:41:58,570 500,000. 1023 00:41:58,570 --> 00:42:03,860 Make-- mari skrin penuh itu. 1024 00:42:03,860 --> 00:42:04,990 Enter. 1025 00:42:04,990 --> 00:42:05,490 Zamyla. 1026 00:42:05,490 --> 00:42:12,050 1027 00:42:12,050 --> 00:42:13,390 Di sana kami pergi. 1028 00:42:13,390 --> 00:42:15,610 Saya tidak tahu apa yang adalah, tetapi ia kedengaran tidak baik. 1029 00:42:15,610 --> 00:42:16,110 Baiklah. 1030 00:42:16,110 --> 00:42:20,322 Dan sebenarnya, tidak lama lagi, jika anda berada di kalangan Beberapa yang bernasib baik dalam waktu pejabat 1031 00:42:20,322 --> 00:42:22,780 dan dalam masalah menetapkan satu, anda dengan baik mungkin menghadapi ini. 1032 00:42:22,780 --> 00:42:25,490 Segmentasi kesalahan sebenarnya tidak mempunyai erti yang jelas. 1033 00:42:25,490 --> 00:42:28,450 Ini bermakna beberapa jenis kesilapan berkaitan dengan segmen memori. 1034 00:42:28,450 --> 00:42:30,490 Dan dari segi orang biasa itu, ia bermakna kita menyentuh 1035 00:42:30,490 --> 00:42:34,780 memory-- kami menggunakan RAM di komputer saya bahawa saya tidak perlu mempunyai akses kepada. 1036 00:42:34,780 --> 00:42:37,050 Dan itulah apa yang kedua-dua kuat dan juga berbahaya 1037 00:42:37,050 --> 00:42:39,910 mengenai C adalah bahawa anda benar-benar mempunyai akses penuh 1038 00:42:39,910 --> 00:42:45,910 kepada keseluruhan memori program anda atau bait atau RAM, lebih khusus. 1039 00:42:45,910 --> 00:42:49,510 >> Jadi, walaupun nama Zamyla ini hanya enam aksara, 1040 00:42:49,510 --> 00:42:51,450 Saya masih boleh pergi mana-mana sahaja dalam ingatan saya mahu. 1041 00:42:51,450 --> 00:42:53,491 Dan sebagai diketepikan, jika anda telah pernah membaca artikel beberapa 1042 00:42:53,491 --> 00:42:55,610 selama ini tentang beberapa pelayan atau sesuatu program 1043 00:42:55,610 --> 00:42:58,654 mendapat retak atau digodam itulah mengambil kesempatan daripada sesuatu 1044 00:42:58,654 --> 00:43:00,820 dipanggil buffer overflow mengeksploitasi yang kita akan benar-benar 1045 00:43:00,820 --> 00:43:04,970 bercakap tentang dalam beberapa minggu, itu secara amnya merujuk kepada entah bagaimana menipu 1046 00:43:04,970 --> 00:43:09,090 komputer ke dalam berjalan dengan baik luar sempadan memori 1047 00:43:09,090 --> 00:43:11,410 bahawa ia perlu mempunyai, dan mencari sesuatu berair 1048 00:43:11,410 --> 00:43:13,530 kerana memory-- yang kata laluan, mungkin, cara yang 1049 00:43:13,530 --> 00:43:16,990 memintasi beberapa nombor siri menyemak, atau hanya umumnya dapat 1050 00:43:16,990 --> 00:43:20,360 untuk menipu komputer melaksanakan kod yang tidak bertujuan. 1051 00:43:20,360 --> 00:43:22,360 Tetapi mari kita kembali kepada realiti hanya seketika 1052 00:43:22,360 --> 00:43:24,550 di mana program ini adalah dilaksanakan dengan strlen, 1053 00:43:24,550 --> 00:43:26,110 dan memperkenalkan satu perkara di sini. 1054 00:43:26,110 --> 00:43:30,030 Apa yang baru di kalangan tiga baris atas? 1055 00:43:30,030 --> 00:43:30,910 >> Jadi rentetan dot h. 1056 00:43:30,910 --> 00:43:35,490 Ternyata ada perpustakaan ini dipanggil String Dot H, atau Perpustakaan tali, 1057 00:43:35,490 --> 00:43:38,490 yang fail header, boleh dikatakan, adalah rentetan dot h yang memberikan saya 1058 00:43:38,490 --> 00:43:40,860 akses kepada fungsi strlen ini. 1059 00:43:40,860 --> 00:43:43,841 Jika saya tinggalkan itu, pengkompil adalah akan menjerit pada saya dalam bentuk tertentu. 1060 00:43:43,841 --> 00:43:44,590 Tetapi anda tahu apa? 1061 00:43:44,590 --> 00:43:46,090 Sekarang mari kita benar-benar nuanced. 1062 00:43:46,090 --> 00:43:50,820 Selaras 22, ada sesuatu yang baik hati daripada inefficient-- buruk direka, 1063 00:43:50,820 --> 00:43:53,990 arguably-- tentang baris ini kod. 1064 00:43:53,990 --> 00:43:56,280 Fikirkan semula bagaimana untuk gelung dilaksanakan 1065 00:43:56,280 --> 00:44:00,140 dan apakah langkah-langkah berlaku lagi dan lagi dan again-- pengawalan, 1066 00:44:00,140 --> 00:44:04,110 keadaan, kod yang mendapat dilaksanakan, maka kenaikan 1067 00:44:04,110 --> 00:44:07,880 atau perubahan itu, maka keadaan, kemudian kod, maka perubahan itu, maka 1068 00:44:07,880 --> 00:44:11,280 keadaan, kemudian kod, maka perubahan itu, dan sebagainya. 1069 00:44:11,280 --> 00:44:15,320 Jadi apa yang mungkin sedikit membimbangkan atau tidak dilakukan di sini? 1070 00:44:15,320 --> 00:44:16,387 Ya, dengan warna biru. 1071 00:44:16,387 --> 00:44:18,220 PENONTON: strlen adalah dipanggil banyak, banyak kali. 1072 00:44:18,220 --> 00:44:20,654 1073 00:44:20,654 --> 00:44:21,320 SPEAKER 1: Ya. 1074 00:44:21,320 --> 00:44:23,700 Jadi strlen dipanggil banyak kali, tetapi apa yang 1075 00:44:23,700 --> 00:44:27,113 panjang Zamyla ini nama kali pertama gelung melaksanakan? 1076 00:44:27,113 --> 00:44:27,860 >> PENONTON: Enam. 1077 00:44:27,860 --> 00:44:28,110 >> SPEAKER 1: Enam. 1078 00:44:28,110 --> 00:44:30,976 Nah, apa yang panjang namanya kali kedua kod melaksanakan? 1079 00:44:30,976 --> 00:44:31,432 >> PENONTON: Enam. 1080 00:44:31,432 --> 00:44:31,890 >> SPEAKER 1: Baiklah. 1081 00:44:31,890 --> 00:44:32,720 Ia masih enam. 1082 00:44:32,720 --> 00:44:33,220 Betul? 1083 00:44:33,220 --> 00:44:35,260 Nama Zarla tidak mempunyai berubah, walaupun Saya sedang 1084 00:44:35,260 --> 00:44:38,240 hanya sebahagian daripada huruf dalam namanya. 1085 00:44:38,240 --> 00:44:41,349 Dan jadi hakikat bahawa saya berkesan bertanya soalan ini, apa yang 1086 00:44:41,349 --> 00:44:44,640 panjang Zamyla, apa yang panjang daripada Zamyla, apa yang panjang Zamyla, 1087 00:44:44,640 --> 00:44:47,990 enam kali berasingan, atau tujuh walaupun, hanya bodoh, 1088 00:44:47,990 --> 00:44:50,390 kerana itulah yang tidak berubah jawapan itu. 1089 00:44:50,390 --> 00:44:53,550 Dan supaya apa yang saya dapat sebenarnya lakukan adalah this-- dalam rentetan satu 1090 00:44:53,550 --> 00:44:55,680 Saya mempunyai versi yang lebih baik sedikit di sini. 1091 00:44:55,680 --> 00:45:00,110 There-- rentetan whoops-- dua saya mempunyai versi yang lebih baik sedikit di mana 1092 00:45:00,110 --> 00:45:05,010 Saya lakukan this-- bukan hanya Memulakan i kepada 0, saya juga dengan koma 1093 00:45:05,010 --> 00:45:07,990 mengisytiharkan pembolehubah kedua dipanggil n-- saya tidak perlu mengatakan int lagi. 1094 00:45:07,990 --> 00:45:09,220 Saya tidak perlu, sebenarnya. 1095 00:45:09,220 --> 00:45:10,380 Tetapi Aku berkata n. 1096 00:45:10,380 --> 00:45:13,610 Dan kemudian saya memulakan n untuk yang strlen n, supaya sekarang 1097 00:45:13,610 --> 00:45:17,110 berapa kali strlen mendapatkan dilaksanakan dalam jumlah? 1098 00:45:17,110 --> 00:45:17,610 Hanya sekali. 1099 00:45:17,610 --> 00:45:20,257 Dan hal ini adalah apa yang kita maksudkan awal tentang reka bentuk yang lebih baik. 1100 00:45:20,257 --> 00:45:23,090 Sebenarnya apabila kod anda adalah betul, kembali dan berfikir melalui, 1101 00:45:23,090 --> 00:45:26,820 aku menggunakan sedikit memori atau beberapa saat 1102 00:45:26,820 --> 00:45:30,409 atau milisaat masa komputer sebagai mungkin untuk melaksanakan beberapa masalah? 1103 00:45:30,409 --> 00:45:32,200 Dan saya akan untuk menatal dan hanya menyebut 1104 00:45:32,200 --> 00:45:34,283 bahawa ada sebutan ini null dalam versi ini, 1105 00:45:34,283 --> 00:45:36,390 tetapi kita akan kembali kepada yang lama. 1106 00:45:36,390 --> 00:45:41,010 Kerana buat masa ini, mari kita lihat di mana ini akan membawa kita. 1107 00:45:41,010 --> 00:45:44,110 Jadi satu, ternyata bahawa sekarang bahawa kita mempunyai keupayaan 1108 00:45:44,110 --> 00:45:46,860 melihat watak individu, kita boleh memanfaatkan sesuatu 1109 00:45:46,860 --> 00:45:50,807 dari minggu 0 yang sangat sukar difahami dan semacam tidak menarik pada masa itu. 1110 00:45:50,807 --> 00:45:53,390 Tetapi sekarang, dan terutama apabila kita dapat Kriptografi dalam seminggu, 1111 00:45:53,390 --> 00:45:54,820 ia akan menjadi cukup kuat. 1112 00:45:54,820 --> 00:45:57,450 Ia ternyata bahawa dengan beberapa ints data types-- dan terapung 1113 00:45:57,450 --> 00:46:00,300 dan aksara dan rentetan dan lain things-- sebahagian daripada mereka 1114 00:46:00,300 --> 00:46:02,800 boleh dengan mudah ditukar kepada yang lain. 1115 00:46:02,800 --> 00:46:05,840 >> Sebagai contoh, apabila kita bercakap tentang ASCII masa ago-- sini 1116 00:46:05,840 --> 00:46:07,796 huruf besar A melalui M, dot, dot, 1117 00:46:07,796 --> 00:46:12,530 dot-- kita berkata bahawa ada pemetaan antara huruf dan nombor. 1118 00:46:12,530 --> 00:46:14,970 Dan sebenarnya, ia berlaku untuk huruf kecil juga. 1119 00:46:14,970 --> 00:46:17,470 Huruf kecil adalah 97, modal adalah 65. 1120 00:46:17,470 --> 00:46:20,860 Dan ada nombor dalam ASCII, yang hanya pemetaan ini 1121 00:46:20,860 --> 00:46:23,240 sistem untuk semua orang-orang surat lain. 1122 00:46:23,240 --> 00:46:25,030 Jadi apa maksudnya? 1123 00:46:25,030 --> 00:46:28,390 Ya, saya akan pergi ke hadapan dan terbuka sehingga sebenar dengan cepat sesuatu yang dinamakan 1124 00:46:28,390 --> 00:46:31,240 ASCII 0, yang sebahagian besar adalah komen. 1125 00:46:31,240 --> 00:46:33,860 Dan sekali lagi talian anda sentiasa pandangan melalui komen-komen. 1126 00:46:33,860 --> 00:46:36,180 >> Dan kita lihat apa yang ini akan lakukan. 1127 00:46:36,180 --> 00:46:38,410 Jadi ia mendapat fungsi utama. 1128 00:46:38,410 --> 00:46:41,490 Saya berkod keras nombor hanya untuk sekarang, kerana saya tahu apa yang saya lakukan. 1129 00:46:41,490 --> 00:46:42,950 Saya tahu apa yang saya mahu lihat di sini. 1130 00:46:42,950 --> 00:46:45,220 Dan saya telah dimulakan I hingga 65. 1131 00:46:45,220 --> 00:46:48,490 Dan saya mengira sehingga melalui 26 huruf total. 1132 00:46:48,490 --> 00:46:52,990 Dan apa yang saya akan mencetak satu baris pada satu masa 1133 00:46:52,990 --> 00:46:54,930 jika anda boleh mentafsir ini selaras diketengahkan? 1134 00:46:54,930 --> 00:46:55,970 Apa yang akan dicetak? 1135 00:46:55,970 --> 00:46:56,797 Yeah. 1136 00:46:56,797 --> 00:46:57,264 >> PENONTON: Adakah anda akan untuk mencetak surat yang 1137 00:46:57,264 --> 00:46:59,805 sepadan dengan peta daripada nilai surat dan nilai integer? 1138 00:46:59,805 --> 00:47:01,199 1139 00:47:01,199 --> 00:47:01,990 SPEAKER 1: Tepat sekali. 1140 00:47:01,990 --> 00:47:04,740 Saya akan mencetak surat sepadan dengan nilai integer, 1141 00:47:04,740 --> 00:47:06,131 dan sebaliknya, seperti berikut. 1142 00:47:06,131 --> 00:47:08,880 Nah ini, seseorang berkata sebelum ini, hanya tempat untuk char. 1143 00:47:08,880 --> 00:47:09,490 Ia masih adalah. 1144 00:47:09,490 --> 00:47:12,280 Ini, sudah tentu, adalah pemegang tempat yang dengan tidak int-- barisan baru. 1145 00:47:12,280 --> 00:47:18,140 Dan kini melihat, nilai pertama saya yang Saya memasang untuk pemegang tempat yang 1146 00:47:18,140 --> 00:47:22,320 tidak hanya I. saya berkata, dalam kurungan, char I, 1147 00:47:22,320 --> 00:47:26,700 yang char kurungan adalah memberitahu pengkompil, merawat Saya 1148 00:47:26,700 --> 00:47:28,490 tidak seperti apa itu, yang merupakan nombor. 1149 00:47:28,490 --> 00:47:30,490 Rawat ia sebagai watak sebenar. 1150 00:47:30,490 --> 00:47:34,490 Manakala nilai kedua saya memasang dalam- Saya-- hanya perlu menjadi nombor. 1151 00:47:34,490 --> 00:47:38,140 >> Jadi, jika saya menyusun program-- ini jadi ini adalah membuat ASCII 0, 1152 00:47:38,140 --> 00:47:41,720 dot mengurangkan ASCII 0-- Saya hanya mendapat carta ini sedikit berguna yang 1153 00:47:41,720 --> 00:47:44,950 menunjukkan saya semua kemungkinan pemetaan tanpa perlu fikir ia 1154 00:47:44,950 --> 00:47:46,450 melalui atau penyelesaiannya pada saya sendiri. 1155 00:47:46,450 --> 00:47:48,783 Dan saya juga mencetak, perhatikan huruf kecil, 1156 00:47:48,783 --> 00:47:51,410 kerana beberapa baris kemudian, saya juga mencetak pemetaan ini 1157 00:47:51,410 --> 00:47:53,737 juga, yang hanya untuk mengatakan bahawa sebaik sahaja anda memahami 1158 00:47:53,737 --> 00:47:55,570 apa yang berlaku di bawah hood, boleh anda 1159 00:47:55,570 --> 00:47:57,111 secara automatik menukar kembali dan sebagainya. 1160 00:47:57,111 --> 00:48:00,160 Dan sebenarnya, sesiapa di antara kamu pernah melakukan ini di sekolah rendah 1161 00:48:00,160 --> 00:48:03,490 atau mendengar tentang seseorang dongeng mengambil nota 1162 00:48:03,490 --> 00:48:05,620 dan memberikannya kepada beliau atau rakannya di dalam kelas, 1163 00:48:05,620 --> 00:48:08,300 tetapi anda hancur yang surat-surat seperti A menjadi B, 1164 00:48:08,300 --> 00:48:11,240 dan B menjadi C, atau sesuatu lebih rumit daripada itu, baik, 1165 00:48:11,240 --> 00:48:13,410 bagaimana anda akan pergi tentang melaksanakan bahawa sebagai seorang kanak-kanak? 1166 00:48:13,410 --> 00:48:16,340 Nah, anda hanya jenis tahu A menjadi B, B menjadi C, 1167 00:48:16,340 --> 00:48:19,700 tetapi secara matematik, apa yang kanak-kanak yang buat? 1168 00:48:19,700 --> 00:48:22,050 Apa yang kamu menambah kepada setiap huruf? 1169 00:48:22,050 --> 00:48:23,340 Berkesan, 1. 1170 00:48:23,340 --> 00:48:27,740 >> Oleh itu, apabila anda menukar A ke B, itu jenis seperti menukar 65-66, 1171 00:48:27,740 --> 00:48:29,590 yang secara matematik bermakna hanya menambah 1. 1172 00:48:29,590 --> 00:48:33,300 Dan jadi jika anda adalah untuk melaksanakan teknik menipu yang sedikit 1173 00:48:33,300 --> 00:48:36,380 untuk guru anda di dalam kod, anda mungkin melakukan perkara tersebut hanya 1174 00:48:36,380 --> 00:48:38,552 dengan menambah satu huruf bersama-sama. 1175 00:48:38,552 --> 00:48:40,260 Jadi tidak lama lagi, kami akan melihat bagaimana kita 1176 00:48:40,260 --> 00:48:43,300 boleh mengambil kesempatan daripada yang sebenarnya perebutan benar dan menguraikan 1177 00:48:43,300 --> 00:48:43,991 maklumat. 1178 00:48:43,991 --> 00:48:47,240 Dalam pada itu, tahu bahawa kita telah mula untuk memperkenalkan pasangan perpustakaan lain 1179 00:48:47,240 --> 00:48:48,990 sini-- tali satu hari ini. 1180 00:48:48,990 --> 00:48:51,180 Dan laman web yang sangat berguna mudah-mudahan anda akan 1181 00:48:51,180 --> 00:48:55,010 dipanggil reference.cs50.net, yang tenaga pengajar telah meletakkan bersama-sama, 1182 00:48:55,010 --> 00:48:57,510 supaya jika anda mahu melihat ke atas kerja-kerja bagaimana strlen, 1183 00:48:57,510 --> 00:48:59,300 anda boleh mula menaip nama fungsi ini, 1184 00:48:59,300 --> 00:49:02,890 klik strlen sana, dan kemudian penjelasan yang kurang selesa 1185 00:49:02,890 --> 00:49:03,700 akan muncul. 1186 00:49:03,700 --> 00:49:06,880 Atau jika anda mahu pegawai itu Penjelasan berasaskan Linux, 1187 00:49:06,880 --> 00:49:08,945 anda boleh klik lebih selesa di sebelah kanan atas, dan ia 1188 00:49:08,945 --> 00:49:12,070 akan membentangkan maklumat yang sama, tetapi dari segi yang lebih kompleks. 1189 00:49:12,070 --> 00:49:15,070 Itu adalah satu sumber yang berguna untuk benar-benar tahu apa yang semua tidak. 1190 00:49:15,070 --> 00:49:17,320 >> Lain kali kita akan kita lihat pada Ovaltine 1191 00:49:17,320 --> 00:49:20,070 dan lebih, dan memperkenalkan diri ke dunia kriptografi. 1192 00:49:20,070 --> 00:49:21,930 Sebelum itu, kita akan melihat anda pada minggu ini. 1193 00:49:21,930 --> 00:49:23,390 Dan kini, Colton Ogden. 1194 00:49:23,390 --> 00:49:26,730 Jumpa anda pada hari Rabu. 1195 00:49:26,730 --> 00:49:30,216 >> [Bermain muzik] 1196 00:49:30,216 --> 00:49:33,702 >> [Bermain muzik] 1197 00:49:33,702 --> 00:49:38,682 1198 00:49:38,682 --> 00:49:42,200 >> SPEAKER 1: Apakah yang [Bleep] yang kamu buat? 1199 00:49:42,200 --> 00:49:45,720 >> SPEAKER 1: Saya sedang makan pencuci mulut saya? 1200 00:49:45,720 --> 00:49:47,160 Bagaimana anda makan? 1201 00:49:47,160 --> 00:49:47,860 Dengan tangan anda? 1202 00:49:47,860 --> 00:49:54,050 1203 00:49:54,050 --> 00:49:57,940 >> [Bermain muzik] 1204 00:49:57,940 --> 00:50:03,453