1 00:00:00,000 --> 00:00:02,880 >> [MUSIC PLAYING] 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 awal dari dua minggu. 4 00:00:13,500 --> 00:00:18,400 Jadi, mari kita terjun langsung menjadi sesuatu yang adalah kereta, sehingga untuk berbicara. 5 00:00:18,400 --> 00:00:24,015 Jadi, di sini adalah CS50 IDE dan saya sudah berhenti di muka ini screen-- sialan 6 00:00:24,015 --> 00:00:25,070 saya t. 7 00:00:25,070 --> 00:00:25,760 Peringatan spoiler. 8 00:00:25,760 --> 00:00:26,260 Baiklah. 9 00:00:26,260 --> 00:00:29,060 Saya sudah berhenti layar ini di sini, yang memiliki program yang sangat sederhana. 10 00:00:29,060 --> 00:00:32,659 Jika kita scroll ke bawah, yang paling ini hanya komentar, 11 00:00:32,659 --> 00:00:36,730 tapi di sini di garis 13 melalui 17 kita memiliki sebuah program. 12 00:00:36,730 --> 00:00:40,580 >> Ini sintaksis yang valid, yang berarti jika Saya kompilasi, itu akan mengkompilasi dan menjalankan, 13 00:00:40,580 --> 00:00:41,920 tapi itu kereta. 14 00:00:41,920 --> 00:00:47,330 Program ini mengklaim di komentar di bagian atas yang harus mencetak 10, 15 00:00:47,330 --> 00:00:48,870 tapi tidak. 16 00:00:48,870 --> 00:00:53,290 Dan berdasarkan pengalaman Anda, atau segera menjadi pengalaman dengan C, 17 00:00:53,290 --> 00:00:56,820 dapat Anda secara logis membedakan mengapa hal ini, pada kenyataannya, Buggy? 18 00:00:56,820 --> 00:00:57,804 Ya? 19 00:00:57,804 --> 00:00:59,220 AUDIENCE: It goes dari nol sampai 10. 20 00:00:59,220 --> 00:01:01,884 Itu 11 iterasi. 21 00:01:01,884 --> 00:01:02,550 SPEAKER 1: Ya. 22 00:01:02,550 --> 00:01:06,030 Jadi, itu akan dari nol melalui dan sama dengan 10, 23 00:01:06,030 --> 00:01:08,140 yang tentu saja 11 iterasi. 24 00:01:08,140 --> 00:01:10,020 Jadi, itu akan cetak, memang, 11. 25 00:01:10,020 --> 00:01:13,040 Jadi, konvensi ilmu komputer dalam kebanyakan bahasa pemrograman 26 00:01:13,040 --> 00:01:15,270 adalah, memang, hanya untuk mulai menghitung dari nol, 27 00:01:15,270 --> 00:01:18,800 tetapi menghitung sampai tetapi tidak melalui nilai yang Anda benar-benar peduli. 28 00:01:18,800 --> 00:01:21,216 >> Sekarang, ini adalah salah satu hal yang Dibutuhkan sedikit untuk membiasakan digunakan untuk 29 00:01:21,216 --> 00:01:25,350 dan bahkan Scratch, dirancang seperti itu untuk non programmer atau non komputer 30 00:01:25,350 --> 00:01:28,070 ilmuwan dan untuk anak-anak sebagian besar, dirancang untuk memiliki 31 00:01:28,070 --> 00:01:29,570 Anda mulai menghitung umumnya pada satu. 32 00:01:29,570 --> 00:01:30,277 Dan itu baik-baik saja. 33 00:01:30,277 --> 00:01:33,110 Anda benar-benar dapat mulai menghitung di salah satu jika itu lebih nyaman. 34 00:01:33,110 --> 00:01:37,210 Dan menghitung sampai dan melalui 10, tapi Anda akan menyadari sangat minggu ini 35 00:01:37,210 --> 00:01:39,950 dan di luar itu hanya begitu banyak hal di pemrograman 36 00:01:39,950 --> 00:01:42,465 menganggap bahwa 0 adalah pertama digit dengan yang Anda menghitung, 37 00:01:42,465 --> 00:01:45,590 bahwa Anda akan merasa lebih mudah hanya untuk masuk ke kebiasaan ini mulai 38 00:01:45,590 --> 00:01:49,490 dari nol dan menghitung sampai nilai Anda peduli sekarang dari 39 00:01:49,490 --> 00:01:49,990 mendapatkan pergi. 40 00:01:49,990 --> 00:01:50,990 >> Jadi, yang telah diperbaiki itu. 41 00:01:50,990 --> 00:01:53,670 Kami mengubah kurang dari atau sama dengan hanya kurang dari. 42 00:01:53,670 --> 00:01:56,050 Mari kita lihat contoh kedua di sini. 43 00:01:56,050 --> 00:01:59,585 >> Jadi, program ini juga mengklaim dalam Surat komentar di bagian atas yang harus mencetak 44 00:01:59,585 --> 00:02:02,260 sepuluh bintang, tapi tidak. 45 00:02:02,260 --> 00:02:05,540 Apa bug di sini? 46 00:02:05,540 --> 00:02:07,930 >> Jadi, maaf-UMPC dan, mari kita menjadi jelas. 47 00:02:07,930 --> 00:02:08,610 10 bintang. 48 00:02:08,610 --> 00:02:11,644 Satu per baris, tapi tidak. 49 00:02:11,644 --> 00:02:14,810 Jadi, sebenarnya, biarkan aku pergi ke depan dan kompilasi ini salah karena itu sedikit kurang 50 00:02:14,810 --> 00:02:16,900 jelas berdasarkan keterangan itu. 51 00:02:16,900 --> 00:02:18,720 Biarkan aku masuk ke direktori sumber kami. 52 00:02:18,720 --> 00:02:25,110 Membuat kereta satu titik garis miring, kereta satu. 53 00:02:25,110 --> 00:02:28,680 OK, saya melihat 11, yang masih bermasalah, 54 00:02:28,680 --> 00:02:30,090 tapi mereka juga semua dalam satu baris. 55 00:02:30,090 --> 00:02:31,500 Apa masalah di sini? 56 00:02:31,500 --> 00:02:32,339 Ya. 57 00:02:32,339 --> 00:02:33,255 AUDIENCE: [tidak terdengar]. 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 mungkin ingat saya membuat penyebutan singkat dari. 61 00:02:40,210 --> 00:02:42,793 Meskipun semuanya terlihat cukup, dan itu baik menjorok, 62 00:02:42,793 --> 00:02:45,850 dan jenis terlihat Scratch-seperti di garis 16 dan 17 adalah, 63 00:02:45,850 --> 00:02:47,600 memang, menjorok di bawah itu untuk loop. 64 00:02:47,600 --> 00:02:48,400 Itu tidak penting. 65 00:02:48,400 --> 00:02:50,460 Komputer tidak mengetahui atau melihat ruang putih. 66 00:02:50,460 --> 00:02:52,910 Ruang putih hanya untuk kita manusia, Gaya. 67 00:02:52,910 --> 00:02:57,010 Komputer tidak tahu kapan Anda memiliki kurung kurawal, yang akan, memang, 68 00:02:57,010 --> 00:02:58,280 memperbaiki masalah ini. 69 00:02:58,280 --> 00:03:02,350 >> Jadi, jika kita benar-benar pergi dan eksplisit dimasukkan ke dalam kurung kurawal ini 70 00:03:02,350 --> 00:03:05,220 yang akan memperbaiki masalah ini dengan membuat jelas untuk compiler 71 00:03:05,220 --> 00:03:07,930 bahwa saya benar-benar ingin mengeksekusi dua baris kode lagi, 72 00:03:07,930 --> 00:03:09,220 dan lagi, dan lagi. 73 00:03:09,220 --> 00:03:11,680 Tapi apa penjelasan mendasar? 74 00:03:11,680 --> 00:03:12,180 Benar? 75 00:03:12,180 --> 00:03:15,260 Kami tidak ketat perlu keriting kawat gigi sepanjang waktu, 76 00:03:15,260 --> 00:03:18,210 meskipun itu mungkin terbaik praktek untuk masuk ke kebiasaan itu pula 77 00:03:18,210 --> 00:03:20,878 meskipun itu menambahkan dua karakter untuk kode Anda. mengapa? 78 00:03:20,878 --> 00:03:22,380 >> AUDIENCE: [tidak terdengar]? 79 00:03:22,380 --> 00:03:24,630 SPEAKER 1: Ya jadi itu solusi lain sama sekali. 80 00:03:24,630 --> 00:03:25,130 Benar? 81 00:03:25,130 --> 00:03:28,250 Terutama jika pada pandangan pertama Anda tidak benar-benar menghargai apa yang terjadi. 82 00:03:28,250 --> 00:03:31,070 Nah, pasti kita bisa hanya melakukan dua hal sekaligus 83 00:03:31,070 --> 00:03:32,710 dan hanya menghindari masalah sama sekali. 84 00:03:32,710 --> 00:03:36,080 Dan itu bagus, tapi sekarang, untuk tujuan hari ini, apa 85 00:03:36,080 --> 00:03:38,200 adalah penjelasan untuk bug? 86 00:03:38,200 --> 00:03:39,810 Mengapa semua orang bintang pada satu baris? 87 00:03:39,810 --> 00:03:40,806 Ya? 88 00:03:40,806 --> 00:03:43,296 >> AUDIENCE: Tampaknya bahwa jika Anda memiliki satu baris kode, 89 00:03:43,296 --> 00:03:46,649 Anda dapat melakukannya tanpa mereka. 90 00:03:46,649 --> 00:03:47,440 SPEAKER 1: Tepat. 91 00:03:47,440 --> 00:03:48,750 Ini hanya sebuah konvensi manusia. 92 00:03:48,750 --> 00:03:50,750 Orang menyadari bahwa itu adalah sedikit mengganggu atau membosankan 93 00:03:50,750 --> 00:03:53,470 harus menempatkan kurung kurawal semua dari waktu jika semua yang Anda ingin lakukan 94 00:03:53,470 --> 00:03:55,090 adalah mengeksekusi satu baris kode. 95 00:03:55,090 --> 00:03:57,660 Jadi, manusia memutuskan beberapa waktu lalu bahwa itu baik-baik saja. 96 00:03:57,660 --> 00:04:01,180 Jika Anda ingin menempatkan semua lingkaran Anda pada hanya satu baris seperti ini, 97 00:04:01,180 --> 00:04:04,030 itu baik dengan single titik koma di akhir. 98 00:04:04,030 --> 00:04:07,210 Tapi Anda hanya dapat melakukan satu seperti line tanpa kurung kurawal. 99 00:04:07,210 --> 00:04:09,900 >> Jadi, ketika panduan gaya CS50 seperti yang akan mengarahkan Anda ke, 100 00:04:09,900 --> 00:04:11,980 Anda akan melihat bahwa secara umum itu adalah kebiasaan yang baik 101 00:04:11,980 --> 00:04:14,920 untuk masuk ke ini sampai Anda menyimpang cukup nyaman 102 00:04:14,920 --> 00:04:17,404 dari jenis-jenis konvensi dan melakukan hal Anda sendiri. 103 00:04:17,404 --> 00:04:18,820 Selama Anda diri yang konsisten. 104 00:04:18,820 --> 00:04:21,540 Dan kita akan berbicara lebih banyak tentang gaya sedikit kemudian hari. 105 00:04:21,540 --> 00:04:23,200 >> Jadi, biarkan aku membuka satu program lainnya. 106 00:04:23,200 --> 00:04:24,930 Tentu saja, kita harus memperbaikinya 10 juga. 107 00:04:24,930 --> 00:04:32,470 Biarkan aku pergi ke depan dan menulis nyata Program cepat yang saya akan menelepon, 108 00:04:32,470 --> 00:04:38,140 katakanlah, lingkaran dot C. Jadi, lingkaran dot C. Dan dalam lingkaran dot C Aku akan memiliki, 109 00:04:38,140 --> 00:04:41,970 termasuk standar I / O dot H int void main. 110 00:04:41,970 --> 00:04:44,020 Dan sekarang mari kita lakukan, memang, satu lingkaran. 111 00:04:44,020 --> 00:04:46,020 Jadi, 4 int saya mendapat nol. 112 00:04:46,020 --> 00:04:48,660 Saya kurang dari, katakanlah, 50. 113 00:04:48,660 --> 00:04:49,950 Saya ditambah, plus. 114 00:04:49,950 --> 00:04:53,350 Dan kemudian di sini mari kita pergi ke depan dan jangan mencetak F. 115 00:04:53,350 --> 00:04:56,400 Dan kemudian saya ingin mencetak saya dan baris baru, titik koma. 116 00:04:56,400 --> 00:05:00,015 >> Dan ini harus mencetak semua nomor dari nol hingga 50? 117 00:05:00,015 --> 00:05:02,900 118 00:05:02,900 --> 00:05:03,680 Beberapa kepala mengangguk. 119 00:05:03,680 --> 00:05:04,270 Beberapa nos. 120 00:05:04,270 --> 00:05:05,339 Apa bug sudah? 121 00:05:05,339 --> 00:05:06,630 Apa kesalahan mudah saya membuat? 122 00:05:06,630 --> 00:05:07,170 Ya. 123 00:05:07,170 --> 00:05:08,544 >> AUDIENCE: [tidak terdengar]. 124 00:05:08,544 --> 00:05:09,210 SPEAKER 1: Ya. 125 00:05:09,210 --> 00:05:11,520 Jadi meskipun tampak seperti ini adalah apa yang saya ingin, 126 00:05:11,520 --> 00:05:13,920 ingat bahwa saya juga hanya karakter ASCII. 127 00:05:13,920 --> 00:05:14,955 >> Jadi, jika saya mengatakan, cetak "I." 128 00:05:14,955 --> 00:05:16,670 Ini benar-benar akan untuk mencetak I. Jadi, jika saya 129 00:05:16,670 --> 00:05:20,030 ingin plug-in placeholder nilai saya benar-benar perlu melakukan ini 130 00:05:20,030 --> 00:05:22,630 dan kemudian plug-dalam nilai saya secara dinamis. 131 00:05:22,630 --> 00:05:25,200 Kalau tidak aku hanya akan mendapatkan 50 I di layar. 132 00:05:25,200 --> 00:05:28,140 >> Jadi, biarkan aku pergi ke depan dan membuat lingkaran ini, menjalankannya, 133 00:05:28,140 --> 00:05:30,650 dan, memang, kita memiliki semua cara melalui 49. 134 00:05:30,650 --> 00:05:34,140 Dan jika saya gulir kembali kali saya melihat angka nol di awal. 135 00:05:34,140 --> 00:05:36,050 >> Nah, bagaimana jika aku agak mengacaukan? 136 00:05:36,050 --> 00:05:37,800 Bagaimana jika saya melakukan ini? 137 00:05:37,800 --> 00:05:40,120 Hanya karena aku tidak berpikir. 138 00:05:40,120 --> 00:05:40,970 Apa program ini. 139 00:05:40,970 --> 00:05:43,970 Setelah kembali dikompilasi dan dijalankan, akan melakukan secara logis? 140 00:05:43,970 --> 00:05:44,870 >> AUDIENCE: Tidak ada. 141 00:05:44,870 --> 00:05:45,661 >> SPEAKER 1: Tidak ada. 142 00:05:45,661 --> 00:05:47,156 Kenapa itu? 143 00:05:47,156 --> 00:05:49,124 >> AUDIENCE: Aku dirancang untuk nol. 144 00:05:49,124 --> 00:05:51,899 Jadi, kondisi salah. 145 00:05:51,899 --> 00:05:52,940 SPEAKER 1: Ya, persis. 146 00:05:52,940 --> 00:05:55,110 Semua kode benar, sintaksis. 147 00:05:55,110 --> 00:05:57,310 Hal ini akan mengkompilasi, ini Kode akan berjalan, tapi tidak 148 00:05:57,310 --> 00:06:00,110 akan melakukan sesuatu yang berguna karena saya menginisialisasi saya ke nol. 149 00:06:00,110 --> 00:06:02,240 Kami kemudian memeriksa, adalah saya lebih besar dari 50? 150 00:06:02,240 --> 00:06:03,810 Jelas, tidak ada, itu tidak. 151 00:06:03,810 --> 00:06:05,760 Jadi loop tidak pernah mengeksekusi sama sekali. 152 00:06:05,760 --> 00:06:09,580 >> Bagaimana jika kita melakukan sesuatu sedikit lebih sembrono? 153 00:06:09,580 --> 00:06:12,890 Jadi, bagaimana jika kita lakukan seperti int saya mendapat nol. 154 00:06:12,890 --> 00:06:15,640 Dan sekarang saya menggunakan sementara lingkaran, yang kondisi lain. 155 00:06:15,640 --> 00:06:21,810 Dan sementara saya katakan, sementara saya lebih besar dari atau sama dengan nol, dan kemudian di sini saya 156 00:06:21,810 --> 00:06:26,070 pergi ke depan dan menyimpan file, membuat lingkaran. 157 00:06:26,070 --> 00:06:27,070 Dan saya akan menjalankannya. 158 00:06:27,070 --> 00:06:30,230 Apa yang saya akan melihat ini waktu dengan loop sementara? 159 00:06:30,230 --> 00:06:30,852 Ya. 160 00:06:30,852 --> 00:06:32,120 >> AUDIENCE: Sebuah loop tak terbatas? 161 00:06:32,120 --> 00:06:35,360 >> SPEAKER 1: Sebuah loop tak terbatas? 162 00:06:35,360 --> 00:06:36,662 Ya, dan mengapa? 163 00:06:36,662 --> 00:06:38,120 AUDIENCE: Karena itu selalu nol. 164 00:06:38,120 --> 00:06:38,786 SPEAKER 1: Ya. 165 00:06:38,786 --> 00:06:40,100 Jadi, saya diinisialisasi sebagai nol. 166 00:06:40,100 --> 00:06:44,470 Tentu saja aku selalu lebih besar dari atau sama dengan 0 sebagai hasilnya. 167 00:06:44,470 --> 00:06:46,460 Jadi, aku hanya akan melihat ini jauh. 168 00:06:46,460 --> 00:06:49,850 Dan sekarang, ini telah datang sekali atau dua kali untuk kepala kursus ini. 169 00:06:49,850 --> 00:06:52,417 Apa yang terjadi ketika Anda memiliki loop tak terbatas? 170 00:06:52,417 --> 00:06:53,314 >> AUDIENCE: Kontrol C. 171 00:06:53,314 --> 00:06:53,980 SPEAKER 1: Ya. 172 00:06:53,980 --> 00:06:56,250 Jadi Kontrol C akhirnya akan merespon. 173 00:06:56,250 --> 00:06:59,520 Sayangnya, kita sudah dicetak jutaan dan jutaan nol sudah 174 00:06:59,520 --> 00:07:01,520 dan komputer memiliki jenis mendapat depanku. 175 00:07:01,520 --> 00:07:03,394 Jadi, itu akan mengabaikan saya untuk sedikit. 176 00:07:03,394 --> 00:07:06,560 Tetapi jika Anda hanya tekan Control C beberapa kali pada keyboard Mac atau PC Anda, 177 00:07:06,560 --> 00:07:08,790 akhirnya harus, memang, mengakhiri. 178 00:07:08,790 --> 00:07:11,770 Dan jika tidak, kami akan menunjukkan beberapa teknik sebelum lama di mana Anda 179 00:07:11,770 --> 00:07:14,850 benar-benar dapat membunuh secara paksa program, seperti pada Windows dan Mac OS, 180 00:07:14,850 --> 00:07:15,562 jika perlu. 181 00:07:15,562 --> 00:07:16,770 Tapi mari kita mencoba sesuatu yang lain. 182 00:07:16,770 --> 00:07:19,895 Mari kita sebenarnya kenaikan I. Apakah ini masih akan menjadi tak terbatas? 183 00:07:19,895 --> 00:07:22,870 184 00:07:22,870 --> 00:07:25,140 Biarkan aku menjalankan ini. 185 00:07:25,140 --> 00:07:27,090 Dan sekarang Anda bisa jenis melihat apa yang terjadi. 186 00:07:27,090 --> 00:07:30,140 Ini juga merupakan loop tak terbatas. 187 00:07:30,140 --> 00:07:33,080 Tapi ini adalah sedikit pertanyaan jebakan. 188 00:07:33,080 --> 00:07:35,460 Apakah ini akan mencetak angka selamanya? 189 00:07:35,460 --> 00:07:36,647 >> AUDIENCE: 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-- Ya. 194 00:07:41,859 --> 00:07:44,275 AUDIENCE: Anda tidak memiliki cukup bit untuk benar-benar terus. 195 00:07:44,275 --> 00:07:44,730 SPEAKER 1: Baiklah. 196 00:07:44,730 --> 00:07:46,000 Jadi saya tidak punya cukup bit untuk terus berjalan. 197 00:07:46,000 --> 00:07:47,124 Jadi, apa yang akan terjadi? 198 00:07:47,124 --> 00:07:49,320 Itu hanya akan berhenti? 199 00:07:49,320 --> 00:07:52,542 >> AUDIENCE: Pada beberapa titik itu akan menutup the-- 200 00:07:52,542 --> 00:07:54,500 SPEAKER 1: Ini akan menutup loop turun, tapi mengapa? 201 00:07:54,500 --> 00:07:57,950 Apa yang akan terjadi pada akhir batas-batasnya? 202 00:07:57,950 --> 00:07:58,479 Ya? 203 00:07:58,479 --> 00:08:00,520 AUDIENCE: Ini akan siklus kembali ke angka negatif. 204 00:08:00,520 --> 00:08:02,900 SPEAKER 1: Untuk angka negatif, atau jika kita hanya mengobati positif, 205 00:08:02,900 --> 00:08:03,570 nol setidaknya. 206 00:08:03,570 --> 00:08:04,550 Jadi ya, benar-benar. 207 00:08:04,550 --> 00:08:08,059 Ingat bahwa kita melihat terakhir kali bahwa jika Anda kenaikan bit Anda terlalu banyak kali, 208 00:08:08,059 --> 00:08:10,225 dan Anda ada kedepan melimpah kapasitas int Anda 209 00:08:10,225 --> 00:08:13,058 atau apa pun jenis data, Anda akan membungkus, mungkin, 210 00:08:13,058 --> 00:08:14,020 dua angka negatif. 211 00:08:14,020 --> 00:08:16,644 Atau jika Anda telah menentukan bahwa Anda Kisaran hanya harus positif, 212 00:08:16,644 --> 00:08:18,560 yang dapat Anda lakukan, tetapi kita sudah tidak melihat yang belum, 213 00:08:18,560 --> 00:08:21,420 Anda mungkin berakhir setidaknya kembali nol. 214 00:08:21,420 --> 00:08:22,410 Meskipun, sebenarnya ya. 215 00:08:22,410 --> 00:08:24,320 Dalam hal ini, negatif angka, dalam hal 216 00:08:24,320 --> 00:08:26,870 loop akan mengakhiri karena saya tidak, pada kenyataannya, 217 00:08:26,870 --> 00:08:29,220 lebih besar dari atau sama dengan nol jika itu negatif. 218 00:08:29,220 --> 00:08:31,780 >> Jadi, sayangnya, bagaimana panjang akan kami harus menunggu? 219 00:08:31,780 --> 00:08:35,490 Sekarang kita sampai apa, 2 juta-ish? 220 00:08:35,490 --> 00:08:37,705 Kami seperti 2 miliar, kita akan harus menunggu 221 00:08:37,705 --> 00:08:39,330 sampai kita benar-benar dapat melihat gejala ini. 222 00:08:39,330 --> 00:08:46,200 Tapi kita bisa melihat sedikit lebih cepat, maybe-- mari kita lihat apakah kita bisa mengganggu. 223 00:08:46,200 --> 00:08:46,700 Ayolah. 224 00:08:46,700 --> 00:08:49,500 225 00:08:49,500 --> 00:08:51,331 Bahkan 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, kami akan kembali ke yang lama. 228 00:08:54,270 --> 00:08:56,320 Ini adalah baik time-- sialan itu, anak anjing. 229 00:08:56,320 --> 00:08:58,280 >> Ini adalah waktu yang baik untuk beberapa pengumuman. 230 00:08:58,280 --> 00:09:01,225 Jadi, jika Anda mungkin ingin untuk terlibat dalam YHack, 231 00:09:01,225 --> 00:09:03,600 yang acara yang disponsori oleh teman-teman kita di Yale. 232 00:09:03,600 --> 00:09:05,990 Dan, memang, beberapa saja yang TF di Yale yang terlibat dengan ini. 233 00:09:05,990 --> 00:09:08,610 YHack adalah internasional hack-a-thon yang diselenggarakan oleh dan mengadakan 234 00:09:08,610 --> 00:09:12,395 di Yale, menyatukan 1.500 seperti hacker berpikiran dan kreatif 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 terlalu singkat pada layar, lihatlah slide 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 cepat. 240 00:09:21,080 --> 00:09:24,410 Jadi, secara resmi akan mulai bagian minggu depan baik di sini dan New Haven. 241 00:09:24,410 --> 00:09:27,660 Perlu diingat Anda akan mendapatkan email kemudian akhir pekan ini kemungkinan besar. 242 00:09:27,660 --> 00:09:29,390 Dibutuhkan waktu yang lama untuk CS50 ke bagian, 243 00:09:29,390 --> 00:09:32,080 mengingat semua orang di kelas dan semua orang bergerak di sekitar. 244 00:09:32,080 --> 00:09:34,871 Dan semua Fellows Pengajaran ' jadwal juga masih memperkuat, 245 00:09:34,871 --> 00:09:38,110 tetapi menantikan untuk email dan jika perlu akan, Anda dapat kembali bagian sana setelah. 246 00:09:38,110 --> 00:09:39,580 >> Study.cs50.net. 247 00:09:39,580 --> 00:09:43,280 Jadi, bahkan jika Anda seorang peserta konstan di bagian, menyadari bahwa hampir semua 248 00:09:43,280 --> 00:09:46,786 dari sumber daya yang kami gunakan di bagian yang tersedia untuk 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 ingin kembali ulasan bahan dari bagian, atau membaca ke depan, 251 00:09:51,630 --> 00:09:54,170 atau Anda tidak dapat membuat beberapa minggu, menyadari bahwa sampel slide, 252 00:09:54,170 --> 00:09:58,210 dan masalah, dan definisi, dan banyak lagi semua ada juga. 253 00:09:58,210 --> 00:10:00,645 >> Jam kantor melanjutkan hari ini, dan besok, dan Rabu, 254 00:10:00,645 --> 00:10:03,020 dan Kamis periksa saja yang website untuk jadwal. 255 00:10:03,020 --> 00:10:05,690 >> Dan juga, sekarang meluncurkan hari ini adalah CS50 Diskusikan. 256 00:10:05,690 --> 00:10:09,230 Jadi, jika dan ketika Anda memiliki pertanyaan untuk satu sama lain atau untuk staf saja yang, 257 00:10:09,230 --> 00:10:12,099 dan umumnya bekerja pada beberapa masalah set, 258 00:10:12,099 --> 00:10:15,015 menyadari bahwa Anda tidak harus harus beralih ke manusia berikutnya Anda. 259 00:10:15,015 --> 00:10:17,810 Jika ada satu ada di sana, Anda bisa menjangkau kami dan teman-teman sekelas 260 00:10:17,810 --> 00:10:19,890 online melalui CS50 Diskusikan. 261 00:10:19,890 --> 00:10:22,600 Jadi, ini adalah diskusi papan untuk kursus, 262 00:10:22,600 --> 00:10:24,550 dan menyadari bahwa ini mungkin yang terbaik 263 00:10:24,550 --> 00:10:28,480 tempat untuk memulai ketika Anda memiliki pertanyaan saat di luar jam kantor 264 00:10:28,480 --> 00:10:29,470 secara khusus. 265 00:10:29,470 --> 00:10:31,070 >> Makan siang akan memulai minggu ini juga. 266 00:10:31,070 --> 00:10:33,170 Pada Fire and Ice [Tidak terdengar] di New Haven. 267 00:10:33,170 --> 00:10:35,379 Lihatlah kursus ini situs untuk RSVP. 268 00:10:35,379 --> 00:10:36,753 Pertama datang, pertama melayani untuk itu. 269 00:10:36,753 --> 00:10:39,380 Jika Anda tidak mendapatkan dalam minggu ini kami akan melakukan ini paling setiap hari Jumat 270 00:10:39,380 --> 00:10:40,400 selama istilah. 271 00:10:40,400 --> 00:10:41,830 >> OK, dan sekarang kata tentang grading. 272 00:10:41,830 --> 00:10:44,690 Terutama saat kita memasuki masalah menetapkan satu, yang keluar minggu ini, 273 00:10:44,690 --> 00:10:46,670 dan masalah mengatur dua dan selanjutnya. 274 00:10:46,670 --> 00:10:51,680 Bagaimana kita pergi tentang evaluasi P set dan mengevaluasi kualitas daripadanya? 275 00:10:51,680 --> 00:10:55,560 Jadi, itu empat sumbu yang kita gunakan dalam CS50, dan mereka empat sini. 276 00:10:55,560 --> 00:10:59,200 >> Lingkup, yang menangkap pada numerik yang dasar berapa banyak dari P set 277 00:10:59,200 --> 00:10:59,860 apakah Anda mengatasi. 278 00:10:59,860 --> 00:11:02,890 Ini kira-kira sesuai dengan usaha, dan itu cara kita menangkap 279 00:11:02,890 --> 00:11:05,190 Anda mencoba setengah P mengatur, semua P set. 280 00:11:05,190 --> 00:11:08,860 Ini adalah mudah untuk mendapatkan yang sempurna skor pada jika Anda melakukannya, memang, 281 00:11:08,860 --> 00:11:11,020 mencoba setiap aspek dari P set. 282 00:11:11,020 --> 00:11:12,010 Jadi, ingat-ingat. 283 00:11:12,010 --> 00:11:13,420 >> Kebenaran adalah persis seperti itu. 284 00:11:13,420 --> 00:11:17,760 Tidak bekerja kode Anda sebagai spesifikasi dan sebagai solusi sampel staf ' 285 00:11:17,760 --> 00:11:19,730 menunjukkan bahwa kode Anda harus, pada kenyataannya, bekerja. 286 00:11:19,730 --> 00:11:23,260 Periksa 50, jika Anda belum bertemu itu namun, dalam P menetapkan satu spesifikasi 287 00:11:23,260 --> 00:11:25,060 dan akan umumnya memberikan jawaban ya / tidak 288 00:11:25,060 --> 00:11:26,518 apakah kode Anda benar. 289 00:11:26,518 --> 00:11:30,680 Setidaknya sejauh kita akan untuk mengevaluasi itu didasarkan pada tes 290 00:11:30,680 --> 00:11:32,430 yang kita jalankan dalam program itu. 291 00:11:32,430 --> 00:11:33,850 >> Desain jauh lebih subjektif. 292 00:11:33,850 --> 00:11:35,994 Ini adalah seberapa baik ditulis adalah kode Anda. 293 00:11:35,994 --> 00:11:38,410 Dan ini adalah sesuatu yang Anda akan mendapatkan lebih baik di waktu ke waktu, 294 00:11:38,410 --> 00:11:41,201 dan itu adalah sesuatu yang kita akan memberikan umpan balik yang lebih kualitatif tentang. 295 00:11:41,201 --> 00:11:43,350 Dan dengan desain saya mungkin berarti sebelum lama Anda 296 00:11:43,350 --> 00:11:47,650 mungkin tergoda dalam beberapa P mengatur untuk melakukan sesuatu loopingly, 297 00:11:47,650 --> 00:11:51,590 tetapi untuk memiliki mungkin tiga, atau empat, atau lima loop kedepan bersarang atau bersarang sementara 298 00:11:51,590 --> 00:11:52,090 loop. 299 00:11:52,090 --> 00:11:54,130 Yang umumnya harus mulai membuat Anda merasa ngeri 300 00:11:54,130 --> 00:11:56,070 dan umumnya akan dianggap desain yang buruk. 301 00:11:56,070 --> 00:11:59,490 Dan Anda akan mulai melihat di kelas dan dari cara kelas yang baik dalam melakukan sesuatu, 302 00:11:59,490 --> 00:12:02,920 cara buruk untuk melakukan hal-hal yang mungkin semua benar, tapi tidak 303 00:12:02,920 --> 00:12:04,304 tentu dirancang dengan baik. 304 00:12:04,304 --> 00:12:05,220 Seperti menulis esai. 305 00:12:05,220 --> 00:12:08,100 Anda mungkin dapat menempatkan kata-kata pada Halaman yang tata bahasa yang benar, 306 00:12:08,100 --> 00:12:10,016 tetapi esai atau tesis mereka di hanya 307 00:12:10,016 --> 00:12:11,810 benar-benar tidak koheren atau persuasif. 308 00:12:11,810 --> 00:12:15,930 Dan sehingga mungkin analog di dunia tertulis buruk atau baik desain. 309 00:12:15,930 --> 00:12:18,490 >> Dan gaya, juga, cukup subjektif. 310 00:12:18,490 --> 00:12:20,060 Tapi setidaknya kami berharap konsistensi. 311 00:12:20,060 --> 00:12:21,480 Ini adalah bagaimana cantik adalah kode Anda. 312 00:12:21,480 --> 00:12:22,840 Apakah hal baik menjorok? 313 00:12:22,840 --> 00:12:26,600 Apakah variabel Anda juga bernama / Apakah semua kurung dan kurung kurawal 314 00:12:26,600 --> 00:12:27,920 selaras seperti yang seharusnya? 315 00:12:27,920 --> 00:12:31,490 Kami memiliki panduan gaya CS50 sebagai set masalah akan mengarahkan Anda pada. 316 00:12:31,490 --> 00:12:33,730 Mereka lebih nyaman adalah Selamat datang untuk menyimpang dari yang 317 00:12:33,730 --> 00:12:35,771 asalkan Anda sendiri konsisten. 318 00:12:35,771 --> 00:12:38,020 Dan ini juga merupakan pelajaran kami akan memperkuat di bagian. 319 00:12:38,020 --> 00:12:40,990 Jadi, jika semua ini adalah sedikit cepat, menyadari set P dan bagian 320 00:12:40,990 --> 00:12:42,900 akan masuk ke kedalaman lebih lama. 321 00:12:42,900 --> 00:12:45,490 >> Namun umumnya kita memiliki sangat sedikit ember untuk CS50. 322 00:12:45,490 --> 00:12:48,170 Skor umumnya dalam skala satu sampai tiga, atau 1-5. 323 00:12:48,170 --> 00:12:50,836 Kami literally-- dan saya tidak bisa mengatakan ini cukup di minggu pertama. 324 00:12:50,836 --> 00:12:51,582 Tiga baik. 325 00:12:51,582 --> 00:12:54,290 Jadi, meskipun, ya, tiga lima biasanya, matematis, 326 00:12:54,290 --> 00:12:57,240 mungkin 60 persen atau seperti minus D. 327 00:12:57,240 --> 00:12:58,840 Tiga, pada kenyataannya, baik. 328 00:12:58,840 --> 00:13:01,050 Dan, pada kenyataannya, kita berharap sebagian besar siswa di kelas 329 00:13:01,050 --> 00:13:04,280 untuk memulai istilah sekitar berpasangan, dan bertiga, dan merangkak. 330 00:13:04,280 --> 00:13:05,510 Mungkin tidak begitu banyak balita. 331 00:13:05,510 --> 00:13:06,661 Tidak terlalu banyak yang. 332 00:13:06,661 --> 00:13:08,910 Tetapi umumnya dimulai pada tempat yang manis dalam kurva 333 00:13:08,910 --> 00:13:11,694 sehingga sebagai waktu berjalan, sebenarnya ada ruang untuk, 334 00:13:11,694 --> 00:13:13,360 dan kesempatan untuk kemajuan 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 Ini jauh lebih abstrak dari itu. 337 00:13:17,410 --> 00:13:20,160 Rumus yang kita menghitung nilai tertimbang sebagai berikut. 338 00:13:20,160 --> 00:13:21,610 Kebenaran bernilai paling. 339 00:13:21,610 --> 00:13:23,010 Desain 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 umumnya menangkap jumlah waktu 342 00:13:26,950 --> 00:13:29,800 yang masuk ke masing-masing mendapatkan sumbu ini tepat. 343 00:13:29,800 --> 00:13:31,810 Gaya super mudah, harus super cepat, 344 00:13:31,810 --> 00:13:33,657 tapi itu kebiasaan mudah untuk mendapatkan malas tentang. 345 00:13:33,657 --> 00:13:35,490 Kebenaran mungkin mengambil Anda sebagian besar waktu. 346 00:13:35,490 --> 00:13:38,990 Memburu beberapa mungkin bug mengambil jam tambahan atau lebih, 347 00:13:38,990 --> 00:13:41,737 dan begitu, gol akhirnya menangkap itu. 348 00:13:41,737 --> 00:13:43,070 Dan, sekarang kata yang lebih serius. 349 00:13:43,070 --> 00:13:45,240 Sejak CS50 memiliki perbedaan, untuk lebih baik 350 00:13:45,240 --> 00:13:47,440 atau buruk, menjadi mungkin lebih baik berkenalan 351 00:13:47,440 --> 00:13:50,065 dengan masalah akademik kejujuran daripada kebanyakan kursus lainnya. 352 00:13:50,065 --> 00:13:53,720 Dan memang, itu adalah untuk pengetahuan saya yang kami mengirim lebih banyak mahasiswa, sayangnya, 353 00:13:53,720 --> 00:13:56,690 untuk tujuan disiplin setiap tahun sebagai hasilnya. Jadi, 354 00:13:56,690 --> 00:13:59,040 untuk kepentingan penuh pengungkapan, mari kita bicara sebentar 355 00:13:59,040 --> 00:14:02,820 tentang apa yang terjadi di CS50, dan apa yang Anda dapat dilakukan, dan apa yang Anda dapat sadar. 356 00:14:02,820 --> 00:14:05,530 >> Jadi, di sini sejak 2007, ketika Aku mewarisi saja, 357 00:14:05,530 --> 00:14:07,870 adalah jumlah kasus Dewan Ad. 358 00:14:07,870 --> 00:14:10,690 Dewan iklan adalah disiplin Harvard tubuh, atau sekarang Honor Counsel, 359 00:14:10,690 --> 00:14:13,790 yang kasus dirujuk ketika siswa melakukan sesuatu yang tentu saja itu 360 00:14:13,790 --> 00:14:15,470 silabus menganggap tidak masuk akal. 361 00:14:15,470 --> 00:14:17,220 Tidak ada pola yang nyata di sini, saya akan mengatakan. 362 00:14:17,220 --> 00:14:19,530 Ini berfluktuasi selama tahun tetapi umumnya 363 00:14:19,530 --> 00:14:22,262 ini adalah jumlah kasus yang dirujuk. 364 00:14:22,262 --> 00:14:23,970 Jumlah siswa yang terlibat? 365 00:14:23,970 --> 00:14:25,290 Juga bervariasi. 366 00:14:25,290 --> 00:14:27,930 Biasanya, tahun lalu untuk Misalnya, 29 mahasiswa di Harvard 367 00:14:27,930 --> 00:14:29,740 adalah Iklan Boarded, sehingga untuk berbicara. 368 00:14:29,740 --> 00:14:32,670 29 dari mereka siswa saat ini, dua dari mereka siswa sebelum, 369 00:14:32,670 --> 00:14:35,610 yang berkolaborasi dalam beberapa cara yang tak diinginkan. 370 00:14:35,610 --> 00:14:38,400 Dan kemudian dalam hal persentase, biasanya sekitar 3% 371 00:14:38,400 --> 00:14:41,360 kelas yang, sayangnya, membuat jenis-jenis keputusan. 372 00:14:41,360 --> 00:14:44,470 >> Jadi, tahun lalu itu 3,5% tubuh mahasiswa CS50 ini 373 00:14:44,470 --> 00:14:46,820 itu Ad Boarded, sehingga untuk berbicara. 374 00:14:46,820 --> 00:14:48,490 >> Jadi, apa semua ini berarti? 375 00:14:48,490 --> 00:14:49,660 Dan apa yang kita benar-benar melakukannya? 376 00:14:49,660 --> 00:14:52,930 >> Jadi, untuk pengungkapan penuh, kami benar-benar, sebagai ilmuwan komputer, 377 00:14:52,930 --> 00:14:57,620 memiliki perangkat lunak yang kita miliki dan itu sangat mudah bagi kita, dalam keadilan, 378 00:14:57,620 --> 00:15:00,980 teman sekelas yang lain yang tidak melintasi garis-garis ini untuk menyeberang membandingkan 379 00:15:00,980 --> 00:15:04,570 setiap pengajuan tahun ini terhadap setiap pengajuan selama delapan tahun terakhir. 380 00:15:04,570 --> 00:15:05,445 Software melakukan hal ini. 381 00:15:05,445 --> 00:15:07,440 Dan akhirnya itu mata manusia yang memutuskan 382 00:15:07,440 --> 00:15:11,410 apakah atau tidak untuk merujuk beberapa penting untuk ajudikasi lanjut, 383 00:15:11,410 --> 00:15:12,737 tapi software pasti membantu. 384 00:15:12,737 --> 00:15:15,820 Dan ini, terus terang, mengapa yang saya pikir kami memiliki jumlah besar seperti di CS50. 385 00:15:15,820 --> 00:15:18,540 Ini bukan karena CS50 siswa atau mahasiswa CS lebih 386 00:15:18,540 --> 00:15:20,840 umumnya kurang jujur daripada siswa lain, 387 00:15:20,840 --> 00:15:22,340 itu hanya kita memiliki alat dan teknik 388 00:15:22,340 --> 00:15:24,095 yang dapat digunakan untuk mengambil lulus pertama ini. 389 00:15:24,095 --> 00:15:25,960 >> Tapi kita mengawasi pada semua hal ini 390 00:15:25,960 --> 00:15:30,340 juga, lagi, untuk kepentingan mengakui pekerjaan yang dimasukkan 391 00:15:30,340 --> 00:15:32,397 oleh mayoritas super kelas. 392 00:15:32,397 --> 00:15:34,230 Dan kebijakan saja yang kejujuran akademik, 393 00:15:34,230 --> 00:15:37,021 meskipun itu sekelompok paragraf panjang dengan sekelompok peluru 394 00:15:37,021 --> 00:15:40,490 yang mudah-mudahan cukup mudah dibaca, itu benar-benar mendidih hingga masuk akal. 395 00:15:40,490 --> 00:15:44,000 Dan aturan terbaik praktis yang kami menawarkan up dalam silabus 396 00:15:44,000 --> 00:15:46,020 adalah ini, esensi dari semua pekerjaan yang Anda 397 00:15:46,020 --> 00:15:47,850 tunduk kursus ini harus Anda sendiri. 398 00:15:47,850 --> 00:15:51,510 Dan memang, di hampir semua dari mereka kasus dirujuk untuk tindakan disipliner 399 00:15:51,510 --> 00:15:55,640 itu karena beberapa terlambat satu mahasiswa malam biasanya berbalik kode nya 400 00:15:55,640 --> 00:15:58,130 lebih langsung untuk teman sekelas, yang kemudian diadopsi itu 401 00:15:58,130 --> 00:16:00,840 secara keseluruhan atau signifikan daripadanya. 402 00:16:00,840 --> 00:16:02,680 >> Tapi benar-benar, ini adalah OK. 403 00:16:02,680 --> 00:16:04,684 Dan memang, di kantor jam, slip kertas 404 00:16:04,684 --> 00:16:07,850 Anda telah diserahkan jika Anda datang ke kantor jam pekan lalu mendorong lebih banyak. 405 00:16:07,850 --> 00:16:09,710 Anda benar-benar menyambut dan mendorong 406 00:16:09,710 --> 00:16:12,340 untuk membahas masalah set dengan teman sekelas. 407 00:16:12,340 --> 00:16:14,461 Untuk saling membantu ketika tersandung. 408 00:16:14,461 --> 00:16:17,710 Tetapi umumnya aturan praktis harus menjadi ini, "ketika Anda meminta bantuan, 409 00:16:17,710 --> 00:16:20,412 Anda mungkin menunjukkan kode Anda kepada orang lain, tapi Anda mungkin tidak melihat mereka. " 410 00:16:20,412 --> 00:16:22,620 Jadi, dengan kata lain, jika saya berjuang dengan beberapa set P 411 00:16:22,620 --> 00:16:25,290 dan aku duduk di sana di makan aula, atau di perpustakaan, 412 00:16:25,290 --> 00:16:28,470 atau di dalam kelas mencoba untuk menemukan beberapa kesalahan, 413 00:16:28,470 --> 00:16:30,340 Aku pasti bisa menunjukkan kode saya di layar saya 414 00:16:30,340 --> 00:16:32,590 untuk orang yang duduk di sebelah bagi saya, tentu staf, 415 00:16:32,590 --> 00:16:33,600 tetapi juga teman sekelas. 416 00:16:33,600 --> 00:16:36,580 Tetapi jika solusi yang teman sekelas saya menawarkan adalah, oh, 417 00:16:36,580 --> 00:16:39,200 di sini hanya kita lihat apa yang Saya lakukan, yang melintasi garis. 418 00:16:39,200 --> 00:16:43,120 >> Dan saya berani mengatakan bahwa umumnya hal yang wajar bagi kebanyakan orang 419 00:16:43,120 --> 00:16:45,030 untuk dengan mudah melihat garis. 420 00:16:45,030 --> 00:16:47,195 Dan, lihat silabus untuk lebih detail. 421 00:16:47,195 --> 00:16:49,070 Dan sekarang salah satu yang lebih aspek kontroversial 422 00:16:49,070 --> 00:16:52,529 dari CS50 silabus yang saya pikir saya akan berbicara dalam kesimpulan di sini 423 00:16:52,529 --> 00:16:53,820 adalah disebut penyesalan klausa. 424 00:16:53,820 --> 00:16:55,340 Jadi, inilah semua baik cetak. 425 00:16:55,340 --> 00:16:58,090 Tapi secara umum kita telah melihat selama 8 tahun terakhir ditambah 426 00:16:58,090 --> 00:17:01,510 bahwa, memang, hampir semua CS50 ini kasus ketidakjujuran akademik 427 00:17:01,510 --> 00:17:04,390 telah hasil dari hanya miskin pengambilan keputusan larut malam. 428 00:17:04,390 --> 00:17:07,144 Hasil stress, hasilnya kurangnya makan, kurang tidur, 429 00:17:07,144 --> 00:17:09,560 terlalu banyak P set, terlalu banyak tenggat waktu, terlalu banyak komitmen. 430 00:17:09,560 --> 00:17:13,520 Stres membangun di 2:00, 03:00 AM, 04:00, dengan tenggat waktu menjulang. 431 00:17:13,520 --> 00:17:17,020 Kebanyakan siswa dalam kasus ini telah membuat keputusan yang buruk 432 00:17:17,020 --> 00:17:20,619 bahwa mereka mungkin sangat baik menyesali keesokan harinya jika tidak menit kemudian, 433 00:17:20,619 --> 00:17:25,490 tetapi sampai tahun lalu tidak ada rilis katup bahwa siswa tersebut bisa 434 00:17:25,490 --> 00:17:29,140 sebenarnya membuka untuk benar-benar mengatasi Masalah kepala tanpa takut 435 00:17:29,140 --> 00:17:30,850 boot dari perguruan tinggi sama sekali. 436 00:17:30,850 --> 00:17:33,260 >> Dan, memang, kami memperkenalkan penyesalan ini klausul tahun lalu, 437 00:17:33,260 --> 00:17:35,970 yang mengatakan bahwa jika dalam 72 jam, tiga hari, 438 00:17:35,970 --> 00:17:37,970 dari persimpangan beberapa baris ditentukan dalam silabus 439 00:17:37,970 --> 00:17:41,178 Anda datang ke depan untuk salah satu saja yang kepala dan kami akan ngobrol tentang hal itu. 440 00:17:41,178 --> 00:17:43,720 Ada masih ada beberapa hasil, bertentangan dengan apa yang 441 00:17:43,720 --> 00:17:44,990 dilaporkan sebaliknya. 442 00:17:44,990 --> 00:17:49,190 Masih ada beberapa hasil yang adalah ditindaklanjuti oleh kursus, 443 00:17:49,190 --> 00:17:51,611 umumnya zeroing P set atau mengambil beberapa tindakan lainnya, 444 00:17:51,611 --> 00:17:53,610 tapi kami akan, memang, menanganinya sendiri dan tidak 445 00:17:53,610 --> 00:17:58,460 merujuk tinggi yang hasilnya mungkin jauh lebih parah. 446 00:17:58,460 --> 00:18:01,810 Dan, memang, untuk berbagi apa yang terjadi tahun lalu, dalam delapan tahun, dan sekarang 447 00:18:01,810 --> 00:18:04,950 sembilan tahun, mengajar kursus ini dan setelah bermain-main dengan berbagai tombol, 448 00:18:04,950 --> 00:18:07,866 memutar berbagai cepat selama masa lalu beberapa tahun pada kejujuran akademik, 449 00:18:07,866 --> 00:18:11,920 dan melihat per data tidak jelas dampak, bahkan pidato seperti ini, 450 00:18:11,920 --> 00:18:15,490 ini adalah tangan bawah yang terbaik kami telah memperkenalkan pedagogis 451 00:18:15,490 --> 00:18:18,090 dalam delapan tahun bersama baris-baris di CS50. 452 00:18:18,090 --> 00:18:21,010 >> 19 siswa maju di bawah klausul ini tahun lalu. 453 00:18:21,010 --> 00:18:23,389 Kami tidak mengambil tindakan untuk tujuh orang siswa, 454 00:18:23,389 --> 00:18:25,430 menentukan bahwa mereka tidak perlu khawatir. 455 00:18:25,430 --> 00:18:27,304 Mereka tidak, pada kenyataannya, melintasi garis, tetapi 456 00:18:27,304 --> 00:18:28,960 adalah chatting baik untuk memiliki tetap. 457 00:18:28,960 --> 00:18:31,190 Kami memusatkan perhatian 11 dari skor yang diajukan. 458 00:18:31,190 --> 00:18:33,840 Dan dalam satu kasus kami meminta siswa untuk melakukan masalah ditetapkan. 459 00:18:33,840 --> 00:18:36,370 Tapi yang lebih menarik, jujur, dengan ini 19 chatting, 460 00:18:36,370 --> 00:18:39,020 yang cara yang lebih dari saya diharapkan memiliki, masing-masing 461 00:18:39,020 --> 00:18:41,370 10 menit untuk mungkin sebuah jam lama, juga membawa 462 00:18:41,370 --> 00:18:44,920 untuk menyalakan sejumlah isu mengenai masalah keluarga, masalah teman, 463 00:18:44,920 --> 00:18:46,940 masalah kesehatan mental bahwa kita kemudian terlibat, 464 00:18:46,940 --> 00:18:50,200 dengan siswa berkah, warga dekan, atau teman, atau nomor lain 465 00:18:50,200 --> 00:18:51,450 sumber daya dukungan. 466 00:18:51,450 --> 00:18:54,454 Jadi bahwa ini adalah jauh salah satu dari penggunaan terbaik dari waktu kita 467 00:18:54,454 --> 00:18:55,870 dan salah satu intervensi terbaik. 468 00:18:55,870 --> 00:18:58,870 >> Dengan mengatakan bahwa, itu tidak ada masukan pada tingkat deteksi 469 00:18:58,870 --> 00:19:00,909 ketidakjujuran akademik lebih umum. 470 00:19:00,909 --> 00:19:02,950 Dan saya berani mengatakan, bagian ini mahasiswa tahun lalu 471 00:19:02,950 --> 00:19:06,350 adalah demografi yang kita sebelumnya tidak pernah diidentifikasi sebelumnya 472 00:19:06,350 --> 00:19:08,140 dan tidak pernah berhubungan dengan sebelumnya. 473 00:19:08,140 --> 00:19:10,020 Dan, ini adalah kisah sukses indah 474 00:19:10,020 --> 00:19:13,390 meskipun mereka dibawa ke cahaya dalam waktu kurang dari keadaan optimal. 475 00:19:13,390 --> 00:19:15,640 Jadi, ingatlah ini ketika Anda membuat, mungkin, 476 00:19:15,640 --> 00:19:17,390 beberapa keputusan yang buruk sendiri larut malam, 477 00:19:17,390 --> 00:19:20,151 bahwa ada jalan begitu lama sebagai mahasiswa dalam situasi yang 478 00:19:20,151 --> 00:19:23,400 memiliki dan maju ke depan sehingga kita bisa memiliki jenis chatting dan menghadapinya 479 00:19:23,400 --> 00:19:27,310 dengan cara yang pendidikan, dan kemudian kita bisa menempatkannya di belakang kami hari berikutnya. 480 00:19:27,310 --> 00:19:30,335 >> Jadi tanpa basa-basi, mengambil tepi off dari percakapan ini, 481 00:19:30,335 --> 00:19:35,080 alasan anak-anak anjing yang up hanya untuk memecahkan es sejenak. 482 00:19:35,080 --> 00:19:39,560 Dan sayangnya, mereka semua tidur, tapi apa yang seharusnya terjadi di sini 483 00:19:39,560 --> 00:19:41,760 adalah setiap orang seharusnya untuk kekaguman dan jenis bersantai 484 00:19:41,760 --> 00:19:43,910 setelah itu percakapan yang sangat berat. 485 00:19:43,910 --> 00:19:46,930 Namun ternyata saya menempatkan anak-anak anjing untuk tidur. 486 00:19:46,930 --> 00:19:50,070 Tetapi jika Anda pergi ke CS50 ini anak anjing situs slash, 487 00:19:50,070 --> 00:19:51,610 Anda dapat melihat mereka sepanjang hari. 488 00:19:51,610 --> 00:19:55,280 Terutama mungkin 02:00, atau 03:00, atau 04:00 di malam hari 489 00:19:55,280 --> 00:19:57,480 untuk melihat menghilangkan stres sedikit ada. 490 00:19:57,480 --> 00:19:58,805 Jadi yang memangkas 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 Bukankah itu menyenangkan? 494 00:20:03,020 --> 00:20:04,200 OKE. 495 00:20:04,200 --> 00:20:07,140 Jadi, kembali ke beberapa komputer ilmu pengetahuan, kalau boleh. 496 00:20:07,140 --> 00:20:10,600 >> Jadi, ingat bahwa terakhir kali kita mulai melihat tidak hanya pada utama, yang 497 00:20:10,600 --> 00:20:13,930 adalah fungsi default, ketika bendera hijau diklik setara, 498 00:20:13,930 --> 00:20:16,999 tapi kami juga mulai sebentar menulis beberapa fungsi kita sendiri. 499 00:20:16,999 --> 00:20:20,040 Dan sejauh ini tidak ada fungsi-fungsi ini telah sangat besar atau gemuk. 500 00:20:20,040 --> 00:20:24,570 Anda akan masuk ke mereka lebih besar fungsi mungkin, P set 2, P 3 set, 501 00:20:24,570 --> 00:20:26,410 pasti P mengatur 4 dan seterusnya. 502 00:20:26,410 --> 00:20:29,340 Sekarang sebagian besar program Anda, jika tidak semua dari mereka, tentu untuk P 503 00:20:29,340 --> 00:20:31,550 set 1 dapat dilakukan sepenuhnya di 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 bahkan 20 garis panjang, sempurna wajar untuk menulis itu 506 00:20:37,070 --> 00:20:40,930 semua di utama dan tidak lebih dari menyulitkan kode Anda, tapi apa yang kita lakukan hari ini 507 00:20:40,930 --> 00:20:44,360 dan seterusnya berusaha untuk juga memperkenalkan beberapa teknik desain yang baik 508 00:20:44,360 --> 00:20:48,660 sehingga sebagai kode Anda akan lebih rumit dan sebagai masalah 509 00:20:48,660 --> 00:20:51,690 Anda ingin mendapatkan lebih keras dan memecahkan lebih menarik Anda memiliki, semacam, 510 00:20:51,690 --> 00:20:55,850 alat-alat dalam kotak peralatan Anda dengan yang untuk merancang solusi yang baik bagi mereka. 511 00:20:55,850 --> 00:21:01,210 >> Jadi, mari kita lihat kembali pada program ini dari minggu lalu saya, yang 512 00:21:01,210 --> 00:21:06,550 adalah fungsi nol dot C. Dan melihat bahwa, cukup sederhana, 513 00:21:06,550 --> 00:21:10,310 terlihat seperti ini dengan dua fungsi, utama dan nama cetak. 514 00:21:10,310 --> 00:21:13,160 Dan berpikir kembali atau mungkin reverse engineering hari ini, 515 00:21:13,160 --> 00:21:16,880 apa motivasi untuk memperkenalkan fungsi sejalan 28 disebut, 516 00:21:16,880 --> 00:21:18,180 Nama cetak? 517 00:21:18,180 --> 00:21:21,745 Atau apa ini contoh di hal prinsip atau takeaway, 518 00:21:21,745 --> 00:21:22,605 jika kamu mau. 519 00:21:22,605 --> 00:21:26,560 520 00:21:26,560 --> 00:21:27,300 Beberapa murmur. 521 00:21:27,300 --> 00:21:28,830 Apa? 522 00:21:28,830 --> 00:21:32,210 >> Ya penguraian sehingga Fungsional adalah jenis cara mewah untuk mengatakan, 523 00:21:32,210 --> 00:21:34,690 terurai program Anda menjadi bagian-bagian penyusunnya 524 00:21:34,690 --> 00:21:37,530 dan kemudian menggunakan bagian-bagian untuk merakit keseluruhan. 525 00:21:37,530 --> 00:21:39,620 Jadi, itu juga hanya jenis dari seteguk sudah, 526 00:21:39,620 --> 00:21:42,050 tapi ini mungkin bahkan contoh yang lebih baik dari sesuatu 527 00:21:42,050 --> 00:21:43,081 hanya disebut abstraksi. 528 00:21:43,081 --> 00:21:43,580 Benar? 529 00:21:43,580 --> 00:21:46,950 Abstraksi akan menjadi salah satu tema berulang di CS50 530 00:21:46,950 --> 00:21:49,085 dan juga ilmu komputer lebih umum karena itu 531 00:21:49,085 --> 00:21:53,060 teknik dengan mana Anda dapat memecahkan masalah lebih efektif karena Anda 532 00:21:53,060 --> 00:21:56,807 dapat menulis solusi yang lebih intuitif dan dengan cara yang skala 533 00:21:56,807 --> 00:21:58,390 dan dimengerti oleh orang lain. 534 00:21:58,390 --> 00:21:59,860 Apa yang saya maksud dengan itu? 535 00:21:59,860 --> 00:22:04,340 >> Jadi, bisa dibilang jauh lebih mudah dibaca untuk melihat program seperti ini, 536 00:22:04,340 --> 00:22:05,990 super pendek meskipun. 537 00:22:05,990 --> 00:22:10,050 Bila Anda melihat pada baris 22 yang ada fungsi disebut, nama cetak. 538 00:22:10,050 --> 00:22:12,620 Nama itu saja mengatakan apa yang dilakukannya. 539 00:22:12,620 --> 00:22:15,780 Fungsi yang tampaknya mengambil masukan antara kurung nya, 540 00:22:15,780 --> 00:22:18,600 dan tampaknya melakukan sesuatu, mungkin mencetak nama. 541 00:22:18,600 --> 00:22:20,880 Dan, meskipun kita benar-benar bisa memiliki 542 00:22:20,880 --> 00:22:25,280 melakukan apa yang kami lakukan seminggu yang lalu, yang hanya mengambil baris ini sebenarnya kode, 543 00:22:25,280 --> 00:22:28,710 menyingkirkan ini, dan mendapatkan menyingkirkan ini semua bersama-sama, 544 00:22:28,710 --> 00:22:31,436 kita semacam disarikan pergi gagasan 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 memiliki persen S dan N. backslash ini 547 00:22:35,601 --> 00:22:37,270 adalah rincian sangat misterius. 548 00:22:37,270 --> 00:22:40,090 Apa yang saya pedulikan sebagai programmer mencetak nama. 549 00:22:40,090 --> 00:22:43,414 Dan, apa cara yang lebih baik untuk melakukan itu daripada dengan memanggil fungsi, nama cetak? 550 00:22:43,414 --> 00:22:46,330 Dan, itu salah satu motivasi untuk melakukan sesuatu seperti ini. 551 00:22:46,330 --> 00:22:50,370 Membuat kode lebih mudah dibaca, lebih dapat digunakan kembali, dan juga diri deskriptif. 552 00:22:50,370 --> 00:22:52,120 Sekarang, mari kita lihat contoh lain, 553 00:22:52,120 --> 00:22:56,220 yang fungsi satu, yang telah kami di sini. 554 00:22:56,220 --> 00:23:00,367 >> Jadi, yang satu ini mungkin bahkan lebih menarik karena, dalam kasus ini, 555 00:23:00,367 --> 00:23:01,700 Saya tidak ingin hanya mendapatkan int. 556 00:23:01,700 --> 00:23:03,320 Saya ingin mendapatkan int positif. 557 00:23:03,320 --> 00:23:06,470 Dan ternyata untuk mendapatkan positif int Anda harus melakukan banyak kerja keras. 558 00:23:06,470 --> 00:23:06,969 Benar? 559 00:23:06,969 --> 00:23:09,600 Ini bukan satu garis sederhana sebut seperti nama cetak itu, 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 positif, logically-- biarkan aku gulir kembali ke menyembunyikan ini. 562 00:23:16,000 --> 00:23:18,887 Apa yang harus kamu lakukan? 563 00:23:18,887 --> 00:23:20,720 Seperti semua alat yang kita miliki saat ini adalah 564 00:23:20,720 --> 00:23:24,440 hal-hal seperti cetak def dari Standard Perpustakaan dan juga dari perpustakaan CS50 565 00:23:24,440 --> 00:23:26,990 kami memiliki Dapatkan Int, dan Dapatkan Lampung, Dapatkan Long Long, mendapatkan String, 566 00:23:26,990 --> 00:23:29,260 tetapi hanya satu, erat, sekarang adalah Dapatkan Int. 567 00:23:29,260 --> 00:23:32,970 Jadi, jika satu-satunya alat yang Anda miliki dalam kotak alat Anda Dapatkan Int, 568 00:23:32,970 --> 00:23:35,505 bagaimana kita pergi tentang pelaksanaan untuk mendapatkan int positif? 569 00:23:35,505 --> 00:23:35,929 >> AUDIENCE: Buat log dan memeriksa apakah masukan yang mereka berikan 570 00:23:35,929 --> 00:23:36,762 positif atau tidak. 571 00:23:36,762 --> 00:23:39,390 572 00:23:39,390 --> 00:23:40,640 >> SPEAKER 1: Sempurna. 573 00:23:40,640 --> 00:23:41,200 Tepat. 574 00:23:41,200 --> 00:23:43,950 Alat lain yang kita miliki di kami toolbox dari satu atau dua minggu yang lalu 575 00:23:43,950 --> 00:23:45,419 hanya konstruk perulangan. 576 00:23:45,419 --> 00:23:48,210 Dan, ya, jika kita menggunakan sementara lingkaran, atau do while loop, atau kedepan 577 00:23:48,210 --> 00:23:50,850 lingkaran kita mungkin bisa pergi dengan salah satu dari mereka dalam beberapa bentuk. 578 00:23:50,850 --> 00:23:55,140 Kita dapat menerapkan gagasan get positif int dengan hanya menggunakan Dapatkan Int, 579 00:23:55,140 --> 00:23:57,830 dan kemudian terus menyebutnya lagi dan terus mengganggu pengguna 580 00:23:57,830 --> 00:24:00,320 sampai dia benar-benar memberi kita apa yang kita inginkan. 581 00:24:00,320 --> 00:24:03,260 >> Dan sekarang, ini abstraksi dari proses 582 00:24:03,260 --> 00:24:05,680 mendapatkan int positif menjadi fungsi yang disebut 583 00:24:05,680 --> 00:24:08,930 Dapatkan Positif Int adalah sedikit lebih menarik karena melihat ini. 584 00:24:08,930 --> 00:24:10,990 Ini adalah seperti 10 plus baris kode yang 585 00:24:10,990 --> 00:24:15,090 terlibat dalam mendapatkan int positif, dan aku tidak benar-benar peduli bagaimana Anda melakukannya. 586 00:24:15,090 --> 00:24:17,850 Semua saya peduli adalah bahwa Anda dapat melakukannya, dan jadi aku 587 00:24:17,850 --> 00:24:21,660 tersembunyi semua rincian ini di belakang fungsi yang disebut Dapatkan Positif int itu, 588 00:24:21,660 --> 00:24:23,430 memang, memiliki do ini while. 589 00:24:23,430 --> 00:24:27,660 >> Dan melihat minggu lalu untuk sintaks di sana, tapi itu hanya menyatakan N, 590 00:24:27,660 --> 00:24:29,800 dan mencetak keluar instruksi kepada pengguna. 591 00:24:29,800 --> 00:24:33,330 Ini panggilan Dapatkan Int dan kemudian memeriksa Kondisi ini lagi, dan lagi, 592 00:24:33,330 --> 00:24:35,230 dan lagi sampai pengguna bekerja sama. 593 00:24:35,230 --> 00:24:38,000 >> Jadi sekarang, sebuah cek kewarasan beberapa. 594 00:24:38,000 --> 00:24:40,370 Bagi mereka mungkin akrab dengan beberapa pemrograman, 595 00:24:40,370 --> 00:24:46,410 mengapa N menyatakan, mengapa saya membuat N luar do while? 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 >> AUDIENCE: Karena ketika Anda mendeklarasikan luar, itu jenis 598 00:24:53,529 --> 00:24:56,688 lebih, yang scope-- lebih besar 599 00:24:56,688 --> 00:24:58,146 >> SPEAKER 1: Baik. 600 00:24:58,146 --> 00:24:59,604 >> AUDIENCE: --dan jika Anda menyatakan di dalam lingkaran, [tidak terdengar] 601 00:24:59,604 --> 00:25:00,979 karena tidak tahu tentang hal itu. 602 00:25:00,979 --> 00:25:02,819 603 00:25:02,819 --> 00:25:03,610 SPEAKER 1: Tepat. 604 00:25:03,610 --> 00:25:06,330 Jika saya bisa simplify-- itu masalah ruang lingkup. 605 00:25:06,330 --> 00:25:11,530 Dan lingkup mengacu pada konteks yang variabel ada atau dapat digunakan. 606 00:25:11,530 --> 00:25:15,050 Dan aturan yang baik praktis di sini adalah bahwa umumnya ketika Anda menyatakan atau membuat 607 00:25:15,050 --> 00:25:21,642 variabel Anda hanya dapat menggunakannya di dalam dari yang paling dekat merangkul kurung kurawal. 608 00:25:21,642 --> 00:25:22,600 Jadi apa artinya? 609 00:25:22,600 --> 00:25:26,551 Jika saya, sebaliknya, membatalkan ini dan pergi dengan sesuatu yang terasa sedikit lebih sederhana. 610 00:25:26,551 --> 00:25:27,050 Benar? 611 00:25:27,050 --> 00:25:29,360 >> Baris 32 hanya tampak bersih kepada saya sekarang. 612 00:25:29,360 --> 00:25:31,500 Aku melakukan kedua hal di sekali dan kemudian menugaskan 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 bahwa definisi lingkup 615 00:25:35,180 --> 00:25:41,130 adalah N yang dapat digunakan di garis 31 dan 32 dalam lingkaran ini, 616 00:25:41,130 --> 00:25:45,100 tetapi di mana menurut definisi yang bisa tidak digunakan? 617 00:25:45,100 --> 00:25:45,660 Sejalan apa? 618 00:25:45,660 --> 00:25:46,160 Ya. 619 00:25:46,160 --> 00:25:47,490 >> AUDIENCE: 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 AUDIENCE: 34. 624 00:25:52,890 --> 00:25:55,040 SPEAKER 1: Bahkan 34 adalah bermasalah karena 625 00:25:55,040 --> 00:25:56,450 luar kurung kurawal. 626 00:25:56,450 --> 00:25:58,200 Dan pada kenyataannya, mari kita lihat apa yang terjadi. 627 00:25:58,200 --> 00:25:58,700 Benar? 628 00:25:58,700 --> 00:26:00,722 Ini mungkin tampak sedikit intuitif atau tidak mungkin, 629 00:26:00,722 --> 00:26:02,680 tapi mari kita lihat apa yang compiler telah mengatakan saat 630 00:26:02,680 --> 00:26:04,730 kita masuk ke direktori source hari ini. 631 00:26:04,730 --> 00:26:08,950 Membuat fungsi satu. 632 00:26:08,950 --> 00:26:11,231 Astaga. 633 00:26:11,231 --> 00:26:12,980 Yah, aku akhirnya selesai itu, dengan cara. 634 00:26:12,980 --> 00:26:14,030 Baiklah. 635 00:26:14,030 --> 00:26:15,510 Dan apa masalah di sini? 636 00:26:15,510 --> 00:26:17,430 Sangat misterius untuk melihat. 637 00:26:17,430 --> 00:26:19,570 Tapi inilah yang saya typed-- membuat fungsi satu. 638 00:26:19,570 --> 00:26:21,640 Inilah yang membuat diinduksi, yang sebenarnya 639 00:26:21,640 --> 00:26:23,705 menggunakan dentang compiler dengan beberapa dari mereka bendera 640 00:26:23,705 --> 00:26:25,080 bahwa kita akan melihat lagi sebelum lama. 641 00:26:25,080 --> 00:26:26,829 Dan lagi, selalu melihat pada kesalahan pertama, 642 00:26:26,829 --> 00:26:30,540 karena mungkin hanya memiliki Cascading efek berarti pada jalur lain. 643 00:26:30,540 --> 00:26:34,410 >> Jadi apa artinya ini adalah bahwa masalah adalah fungsi 1.c. 644 00:26:34,410 --> 00:26:36,890 Hal ini pada baris 32. 645 00:26:36,890 --> 00:26:39,712 Dan itu di kolom, atau karakter, 13. 646 00:26:39,712 --> 00:26:42,670 Jadi, ketika editor teks Anda yang dapat membantu Anda mengidentifikasi mana masalah ini. 647 00:26:42,670 --> 00:26:47,079 Jadi jika saya gulir ke atas, apa garis 32? 648 00:26:47,079 --> 00:26:49,120 Itu memang yang satu ini yang sudah disorot 649 00:26:49,120 --> 00:26:50,607 tepat di sini-tidak terpakai n variabel. 650 00:26:50,607 --> 00:26:51,440 Tapi itu tidak terpakai. 651 00:26:51,440 --> 00:26:52,320 Saya menggunakan itu. 652 00:26:52,320 --> 00:26:56,110 Tapi compiler bingung, karena hanya ada dalam lingkup ini. 653 00:26:56,110 --> 00:26:57,727 Dan jadi saya tidak bisa menggunakannya di sini. 654 00:26:57,727 --> 00:26:58,560 Saya tidak bisa menggunakannya di sini. 655 00:26:58,560 --> 00:27:01,320 Dan compiler, oleh karena itu, bahkan tidak peduli bahwa aku berusaha. 656 00:27:01,320 --> 00:27:03,940 Tampaknya tidak terpakai dalam ruang lingkup yang sebenarnya. 657 00:27:03,940 --> 00:27:08,854 >> Jadi kita dapat memperluas ruang lingkup dengan melakukan persis apa yang kita mulai with-- int n. 658 00:27:08,854 --> 00:27:11,020 Dan meskipun itu tidak terlihat elegan, mungkin, 659 00:27:11,020 --> 00:27:15,110 dan kami mengambil garis ekstra di sini, sekarang ini dalam lingkup di mana-mana. 660 00:27:15,110 --> 00:27:15,970 Jadi mari kita coba lagi. 661 00:27:15,970 --> 00:27:19,040 Sehingga membuat fungsi satu. 662 00:27:19,040 --> 00:27:19,610 Bagus. 663 00:27:19,610 --> 00:27:23,370 Dan sekarang jika saya jika saya menjalankan fungsi satu, mari kita memberikan negatif 10, 664 00:27:23,370 --> 00:27:27,170 negatif 1, 0, 1, dan itu memang bekerja. 665 00:27:27,170 --> 00:27:28,610 >> Jadi ada solusi lain di sini. 666 00:27:28,610 --> 00:27:29,280 Kamu tahu apa? 667 00:27:29,280 --> 00:27:31,230 Bagaimana jika saya benar-benar sedang bergulat dengan ini? 668 00:27:31,230 --> 00:27:33,140 Saya tidak tahu di mana n seharusnya pergi. 669 00:27:33,140 --> 00:27:33,723 Kamu tahu apa? 670 00:27:33,723 --> 00:27:39,220 Aku hanya akan menempatkan semua cara di atas file saya di sini. 671 00:27:39,220 --> 00:27:42,835 Apa yang akan ini lakukan, menurut Anda? 672 00:27:42,835 --> 00:27:43,335 Ya? 673 00:27:43,335 --> 00:27:44,251 >> AUDIENCE: [tidak terdengar]. 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 sudah membuat global, sehingga untuk berbicara. 677 00:27:50,560 --> 00:27:54,430 Jika Anda memiliki variabel yang luar semua fungsi Anda yang diperbolehkan, 678 00:27:54,430 --> 00:27:58,780 dan kode harus mengkompilasi, dan n sekarang akan dapat diakses tidak hanya di get 679 00:27:58,780 --> 00:28:02,490 int positif, tetapi juga di main-- yang adalah mengkhawatirkan sedikit karena ada 680 00:28:02,490 --> 00:28:04,864 sudah n di utama, sehingga lebih pada yang hanya moment-- sebuah 681 00:28:04,864 --> 00:28:06,530 tapi ini akan dianggap desain yang buruk. 682 00:28:06,530 --> 00:28:06,910 Baiklah. 683 00:28:06,910 --> 00:28:08,570 Jika Anda harus resor untuk sesuatu seperti, oh, aku akan 684 00:28:08,570 --> 00:28:10,125 hanya menaruhnya di sini karena kode tampaknya untuk mengkompilasi 685 00:28:10,125 --> 00:28:12,180 umumnya tidak praktek terbaik. 686 00:28:12,180 --> 00:28:14,590 Sebaliknya Anda ingin memilih lingkup sempit mungkin 687 00:28:14,590 --> 00:28:18,720 untuk variabel Anda, yang berarti pergi dengan desain awal kami, yang 688 00:28:18,720 --> 00:28:19,920 ada di sini. 689 00:28:19,920 --> 00:28:24,400 >> Sekarang sebagai samping, jika Anda memang harus sebuah identik-bernama variabel sini, 690 00:28:24,400 --> 00:28:27,750 cara c akan menangani this-- meskipun ini tidak akan terjadi terlalu often-- 691 00:28:27,750 --> 00:28:30,150 adalah bahwa ini masih baik-baik saja di sini. 692 00:28:30,150 --> 00:28:35,000 Tapi definisi ini dari n sejalan 22 akan bayangan yang global. 693 00:28:35,000 --> 00:28:38,190 Jadi yang satu ini akan bekerja dalam utama, dan satu global 694 00:28:38,190 --> 00:28:41,670 benar-benar akan berlaku bila Anda berada di mendapatkan positif int Tapi lebih pada 695 00:28:41,670 --> 00:28:43,890 lain waktu, tetapi hanya bagi mereka penasaran. 696 00:28:43,890 --> 00:28:45,970 >> Jadi singkatnya, kita memperbaiki hal ini di sini. 697 00:28:45,970 --> 00:28:49,220 Sekarang mari kita menggoda terpisah dua potong lainnya sebelum kita melihat satu baris terakhir dari kode 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 Di sisi kiri kata nya adalah int kata. 701 00:28:54,450 --> 00:28:56,860 Apa yang menunjukkan menurut Anda? 702 00:28:56,860 --> 00:28:58,900 Sejauh ini kita sudah sebagian besar terlihat kosong. 703 00:28:58,900 --> 00:28:59,400 Ya? 704 00:28:59,400 --> 00:29:01,810 >> AUDIENCE: Ini jenis variabel yang Anda bertanya tentang. 705 00:29:01,810 --> 00:29:04,550 >> SPEAKER 1: Ya Ini jenis, biarkan aku tidak mengatakan variabel, tetapi jenis nilai 706 00:29:04,550 --> 00:29:05,990 bahwa aku meminta kembali untuk. 707 00:29:05,990 --> 00:29:08,070 Dan memang, itulah intuitif sini, mudah-mudahan. 708 00:29:08,070 --> 00:29:08,200 Benar? 709 00:29:08,200 --> 00:29:10,250 Jika Anda ingin mendapatkan int positif, apa yang kau 710 00:29:10,250 --> 00:29:12,920 ingin function-- seperti kami relawan dari minggu lalu 711 00:29:12,920 --> 00:29:15,720 untuk tangan Anda kembali sepotong kertas dengan int di atasnya? 712 00:29:15,720 --> 00:29:19,190 Dan jadi kami telah ditentukan bahwa disebut tipe kembali 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 ingin kembali apa-apa, yang Anda katakan batal. 715 00:29:22,990 --> 00:29:25,270 Jika Anda ingin kembali string, Anda mengatakan tali. 716 00:29:25,270 --> 00:29:27,310 Jika Anda ingin kembali pelampung, Anda mengatakan float. 717 00:29:27,310 --> 00:29:30,440 Tapi satu-satunya yang berlaku di sini logis, karena saya menggunakan get int, 718 00:29:30,440 --> 00:29:34,130 meskipun aku membatasi untuk nilai-nilai positif, adalah untuk mengembalikan int. 719 00:29:34,130 --> 00:29:38,380 >> Jadi sebaliknya, apa artinya bahwa ada kekosongan dalam tanda kurung? 720 00:29:38,380 --> 00:29:40,130 Apa tanda kurung umumnya mendefinisikan? 721 00:29:40,130 --> 00:29:40,588 Ya? 722 00:29:40,588 --> 00:29:42,880 >> AUDIENCE: Ini berarti fungsi ini tidak benar-benar mendapatkan itu. 723 00:29:42,880 --> 00:29:44,650 >> SPEAKER 1: Ini berarti fungsi ini tidak benar-benar mendapatkan apa? 724 00:29:44,650 --> 00:29:45,430 >> AUDIENCE: Sebuah masukan. 725 00:29:45,430 --> 00:29:46,763 >> SPEAKER 1: Sebuah masukan, apapun. 726 00:29:46,763 --> 00:29:49,870 Jadi memang, jika kurung di sini Anda tentukan batal, 727 00:29:49,870 --> 00:29:51,650 itu hanya berarti saya tidak ingin masukan apapun. 728 00:29:51,650 --> 00:29:53,269 Saya akan menangani masalah sendiri. 729 00:29:53,269 --> 00:29:55,810 Dan memang, Anda tidak perlu memberitahu mendapatkan int sesuatu yang positif. 730 00:29:55,810 --> 00:29:59,630 Anda hanya mengatakan, dapatkan int positif, dan bahwa Fungsi akan pergi dan melakukan hal tersebut. 731 00:29:59,630 --> 00:30:02,970 >> Tapi sudah ada sedikit trik saya sudah telah bermain di sini sepanjang waktu ini 732 00:30:02,970 --> 00:30:04,970 memastikan kode ini mengkompilasi. 733 00:30:04,970 --> 00:30:09,620 Perhatikan bahwa int-- mendapatkan positif int void-- adalah on line 27. 734 00:30:09,620 --> 00:30:14,530 Tapi untuk beberapa alasan yang tampaknya aneh itu juga di sini on line 16. 735 00:30:14,530 --> 00:30:18,530 Dan hanya untuk mengukur baik saya akan mengulangi ini jadi sempurna identik. 736 00:30:18,530 --> 00:30:21,640 Dan saya sudah mengatakan prototipe dengan sedikit satu baris komentar. 737 00:30:21,640 --> 00:30:28,850 Apa yang terjadi jika saya menghapus itu, dan sekarang jalankan kembali membuat fungsi 1, masukkan. 738 00:30:28,850 --> 00:30:29,350 Whoops. 739 00:30:29,350 --> 00:30:32,527 740 00:30:32,527 --> 00:30:33,110 Tunggu sebentar. 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 Siaga. 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 OKE. 748 00:30:42,310 --> 00:30:43,400 Tidak disimpan dengan benar. 749 00:30:43,400 --> 00:30:45,220 Jadi, saya pikir ada sedikit bug di sini di mana saya tidak 750 00:30:45,220 --> 00:30:46,636 melihat nama tab saat ini. 751 00:30:46,636 --> 00:30:47,940 Jadi apa yang terjadi di sini? 752 00:30:47,940 --> 00:30:52,210 Deklarasi implisit fungsi mendapatkan int positif tidak valid di C99. 753 00:30:52,210 --> 00:30:53,940 Jadi membingungkan lagi. 754 00:30:53,940 --> 00:30:55,200 Jadi apa indikasi ini? 755 00:30:55,200 --> 00:30:57,287 Nah, ternyata bahwa C cukup bodoh. 756 00:30:57,287 --> 00:30:59,912 Nah, itu pemrograman bahasa, atau lebih tepatnya compiler. 757 00:30:59,912 --> 00:31:02,940 Hanya tahu apa yang Anda miliki mengajarkannya, dan itu hanya 758 00:31:02,940 --> 00:31:05,640 akan tahu sesuatu jika Anda mengajarkannya sebelumnya. 759 00:31:05,640 --> 00:31:07,960 Dengan kata lain, di utama pada saat ini, aku 760 00:31:07,960 --> 00:31:10,900 mencoba untuk memanggil fungsi disebut mendapatkan int positif. 761 00:31:10,900 --> 00:31:14,120 Tapi compiler tidak akan untuk melihat bahwa mendapatkan int positif 762 00:31:14,120 --> 00:31:16,500 ada sampai baris 26. 763 00:31:16,500 --> 00:31:21,360 Dan jadi apa compiler tidak hanya kesalahan segera setelah sampai ke garis 17, 764 00:31:21,360 --> 00:31:23,700 mengatakan deklarasi implisit dari mendapatkan int positif, yang 765 00:31:23,700 --> 00:31:27,740 adalah cara mewah untuk mengatakan, saya tidak tahu apa yang mendapatkan int positif belum. 766 00:31:27,740 --> 00:31:31,240 >> Bahasa lain seperti Jawa dan Python dan Ruby mungkin melihat ke depan. 767 00:31:31,240 --> 00:31:32,240 C tidak. 768 00:31:32,240 --> 00:31:35,110 Dan cara kita memperbaikinya ini adalah salah satu dari dua cara. 769 00:31:35,110 --> 00:31:40,160 Salah satu, jika masalahnya adalah bahwa mendapatkan int positif belum pernah terlihat sebelumnya, 770 00:31:40,160 --> 00:31:42,150 baik, saya hanya memindahkannya ke atas. 771 00:31:42,150 --> 00:31:43,650 Yang akan memperbaiki masalah ini. 772 00:31:43,650 --> 00:31:46,790 Tapi pada umumnya, itu dianggap teknik yang lebih baik 773 00:31:46,790 --> 00:31:50,220 untuk menempatkan fungsi utama Anda di bagian paling atas sehingga manusia membaca kode Anda 774 00:31:50,220 --> 00:31:52,710 tahu apa program ini tidak, karena utama tidak mengubur semua 775 00:31:52,710 --> 00:31:53,960 cara di bagian bawah atau di tengah. 776 00:31:53,960 --> 00:31:55,130 Ini di bagian paling atas. 777 00:31:55,130 --> 00:31:56,410 Jadi yang tidak merasa cocok. 778 00:31:56,410 --> 00:31:58,326 Dan Anda benar-benar bisa mendapatkan ke dalam situasi di mana 779 00:31:58,326 --> 00:32:00,820 jika panggilan satu fungsi lain, yang menyebut lain, 780 00:32:00,820 --> 00:32:04,630 Anda bisa masuk ke masalah di mana tidak bisa pergi di atas yang lain, secara logis. 781 00:32:04,630 --> 00:32:05,920 Hanya saja tidak mungkin. 782 00:32:05,920 --> 00:32:09,290 >> Dan cara untuk bekerja sekitar ini adalah untuk hanya mengambil 783 00:32:09,290 --> 00:32:13,200 signature fungsi, sehingga untuk speak-- baris pertama di mana itu declared-- 784 00:32:13,200 --> 00:32:16,850 dan hanya menyalin, paste di atas, tapi tidak dengan braces-- keriting 785 00:32:16,850 --> 00:32:17,980 hanya dengan titik koma. 786 00:32:17,980 --> 00:32:20,840 Ini seperti sedikit petunjuk dari apa yang akan datang. 787 00:32:20,840 --> 00:32:26,630 Dan pada kenyataannya, semua waktu ini ketika kita telah melihat hal-hal seperti io.h standar 788 00:32:26,630 --> 00:32:33,040 dan cs50.h, sama, pada mereka dot h file yang ada prototipe lainnya. 789 00:32:33,040 --> 00:32:35,250 Dan kita akan melihat bahwa tak lama. 790 00:32:35,250 --> 00:32:39,340 >> Jadi singkatnya, ketika Anda memiliki program dalam file dengan beberapa fungsi 791 00:32:39,340 --> 00:32:42,300 selain utama, Anda hampir selalu ingin menyatakan mereka 792 00:32:42,300 --> 00:32:45,360 hanya dengan cara pertama mereka line, diikuti oleh titik koma, 793 00:32:45,360 --> 00:32:48,410 di bagian paling atas dari file. 794 00:32:48,410 --> 00:32:50,460 Itu banyak sekaligus. 795 00:32:50,460 --> 00:32:53,130 Ada pertanyaan? 796 00:32:53,130 --> 00:32:53,920 Ada pertanyaan? 797 00:32:53,920 --> 00:32:54,530 Baiklah. 798 00:32:54,530 --> 00:32:59,760 >> Jadi mari kita lanjutkan kemudian untuk sesuatu seperti batuk. 799 00:32:59,760 --> 00:33:00,260 Oh. 800 00:33:00,260 --> 00:33:00,570 Bagaimana pas. 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 hari lain di Scratch yang sangat sederhana hanya 805 00:33:07,560 --> 00:33:08,691 mengatakan batuk, batuk, batuk. 806 00:33:08,691 --> 00:33:09,190 Baiklah. 807 00:33:09,190 --> 00:33:11,136 Dan seseorang mengatakan beberapa hari yang lalu bahwa ada 808 00:33:11,136 --> 00:33:12,760 cara membersihkan kode ini sudah. 809 00:33:12,760 --> 00:33:12,880 Baiklah? 810 00:33:12,880 --> 00:33:15,440 Begitu Anda menyalin dan menyisipkan desain mungkin buruk. 811 00:33:15,440 --> 00:33:18,725 Setidaknya sekali kita mendapatkan empat atau lima atau 20 batuk, rasanya praktek yang buruk. 812 00:33:18,725 --> 00:33:19,850 Kami hanya terus copy, paste. 813 00:33:19,850 --> 00:33:22,213 Apa solusi yang jelas untuk membersihkan program ini sampai? 814 00:33:22,213 --> 00:33:23,120 >> AUDIENCE: Loop. 815 00:33:23,120 --> 00:33:23,350 >> SPEAKER 1: Ya. 816 00:33:23,350 --> 00:33:24,070 Jadi menggunakan loop. 817 00:33:24,070 --> 00:33:27,697 Dan kita bisa menggunakan untuk loop, sementara lingkaran, sejumlah pendekatan. 818 00:33:27,697 --> 00:33:29,780 Dan memang, itulah yang kita lakukan dalam versi satu di sini. 819 00:33:29,780 --> 00:33:32,250 Aku sudah bukan ditulis ulang itu dalam versi salah satu cough.c 820 00:33:32,250 --> 00:33:35,170 menjadi hanya batuk dalam untuk loop. 821 00:33:35,170 --> 00:33:38,240 Baiklah, tapi ada kesempatan sekarang untuk jenis awal 822 00:33:38,240 --> 00:33:41,630 merancang ini sedikit lebih seperti pelajaran kita diajarkan beberapa saat yang lalu, 823 00:33:41,630 --> 00:33:46,190 yang this-- kira bahwa saya ingin untuk membuat fungsi yang disebut batuk, 824 00:33:46,190 --> 00:33:49,730 mari kita mempertimbangkan untuk sesaat apa itu akan terlihat seperti. 825 00:33:49,730 --> 00:33:51,900 Jadi jika saya ingin sesuatu batuk, saya hanya perlu 826 00:33:51,900 --> 00:33:53,800 menggunakan print f dalam fungsi. 827 00:33:53,800 --> 00:33:55,030 Dan memang saya. 828 00:33:55,030 --> 00:33:56,990 Dan sebenarnya, semua ini waktu, setiap saat Anda 829 00:33:56,990 --> 00:33:59,000 mencetak sesuatu untuk layar, programmer 830 00:33:59,000 --> 00:34:00,610 akan menyebut bahwa efek samping. 831 00:34:00,610 --> 00:34:02,990 Ini saya tidak menyerahkan kembali seseorang nilai. 832 00:34:02,990 --> 00:34:06,170 Ini saya mengambil beberapa tindakan yang mungkin secara visual jelas. 833 00:34:06,170 --> 00:34:10,672 Tapi fungsi batuk ini, apakah itu kembali apapun berdasarkan baris pertama? 834 00:34:10,672 --> 00:34:12,880 Tidak, karena tipe kembali nya batal, yang hanya berarti 835 00:34:12,880 --> 00:34:14,250 itu tidak menyodorkan sesuatu kembali. 836 00:34:14,250 --> 00:34:16,791 Ini mungkin melakukan sesuatu visual, tapi tidak menyodorkan 837 00:34:16,791 --> 00:34:18,639 kembali selembar kertas seperti pekan lalu. 838 00:34:18,639 --> 00:34:21,310 >> Apakah perlu masukan? 839 00:34:21,310 --> 00:34:21,810 Tidak. 840 00:34:21,810 --> 00:34:23,134 Dan jadi batal sini juga. 841 00:34:23,134 --> 00:34:25,600 Jadi ini juga merupakan jenis lebih-engineering masalah ini. 842 00:34:25,600 --> 00:34:26,099 Benar? 843 00:34:26,099 --> 00:34:28,820 Saya sudah membuat program lebih kompleks, lebih baris kode, 844 00:34:28,820 --> 00:34:31,889 Saya belum membuat setiap lebih fungsional, tapi 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 kode yang lebih rumit. 847 00:34:36,830 --> 00:34:38,150 Tapi bagaimana ini? 848 00:34:38,150 --> 00:34:42,050 Apa yang telah saya done-- hanya melirik ini tanpa melihat komentar 849 00:34:42,050 --> 00:34:46,076 di bagian paling atas dari file-- apa yang harus Saya pada dasarnya dilakukan di sini dengan batuk saya 850 00:34:46,076 --> 00:34:47,409 implementasi yang berbeda? 851 00:34:47,409 --> 00:34:48,327 Ya, di belakang? 852 00:34:48,327 --> 00:34:51,384 >> AUDIENCE: Buatlah sehingga Anda dapat memiliki karakter mematikan. 853 00:34:51,384 --> 00:34:52,050 SPEAKER 1: Ya. 854 00:34:52,050 --> 00:34:53,270 Jadi ini terasa agak manis. 855 00:34:53,270 --> 00:34:53,389 Benar? 856 00:34:53,389 --> 00:34:56,600 Ini seperti menambahkan fitur untuk Anda program atau fungsi Anda, dalam hal ini. 857 00:34:56,600 --> 00:34:57,830 Masih mengembalikan apa-apa. 858 00:34:57,830 --> 00:35:00,538 Ini mungkin memiliki efek samping visual, karena itu memanggil cetak f. 859 00:35:00,538 --> 00:35:02,800 Tapi sekarang saya telah parametrized fungsi, yang 860 00:35:02,800 --> 00:35:06,470 berarti saya sudah dispesifikasikan diambil masukan tipe int dan menyebutnya n, 861 00:35:06,470 --> 00:35:08,510 tapi aku bisa menyebutnya apa pun yang saya inginkan. 862 00:35:08,510 --> 00:35:11,550 Bahkan, itu hanya bisa kali untuk menjadi lebih eksplisit. 863 00:35:11,550 --> 00:35:13,310 Dan kemudian aku hanya bisa mengubah ini di sini. 864 00:35:13,310 --> 00:35:16,450 Tapi intinya adalah bahwa ini adalah bagaimana saya membuat fungsi yang mengambil input. 865 00:35:16,450 --> 00:35:19,530 Dan jika Anda ingat membalik melalui mungkin online dalam satu 866 00:35:19,530 --> 00:35:23,000 dari berjalan-through, yang keempat dan contoh batuk akhir, 867 00:35:23,000 --> 00:35:27,150 Anda akan melihat di sini saya sudah umum kode saya semacam further-- dari abstrak 868 00:35:27,150 --> 00:35:27,690 lebih lanjut. 869 00:35:27,690 --> 00:35:31,390 Seperti batuk dan bersin, keduanya tentang seperti mengatakan sesuatu atau membuat 870 00:35:31,390 --> 00:35:32,330 beberapa jenis suara. 871 00:35:32,330 --> 00:35:34,725 Simpan akan menjadi sesuai Scratch blok. 872 00:35:34,725 --> 00:35:37,350 Dan apa yang saya lakukan di versi ini, yang kita dapat hanya melirik, 873 00:35:37,350 --> 00:35:43,170 adalah batuk adalah seperti mengatakan, [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 Dan jadi saya sudah umum pelaksanaan mereka 876 00:35:46,900 --> 00:35:48,970 sekarang menerapkan fungsi ini generik, 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 karena masih tidak memiliki jenis kembali. 879 00:35:54,300 --> 00:35:56,398 Tapi berapa banyak input yang dimilikinya? 880 00:35:56,398 --> 00:35:56,981 AUDIENCE: 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 ingin mengambil dua argumen, 883 00:35:59,263 --> 00:36:00,710 hanya pisahkan dengan koma. 884 00:36:00,710 --> 00:36:03,110 Dan jika Anda ingin kemudian memanggil fungsi itu, 885 00:36:03,110 --> 00:36:05,800 melihat bahwa Anda hanya sebut misalnya, kutipan, tanda kutip, 886 00:36:05,800 --> 00:36:09,090 untuk argumen pertama, umum n, untuk argumen kedua. 887 00:36:09,090 --> 00:36:12,130 Jadi sekali lagi, kita hanya sekarang blok bangunan sehingga kita dapat benar-benar 888 00:36:12,130 --> 00:36:15,686 mengimplementasikan beberapa fungsi kita sendiri. 889 00:36:15,686 --> 00:36:16,570 Baiklah. 890 00:36:16,570 --> 00:36:19,690 Pertanyaan ini? 891 00:36:19,690 --> 00:36:22,400 >> Jadi sekarang mari kita mengupas lapisan jika demikian. 892 00:36:22,400 --> 00:36:24,840 Dan tujuan, akhirnya, adalah minggu depan masalah set 893 00:36:24,840 --> 00:36:27,710 akan berada di cryptogrophy-- seni berebut informasi. 894 00:36:27,710 --> 00:36:30,640 Dan secara khusus, informasi akan memiliki Anda mengenkripsi atau mendekripsi 895 00:36:30,640 --> 00:36:31,605 akan menjadi teks. 896 00:36:31,605 --> 00:36:33,980 Dan sehingga jenis undangan pertanyaan hari ini seperti juga, 897 00:36:33,980 --> 00:36:38,480 apa yang terjadi di bawah tenda dengan teks yang melebihi ASCII dari seminggu nol, 898 00:36:38,480 --> 00:36:40,730 dan bagaimana bisa kita benar-benar mulai memanipulasi? 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 diinput dalam seperti fungsi get tali. 901 00:36:47,380 --> 00:36:52,540 Dan mulai sekarang, ketika Anda melihat string seperti this-- Z-A-M-Y-L-A-- 902 00:36:52,540 --> 00:36:56,550 mulai memikirkan hal itu seolah-olah setiap dari karakter-karakter ini dalam kotak yang 903 00:36:56,550 --> 00:36:57,050 sendiri. 904 00:36:57,050 --> 00:36:59,460 Dan memang, dalam seminggu atau lebih adalah waktu, masing-masing kotak-kotak ini 905 00:36:59,460 --> 00:37:04,280 akan mewakili sangat khusus blok memory-- gigitan memori. 906 00:37:04,280 --> 00:37:07,050 Jadi masing-masing surat-surat ini, akhirnya, akan mewakili 8 bit. 907 00:37:07,050 --> 00:37:10,560 Dan kita benar-benar akan melihat apa yang terjadi di bawah kap di komputer saya. 908 00:37:10,560 --> 00:37:13,440 >> Tapi untuk tidak cukuplah hanya untuk melihat Zamyla 909 00:37:13,440 --> 00:37:17,520 melalui lensa ini, dimana masing-masing surat-surat ini adalah di dalam kotak sendiri. 910 00:37:17,520 --> 00:37:22,697 Dan cukup baik di C kita bisa mengakses kotak ini langsung. 911 00:37:22,697 --> 00:37:25,530 Jadi jika Anda ingin mendapatkan yang pertama surat namanya, super mudah di C. 912 00:37:25,530 --> 00:37:28,410 Jika Anda ingin mendapatkan yang terakhir surat, super mudah serta 913 00:37:28,410 --> 00:37:30,240 dengan sepotong sintaks baru. 914 00:37:30,240 --> 00:37:36,250 >> Jadi aku akan pergi ke depan ke CS50 IDE dan membuka string nol dot C. 915 00:37:36,250 --> 00:37:40,270 Dan dalam contoh ini di sini, ada beberapa hal-hal baru yang terjadi. 916 00:37:40,270 --> 00:37:44,360 Jadi di baris pertama 19, kami sudah melihat ini before-- get tali. 917 00:37:44,360 --> 00:37:49,840 Jadi hanya sebagai kewarasan cek cepat, jika seseorang bisa menawarkan up secara lisan 918 00:37:49,840 --> 00:37:52,662 Penjelasan awam dari apa yang terjadi di baris 19. 919 00:37:52,662 --> 00:37:55,370 Seperti hanya menerjemahkan ini ke Inggris yang teman sekamar tidak CS50 920 00:37:55,370 --> 00:37:56,416 mungkin mengerti. 921 00:37:56,416 --> 00:37:56,916 Ya. 922 00:37:56,916 --> 00:37:59,749 >> AUDIENCE: Memiliki input pengguna yang tali dan menyimpannya dalam variabel s. 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 Memiliki input pengguna string dan menyimpannya dalam variabel s. 926 00:38:05,579 --> 00:38:06,120 Itu bagus. 927 00:38:06,120 --> 00:38:08,090 Jadi di kanan sisi, kita sebut get tali. 928 00:38:08,090 --> 00:38:10,340 Yang mengembalikan nilai yang tidak mendapatkan ditugaskan 929 00:38:10,340 --> 00:38:14,230 dari sisi kanan ke kiri sisi ke variabel disebut s yang 930 00:38:14,230 --> 00:38:15,950 dirancang untuk menyimpan string. 931 00:38:15,950 --> 00:38:16,800 Tepat. 932 00:38:16,800 --> 00:38:20,000 >> Jadi sekarang berbaris 22, per komentar di line 21, 933 00:38:20,000 --> 00:38:22,780 jelas mencetak string yang satu karakter per baris. 934 00:38:22,780 --> 00:38:23,740 Tapi bagaimana caranya? 935 00:38:23,740 --> 00:38:27,040 Jadi pertama-tama, kita menginisialisasi saya untuk 0. 936 00:38:27,040 --> 00:38:31,061 Dan kemudian bagaimana kita bisa akhir nama Zamyla ini? 937 00:38:31,061 --> 00:38:32,810 Nah, pada akhir Nama Zamyla, aku bisa 938 00:38:32,810 --> 00:38:38,151 ketik manual dalam karakter terakhir dari namanya entah bagaimana, atau jumlah itu. 939 00:38:38,151 --> 00:38:38,650 Benar? 940 00:38:38,650 --> 00:38:43,500 Jika kita kembali di sini-Z-A-M-L-- Y-L-A-- sehingga saya bisa ketik. 941 00:38:43,500 --> 00:38:47,340 Apa indeks Surat terakhir Zamyla ini? 942 00:38:47,340 --> 00:38:52,517 Jika ini adalah 0-- berbicara seperti programmer-- 0, 1, 2, 3, 4, 5, 943 00:38:52,517 --> 00:38:56,570 Saya heard-- sehingga memang, huruf terakhir nama Zamyla adalah keenam, 944 00:38:56,570 --> 00:38:58,890 tetapi jika kita menghitung dari 0, itu akan menjadi nomor 5. 945 00:38:58,890 --> 00:39:01,320 Jadi ingatlah bahwa dalam pikiran di sini. 946 00:39:01,320 --> 00:39:04,929 >> Ternyata ada fungsi di C disebut strlen, dan kembali pada hari 947 00:39:04,929 --> 00:39:06,720 dan sampai hari ini masih, banyak programmer 948 00:39:06,720 --> 00:39:09,524 memilih untuk melakukan sinkronisasi nama untuk mereka fungsi yang terdengar seperti kata-kata 949 00:39:09,524 --> 00:39:10,440 mereka mencoba untuk mengatakan. 950 00:39:10,440 --> 00:39:12,590 Jadi strlen adalah panjang string. 951 00:39:12,590 --> 00:39:18,168 Dan apa yang akan panjang string S kembali ketika Zamyla adalah input? 952 00:39:18,168 --> 00:39:19,569 >> AUDIENCE: 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 Benar? 955 00:39:22,590 --> 00:39:23,940 Apa panjang nama Zamyla ini? 956 00:39:23,940 --> 00:39:24,440 Benar? 957 00:39:24,440 --> 00:39:26,240 Dan hanya dalam kenyataannya, enam huruf. 958 00:39:26,240 --> 00:39:26,740 Benar? 959 00:39:26,740 --> 00:39:28,940 Dan apa artinya untuk loop kami? 960 00:39:28,940 --> 00:39:32,130 Kita akan pergi dari 0 sampai enam, yang 961 00:39:32,130 --> 00:39:33,650 akan memberi kita lima iterasi. 962 00:39:33,650 --> 00:39:34,890 Apa yang kita lakukan pada setiap iterasi? 963 00:39:34,890 --> 00:39:36,870 Nah, persen C, seseorang menebak hari yang lain, 964 00:39:36,870 --> 00:39:38,710 berarti sebuah tempat untuk apa? 965 00:39:38,710 --> 00:39:39,335 >> AUDIENCE: 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 beberapa karakter seperti string. 968 00:39:42,877 --> 00:39:45,251 Dan kemudian di sini adalah baris baru bahwa kita punya mencetak. 969 00:39:45,251 --> 00:39:46,580 Dan kemudian inilah sintaks baru. 970 00:39:46,580 --> 00:39:51,130 Jika Anda ingin mencetak i-th karakter dalam string S, sehingga untuk berbicara, 971 00:39:51,130 --> 00:39:54,060 Anda hanya bisa mengatakan nama dari string S, 972 00:39:54,060 --> 00:39:58,230 dan kemudian buka braket persegi, dan kemudian ditutup braket persegi, dengan i 973 00:39:58,230 --> 00:39:58,780 Tengah. 974 00:39:58,780 --> 00:40:01,430 Dan itu jenis yang baik dalam jenis terlihat seperti persegi 975 00:40:01,430 --> 00:40:06,210 seperti kotak di mana Zamyla ini karakter yang ada pada gambar di sana. 976 00:40:06,210 --> 00:40:09,970 >> Jadi jika saya benar-benar menjalankan ini sekarang, mari kita lihat apa yang terjadi. 977 00:40:09,970 --> 00:40:15,190 Membuat tali 0 dot slash tali 0, dan kemudian aku 978 00:40:15,190 --> 00:40:16,720 akan mengetikkan nama Zamyla ini. 979 00:40:16,720 --> 00:40:19,428 Tidak ada yang cepat, karena saya tidak menggunakan print f, tapi itu baik-baik saja. 980 00:40:19,428 --> 00:40:20,660 Aku hanya tahu apa yang harus dilakukan. 981 00:40:20,660 --> 00:40:23,240 Dan memang, ia akan mencetak Nama Zamyla ini, satu per baris. 982 00:40:23,240 --> 00:40:25,760 >> Sekarang mari kita sedikit ceroboh. 983 00:40:25,760 --> 00:40:28,461 Misalkan saya tidak tahu tentang strlen dan saya pikir, 984 00:40:28,461 --> 00:40:31,460 baik-baik, tidak ada yang akan memiliki nama besar dari seperti 50 karakter. 985 00:40:31,460 --> 00:40:36,360 Mari kita pergi ke depan dan ulang ini dan jalankan kembali itu, dan kemudian ketik Zamyla 986 00:40:36,360 --> 00:40:37,160 lagi. 987 00:40:37,160 --> 00:40:40,850 Logikanya, apa Program akan mencoba untuk mencetak? 988 00:40:40,850 --> 00:40:49,545 Z-A-M-Y-L-A kemudian seperti 45 byte diketahui memori. 989 00:40:49,545 --> 00:40:51,670 Dan memang, kami akan kembali ide ini dari memori. 990 00:40:51,670 --> 00:40:54,180 Tapi secara logis, jika Nama Zamyla adalah selama ini, 991 00:40:54,180 --> 00:40:56,450 sesuai gambar di sini, apa yang kita katakan 992 00:40:56,450 --> 00:40:59,810 adalah tetap mencetak, menyimpan cetak, terus pencetakan, tetap mencetak, menyimpan cetak, 993 00:40:59,810 --> 00:41:03,781 semua jalan ke karakter 50, yang siapa yang tahu apa yang akan terjadi. 994 00:41:03,781 --> 00:41:05,030 Jadi mari kita lihat sebenarnya. 995 00:41:05,030 --> 00:41:06,720 Mari kita ketik Zamyla. 996 00:41:06,720 --> 00:41:07,250 Menarik. 997 00:41:07,250 --> 00:41:08,190 Kami beruntung. 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 karakter yang funky. 1001 00:41:11,120 --> 00:41:14,577 Kelihatannya jenis seperti pertanyaan aneh menandai sana, tapi ada nama Zamyla ini. 1002 00:41:14,577 --> 00:41:15,660 Mari kita benar-benar nekat. 1003 00:41:15,660 --> 00:41:20,000 Bagaimana kalau kita mencetak 500 blok ke yang tidak diketahui? 1004 00:41:20,000 --> 00:41:24,380 Mari kita pergi ke depan dan membuat ini juga dan kemudian kembali berjalan. 1005 00:41:24,380 --> 00:41:27,980 Dan mari layar penuh, karena 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 Beruntung lagi. 1008 00:41:31,830 --> 00:41:33,070 >> Berani kita mendapatkan lebih sembrono? 1009 00:41:33,070 --> 00:41:36,070 Mari kita lebih nekat. 1010 00:41:36,070 --> 00:41:39,350 50.000 karakter. 1011 00:41:39,350 --> 00:41:41,390 Hal ini paling jelas bukan ide yang baik. 1012 00:41:41,390 --> 00:41:41,890 Baiklah. 1013 00:41:41,890 --> 00:41:42,990 Membuat tali 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 OKE. 1019 00:41:50,680 --> 00:41:54,407 Jadi memori saya benar-benar kosong sekarang, yang sebenarnya jenis nyaman. 1020 00:41:54,407 --> 00:41:55,990 Apa yang saya coba untuk mendapatkan to---baik saja. 1021 00:41:55,990 --> 00:41:57,614 Dan sekarang aku hanya akan mendapatkan sembrono. 1022 00:41:57,614 --> 00:41:58,570 500.000. 1023 00:41:58,570 --> 00:42:03,860 Make-- mari layar penuh itu. 1024 00:42:03,860 --> 00:42:04,990 Masukkan. 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, tapi kedengarannya buruk. 1029 00:42:15,610 --> 00:42:16,110 Baiklah. 1030 00:42:16,110 --> 00:42:20,322 Dan pada kenyataannya, segera, jika Anda antara beberapa beruntung di jam kantor 1031 00:42:20,322 --> 00:42:22,780 dan di masalah menetapkan satu, Anda mungkin sangat baik menemukan ini. 1032 00:42:22,780 --> 00:42:25,490 Segmentation fault sebenarnya memiliki makna yang jelas. 1033 00:42:25,490 --> 00:42:28,450 Ini berarti beberapa jenis kesalahan yang berkaitan dengan segmen memori. 1034 00:42:28,450 --> 00:42:30,490 Dan dalam istilah awam, itu berarti kita menyentuh 1035 00:42:30,490 --> 00:42:34,780 memory-- kami menggunakan RAM di komputer saya bahwa saya tidak harus memiliki akses ke. 1036 00:42:34,780 --> 00:42:37,050 Dan itulah yang baik kuat dan juga berbahaya 1037 00:42:37,050 --> 00:42:39,910 tentang C adalah bahwa Anda benar-benar memiliki akses tak terkekang 1038 00:42:39,910 --> 00:42:45,910 untuk keseluruhan memori program anda atau byte atau RAM, lebih khusus. 1039 00:42:45,910 --> 00:42:49,510 >> Jadi meskipun nama Zamyla ini hanya enam karakter, 1040 00:42:49,510 --> 00:42:51,450 Aku masih bisa pergi ke mana pun dalam memori saya inginkan. 1041 00:42:51,450 --> 00:42:53,491 Dan sebagai samping, jika Anda sudah pernah membaca beberapa artikel 1042 00:42:53,491 --> 00:42:55,610 selama bertahun-tahun tentang beberapa server atau beberapa program yang 1043 00:42:55,610 --> 00:42:58,654 mendapatkan retak atau hack yang mengambil keuntungan dari sesuatu 1044 00:42:58,654 --> 00:43:00,820 disebut buffer overflow mengeksploitasi bahwa kita akan benar-benar 1045 00:43:00,820 --> 00:43:04,970 berbicara tentang dalam beberapa minggu, itu umumnya mengacu entah bagaimana menipu 1046 00:43:04,970 --> 00:43:09,090 komputer dalam berjalan dengan baik melampaui batas-batas memori 1047 00:43:09,090 --> 00:43:11,410 yang seharusnya, dan menemukan sesuatu yang menarik 1048 00:43:11,410 --> 00:43:13,530 dalam sebuah memory-- password, mungkin, cara 1049 00:43:13,530 --> 00:43:16,990 dari menghindari beberapa nomor seri cek, atau hanya umumnya dapat 1050 00:43:16,990 --> 00:43:20,360 untuk mengelabui komputer mengeksekusi kode yang tidak dimaksudkan. 1051 00:43:20,360 --> 00:43:22,360 Tapi mari kita kembali ke realitas untuk sesaat 1052 00:43:22,360 --> 00:43:24,550 di mana program ini diimplementasikan dengan strlen, 1053 00:43:24,550 --> 00:43:26,110 dan memperkenalkan satu hal di sini. 1054 00:43:26,110 --> 00:43:30,030 Apa yang baru di antara tiga baris? 1055 00:43:30,030 --> 00:43:30,910 >> Jadi tali dot h. 1056 00:43:30,910 --> 00:43:35,490 Ternyata ada perpustakaan ini disebut String Dot H, atau String Perpustakaan, 1057 00:43:35,490 --> 00:43:38,490 yang file header, sehingga untuk berbicara, string dot h yang memberikan saya 1058 00:43:38,490 --> 00:43:40,860 akses ke fungsi strlen ini. 1059 00:43:40,860 --> 00:43:43,841 Jika saya menghilangkan itu, compiler adalah akan berteriak padaku dalam beberapa bentuk. 1060 00:43:43,841 --> 00:43:44,590 Tapi kau tahu apa? 1061 00:43:44,590 --> 00:43:46,090 Sekarang mari kita benar-benar bernuansa. 1062 00:43:46,090 --> 00:43:50,820 Sejalan 22, ada sesuatu semacam dari inefficient-- buruk dirancang, 1063 00:43:50,820 --> 00:43:53,990 arguably-- tentang baris kode ini. 1064 00:43:53,990 --> 00:43:56,280 Pikirkan kembali bagaimana untuk loop diimplementasikan 1065 00:43:56,280 --> 00:44:00,140 dan langkah-langkah apa yang terjadi lagi dan lagi dan again-- inisialisasi, 1066 00:44:00,140 --> 00:44:04,110 kondisi, kode yang mendapat dieksekusi, maka selisih tersebut 1067 00:44:04,110 --> 00:44:07,880 atau perubahan, maka kondisi, maka kode, kemudian perubahan, maka 1068 00:44:07,880 --> 00:44:11,280 kondisi, maka kode tersebut, maka perubahan, dan sebagainya. 1069 00:44:11,280 --> 00:44:15,320 Jadi apa yang mungkin sedikit mengkhawatirkan atau buruk dilakukan di sini? 1070 00:44:15,320 --> 00:44:16,387 Ya, warna biru. 1071 00:44:16,387 --> 00:44:18,220 AUDIENCE: Strlen adalah disebut banyak, berkali-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 disebut berkali-kali, tapi apa 1075 00:44:23,700 --> 00:44:27,113 panjang Zamyla nama yang pertama kali loop mengeksekusi? 1076 00:44:27,113 --> 00:44:27,860 >> AUDIENCE: 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 kedua kalinya kode mengeksekusi? 1079 00:44:30,976 --> 00:44:31,432 >> AUDIENCE: Enam. 1080 00:44:31,432 --> 00:44:31,890 >> SPEAKER 1: Baiklah. 1081 00:44:31,890 --> 00:44:32,720 Ini masih enam. 1082 00:44:32,720 --> 00:44:33,220 Benar? 1083 00:44:33,220 --> 00:44:35,260 Nama Zarla memiliki tidak berubah, bahkan jika saya sedang mencari 1084 00:44:35,260 --> 00:44:38,240 di hanya bagian dari huruf dalam namanya. 1085 00:44:38,240 --> 00:44:41,349 Dan fakta bahwa aku secara efektif menanyakan pertanyaan ini, apa 1086 00:44:41,349 --> 00:44:44,640 panjang Zamyla, apa panjang dari Zamyla, apa panjang Zamyla, 1087 00:44:44,640 --> 00:44:47,990 enam kali terpisah, atau tujuh bahkan, hanya bodoh, 1088 00:44:47,990 --> 00:44:50,390 karena itulah jawaban yang tidak berubah. 1089 00:44:50,390 --> 00:44:53,550 Dan apa yang saya benar-benar bisa lakukan adalah this-- dalam string satu 1090 00:44:53,550 --> 00:44:55,680 Saya memiliki versi sedikit lebih baik di sini. 1091 00:44:55,680 --> 00:45:00,110 There-- whoops-- tali dua saya harus versi sedikit lebih baik dimana 1092 00:45:00,110 --> 00:45:05,010 Saya melakukan this-- bukan hanya menginisialisasi i ke 0, saya juga dengan koma 1093 00:45:05,010 --> 00:45:07,990 mendeklarasikan variabel kedua disebut n-- saya tidak harus mengatakan int lagi. 1094 00:45:07,990 --> 00:45:09,220 Aku seharusnya tidak, pada kenyataannya. 1095 00:45:09,220 --> 00:45:10,380 Tapi saya katakan n. 1096 00:45:10,380 --> 00:45:13,610 Dan kemudian saya menginisialisasi n untuk strlen dari n, sehingga sekarang 1097 00:45:13,610 --> 00:45:17,110 berapa kali strlen dijalankan secara total? 1098 00:45:17,110 --> 00:45:17,610 Sekali saja. 1099 00:45:17,610 --> 00:45:20,257 Dan ini adalah apa yang kita maksud sebelumnya tentang desain yang lebih baik. 1100 00:45:20,257 --> 00:45:23,090 Sebenarnya setelah kode Anda benar, akan kembali dan berpikir melalui, 1101 00:45:23,090 --> 00:45:26,820 aku menggunakan sesedikit memori atau sebagai beberapa detik 1102 00:45:26,820 --> 00:45:30,409 atau milidetik waktu komputer sebagai mungkin untuk mengimplementasikan beberapa masalah? 1103 00:45:30,409 --> 00:45:32,200 Dan aku akan gulir dan hanya menyebutkan 1104 00:45:32,200 --> 00:45:34,283 bahwa ada menyebutkan ini dari nol dalam versi ini, 1105 00:45:34,283 --> 00:45:36,390 tapi kami akan datang kembali ke sebelum lama. 1106 00:45:36,390 --> 00:45:41,010 Karena untuk saat ini, mari kita lihat di mana ini akan membawa kita. 1107 00:45:41,010 --> 00:45:44,110 Jadi satu, ternyata sekarang bahwa kita memiliki kemampuan 1108 00:45:44,110 --> 00:45:46,860 untuk melihat karakter individu, kita dapat memanfaatkan sesuatu 1109 00:45:46,860 --> 00:45:50,807 dari minggu 0 yang sangat misterius dan semacam menarik pada saat itu. 1110 00:45:50,807 --> 00:45:53,390 Tapi sekarang, dan terutama ketika kita bisa kriptografi dalam seminggu, 1111 00:45:53,390 --> 00:45:54,820 itu akan menjadi cukup kuat. 1112 00:45:54,820 --> 00:45:57,450 Ternyata dengan beberapa int Data types-- dan mengapung 1113 00:45:57,450 --> 00:46:00,300 dan karakter dan string dan lainnya things-- beberapa dari mereka 1114 00:46:00,300 --> 00:46:02,800 dapat sangat mudah dikonversi ke yang lain. 1115 00:46:02,800 --> 00:46:05,840 >> Misalnya, ketika kita berbicara tentang ASCII beberapa waktu ago-- inilah 1116 00:46:05,840 --> 00:46:07,796 huruf kapital A melalui M, dot, dot, 1117 00:46:07,796 --> 00:46:12,530 dot-- kita mengatakan bahwa ada pemetaan antara surat-surat ini dan angka. 1118 00:46:12,530 --> 00:46:14,970 Dan pada kenyataannya, itu 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 nomor dalam ASCII, yang hanya pemetaan ini 1121 00:46:20,860 --> 00:46:23,240 sistem untuk semua surat-surat lainnya. 1122 00:46:23,240 --> 00:46:25,030 Jadi apa artinya? 1123 00:46:25,030 --> 00:46:28,390 Nah, aku akan pergi ke depan dan terbuka up nyata cepat sesuatu yang disebut 1124 00:46:28,390 --> 00:46:31,240 ASCII 0, yang sebagian besar adalah komentar. 1125 00:46:31,240 --> 00:46:33,860 Dan lagi secara online Anda selalu bisa sekilas melalui komentar. 1126 00:46:33,860 --> 00:46:36,180 >> Dan kita lihat apa yang ini akan dilakukan. 1127 00:46:36,180 --> 00:46:38,410 Jadi itu punya fungsi utama. 1128 00:46:38,410 --> 00:46:41,490 Aku sudah keras-kode angka hanya untuk sekarang, karena saya tahu apa yang saya lakukan. 1129 00:46:41,490 --> 00:46:42,950 Saya tahu apa yang saya ingin lihat di sini. 1130 00:46:42,950 --> 00:46:45,220 Dan aku sudah diinisialisasi saya ke 65. 1131 00:46:45,220 --> 00:46:48,490 Dan aku menghitung sampai melalui 26 huruf Total. 1132 00:46:48,490 --> 00:46:52,990 Dan apa yang akan saya mencetak satu baris pada satu waktu 1133 00:46:52,990 --> 00:46:54,930 jika Anda dapat menafsirkan ini disorot baris? 1134 00:46:54,930 --> 00:46:55,970 Apa yang akan dicetak? 1135 00:46:55,970 --> 00:46:56,797 Ya. 1136 00:46:56,797 --> 00:46:57,264 >> AUDIENCE: Apakah Anda akan untuk mencetak surat yang 1137 00:46:57,264 --> 00:46:59,805 sesuai dengan peta yang 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. 1140 00:47:01,990 --> 00:47:04,740 Aku akan mencetak surat sesuai dengan nilai integer, 1141 00:47:04,740 --> 00:47:06,131 dan sebaliknya, sebagai berikut. 1142 00:47:06,131 --> 00:47:08,880 Nah ini, seseorang mengatakan sebelumnya, hanya sebuah tempat untuk char. 1143 00:47:08,880 --> 00:47:09,490 Itu masih. 1144 00:47:09,490 --> 00:47:12,280 Ini, tentu saja, adalah placeholder untuk int-- tidak baris baru. 1145 00:47:12,280 --> 00:47:18,140 Dan sekarang perhatikan, nilai pertama saya yang Saya mencolokkan untuk placeholder yang 1146 00:47:18,140 --> 00:47:22,320 tidak hanya I. saya katakan, dalam kurung, char saya, 1147 00:47:22,320 --> 00:47:26,700 yang char kurung adalah memerintahkan compiler, mengobati saya 1148 00:47:26,700 --> 00:47:28,490 tidak apa itu, yang merupakan nomor. 1149 00:47:28,490 --> 00:47:30,490 Memperlakukannya sebagai karakter yang sebenarnya. 1150 00:47:30,490 --> 00:47:34,490 Sedangkan nilai kedua saya memasukkan in-- Aku-- hanya harus menjadi nomor satu. 1151 00:47:34,490 --> 00:47:38,140 >> Jadi jika saya mengkompilasi program-- ini jadi ini adalah membuat ASCII 0, 1152 00:47:38,140 --> 00:47:41,720 dot slash ASCII 0-- saya hanya mendapatkan grafik berguna sedikit ini yang 1153 00:47:41,720 --> 00:47:44,950 menunjukkan saya semua mungkin pemetaan tanpa harus berpikir 1154 00:47:44,950 --> 00:47:46,450 melalui atau mencari tahu sendiri. 1155 00:47:46,450 --> 00:47:48,783 Dan aku juga mencetak, perhatikan huruf kecil, 1156 00:47:48,783 --> 00:47:51,410 karena beberapa baris kemudian, saya juga mencetak pemetaan ini 1157 00:47:51,410 --> 00:47:53,737 juga, yang hanya untuk mengatakan bahwa setelah Anda memahami 1158 00:47:53,737 --> 00:47:55,570 apa yang terjadi di bawah kap, dapat Anda 1159 00:47:55,570 --> 00:47:57,111 otomatis mengkonversi bolak-balik. 1160 00:47:57,111 --> 00:48:00,160 Dan pada kenyataannya, jika salah satu dari Anda pernah melakukan ini di sekolah dasar 1161 00:48:00,160 --> 00:48:03,490 atau mendengar tentang seseorang mythically mengambil catatan 1162 00:48:03,490 --> 00:48:05,620 dan menyerahkannya pada-Nya atau temannya di kelas, 1163 00:48:05,620 --> 00:48:08,300 tetapi Anda mengacak huruf oleh seperti A menjadi B, 1164 00:48:08,300 --> 00:48:11,240 dan B menjadi C, atau sesuatu lebih rumit dari itu, baik, 1165 00:48:11,240 --> 00:48:13,410 bagaimana Anda akan pergi tentang menerapkan bahwa sebagai anak-anak? 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 tapi matematis, apa yang anak itu lakukan? 1168 00:48:19,700 --> 00:48:22,050 Apa yang Anda menambah setiap huruf? 1169 00:48:22,050 --> 00:48:23,340 Efektif, 1. 1170 00:48:23,340 --> 00:48:27,740 >> Jadi, ketika Anda mengubah A ke B, yang jenis seperti mengubah 65-66, 1171 00:48:27,740 --> 00:48:29,590 yang secara matematis berarti hanya menambahkan 1. 1172 00:48:29,590 --> 00:48:33,300 Dan jika Anda adalah untuk menerapkan yang sedikit teknik menipu 1173 00:48:33,300 --> 00:48:36,380 untuk guru Anda dalam kode, Anda mungkin melakukan hal itu hanya 1174 00:48:36,380 --> 00:48:38,552 dengan menambahkan satu huruf bersama-sama. 1175 00:48:38,552 --> 00:48:40,260 Jadi tak lama, kami akan melihat bagaimana kami 1176 00:48:40,260 --> 00:48:43,300 dapat mengambil keuntungan dari itu untuk benar-benar berebut benar dan menguraikan 1177 00:48:43,300 --> 00:48:43,991 Informasi. 1178 00:48:43,991 --> 00:48:47,240 Sementara itu, tahu bahwa kita sudah mulai memperkenalkan beberapa perpustakaan lain 1179 00:48:47,240 --> 00:48:48,990 sini-string satu hari ini. 1180 00:48:48,990 --> 00:48:51,180 Dan situs yang sangat membantu mudah-mudahan Anda akan menemukan 1181 00:48:51,180 --> 00:48:55,010 disebut reference.cs50.net, yang staf pengajar telah mengumpulkan, 1182 00:48:55,010 --> 00:48:57,510 sehingga jika Anda ingin mencari pekerjaan bagaimana strlen, 1183 00:48:57,510 --> 00:48:59,300 Anda dapat mulai mengetik nama fungsi, 1184 00:48:59,300 --> 00:49:02,890 klik strlen sana, dan kemudian penjelasan kurang nyaman 1185 00:49:02,890 --> 00:49:03,700 akan muncul. 1186 00:49:03,700 --> 00:49:06,880 Atau jika Anda ingin resmi Penjelasan berbasis Linux, 1187 00:49:06,880 --> 00:49:08,945 Anda dapat mengklik lebih nyaman di kanan atas, dan itu 1188 00:49:08,945 --> 00:49:12,070 akan menyajikan informasi yang sama, tetapi dalam hal yang lebih kompleks. 1189 00:49:12,070 --> 00:49:15,070 Itu sumber yang berguna untuk benar-benar tahu apa yang semuanya tidak. 1190 00:49:15,070 --> 00:49:17,320 >> Lain kali kita akan lihatlah 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 akhir pekan ini. 1193 00:49:21,930 --> 00:49:23,390 Dan sekarang, Colton Ogden. 1194 00:49:23,390 --> 00:49:26,730 Sampai jumpa pada hari Rabu. 1195 00:49:26,730 --> 00:49:30,216 >> [MUSIC PLAYING] 1196 00:49:30,216 --> 00:49:33,702 >> [MUSIC PLAYING] 1197 00:49:33,702 --> 00:49:38,682 1198 00:49:38,682 --> 00:49:42,200 >> SPEAKER 1: Apa [Bleep] yang kamu lakukan? 1199 00:49:42,200 --> 00:49:45,720 >> SPEAKER 1: Saya makan makanan penutup 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 >> [MUSIC PLAYING] 1204 00:49:57,940 --> 00:50:03,453