1 00:00:07,590 --> 00:00:09,920 [Powered by Google Translate] DAVID J. Malan: Baiklah, ini adalah CS50 dan ini adalah 2 00:00:09,920 --> 00:00:15,250 akhir Minggu 1, sehingga kartu studi dalam dan jumlah total 3 00:00:15,250 --> 00:00:18,640 teman sekelas yang Anda miliki tahun ini adalah 745. 4 00:00:18,640 --> 00:00:20,920 Dan kami sangat senang untuk memiliki begitu banyak dari Anda dalam kursus 5 00:00:20,920 --> 00:00:23,680 semester ini, tapi meskipun tentu saja ini begitu besar, 6 00:00:23,680 --> 00:00:26,090 menyadari bahwa itu adalah hal-hal seperti makan siang Jumat, seperti 7 00:00:26,090 --> 00:00:29,020 Kantor jam, 15 orang bagian, dan sebagainya yang 8 00:00:29,020 --> 00:00:30,590 benar-benar dimaksudkan untuk menciptakan lebih intim 9 00:00:30,590 --> 00:00:31,140 lingkungan. 10 00:00:31,140 --> 00:00:34,070 Jadi meskipun kita dapat berkumpul sekali atau dua kali seminggu, di sini di 11 00:00:34,070 --> 00:00:36,420 Sanders, tahu bahwa banyak pengalaman Anda dalam kursus ini 12 00:00:36,420 --> 00:00:39,330 akan sangat menjadi tangan-on di samping teman sekelas Anda 13 00:00:39,330 --> 00:00:40,730 dan staf pengajar. 14 00:00:40,730 --> 00:00:43,960 >> Jadi di sini kita pergi, Jatuh 2012. 15 00:00:43,960 --> 00:00:47,530 Jadi ingat bahwa terakhir kali kita berakhir pada catatan 16 00:00:47,530 --> 00:00:50,460 ketidaktepatan, berbicara tentang representasi dari angka. 17 00:00:50,460 --> 00:00:52,950 Dan kita melihat salah satu kegagalan yang terjadi, dalam 18 00:00:52,950 --> 00:00:54,920 dunia nyata, ketika datang ke kesalahpahaman 19 00:00:54,920 --> 00:00:55,890 bagaimana komputer bekerja. 20 00:00:55,890 --> 00:00:58,590 Nah, hari ini kita akan kembali lagi salah satu ide 21 00:00:58,590 --> 00:01:01,410 serta melanjutkan diskusi kami dari klien CS50 22 00:01:01,410 --> 00:01:04,090 dan C dan apa artinya benar-benar untuk program. 23 00:01:04,090 --> 00:01:06,430 Tapi pertama-tama, hanya beberapa pengumuman angin puyuh. 24 00:01:06,430 --> 00:01:08,930 >> Bagian mulai hari Minggu ini, dan minggu pertama selalu 25 00:01:08,930 --> 00:01:11,030 sedikit awal yang cepat, karena kita baru saja di 26 00:01:11,030 --> 00:01:12,620 bentuk bagian Anda. 27 00:01:12,620 --> 00:01:14,450 Kami sedang melakukan hal yang sama, sekarang, dengan rekan-rekan mengajar, sekarang 28 00:01:14,450 --> 00:01:16,410 bahwa mereka tahu jadwal mereka, jadi kami bertujuan, dengan 29 00:01:16,410 --> 00:01:19,380 Sabtu pagi, untuk menindaklanjuti dengan Anda dengan bagian Anda 30 00:01:19,380 --> 00:01:20,760 tugas dan TF. 31 00:01:20,760 --> 00:01:22,770 Sadarilah bahwa mereka akan memulai hari berikutnya, Minggu 32 00:01:22,770 --> 00:01:24,510 atau Senin atau Selasa. 33 00:01:24,510 --> 00:01:27,730 Dan kemudian kita akan mengakomodasi perubahan bagian yang muncul 34 00:01:27,730 --> 00:01:28,690 pada hari-hari yang akan datang. 35 00:01:28,690 --> 00:01:31,590 Jam kantor, sementara itu, adalah, sekali lagi, malam ini, 8 PM untuk 11, di 36 00:01:31,590 --> 00:01:33,740 Annenberg, serta besok malam. 37 00:01:33,740 --> 00:01:36,150 Meskipun set masalah umumnya jatuh tempo pada hari Kamis 38 00:01:36,150 --> 00:01:39,020 pada siang hari, menyadari bahwa Anda memiliki hingga lima hari untuk menghabiskan akhir, 39 00:01:39,020 --> 00:01:42,430 maka ketersediaan jam kerja pada hari Kamis jika 40 00:01:42,430 --> 00:01:45,930 Anda uang tunai di salah satu dari hari-hari akhir dan, dengan demikian, kirimkan 41 00:01:45,930 --> 00:01:47,070 sesuatu pada hari Jumat. 42 00:01:47,070 --> 00:01:50,850 Izinkan saya menyarankan bahwa Scratch adalah salah satu lebih menyenangkan, antara 43 00:01:50,850 --> 00:01:52,390 lebih rendah set masalah utama. 44 00:01:52,390 --> 00:01:55,160 Dan aku akan menggantung ke hari-hari akhir, strategis, hanya 45 00:01:55,160 --> 00:01:57,380 untuk kemudian di semester ketika hidup mulai mendapatkan di jalan 46 00:01:57,380 --> 00:01:59,470 dengan ujian tengah semester dan kelas-kelas lainnya. 47 00:01:59,470 --> 00:02:01,580 Soal Set 1, sementara itu, akan diposting pada kursus ini 48 00:02:01,580 --> 00:02:06,080 website ini Jumat, karena akan berada di jalan kursus ini 49 00:02:06,080 --> 00:02:08,789 melalui video, yang akan difilmkan di 2:30 malam pada hari Jumat 50 00:02:08,789 --> 00:02:11,890 dan kemudian diposting online pada hari berikutnya. 51 00:02:11,890 --> 00:02:13,880 >> Jadi kita berakhir pada hari Senin. 52 00:02:13,880 --> 00:02:15,450 Saya ingin - sebenarnya, salah satu mencatat di sini. 53 00:02:15,450 --> 00:02:18,870 Karena kelas - karena Sanders tidak tepat meminjamkan 54 00:02:18,870 --> 00:02:22,220 sendiri untuk Q & santai kembali A dan sebagainya sangat baik, kami 55 00:02:22,220 --> 00:02:24,030 akan mencoba sesuatu yang sedikit tahun baru ini, dimana 56 00:02:24,030 --> 00:02:26,160 jika Anda tidak nyaman mengangkat tangan Anda atau Anda hanya 57 00:02:26,160 --> 00:02:28,800 suka tidak mengangkat tangan Anda di sebuah ruangan seperti ini, 58 00:02:28,800 --> 00:02:30,710 kita akan memiliki beberapa rekan-rekan mengajar dan CA 59 00:02:30,710 --> 00:02:33,260 mengawaki cs50.net/discuss selama kuliah. 60 00:02:33,260 --> 00:02:35,440 Jadi jika Anda memiliki pertanyaan karena saya benar-benar 61 00:02:35,440 --> 00:02:37,510 jelas tentang sesuatu atau Anda penasaran tentang beberapa 62 00:02:37,510 --> 00:02:39,640 topik, coba posting di sana. 63 00:02:39,640 --> 00:02:42,670 Tag dengan label Kuliah, dan kami akan melakukan yang terbaik 64 00:02:42,670 --> 00:02:45,430 hari ini dan minggu depan - kami mencoba ini - ke lapangan itu 65 00:02:45,430 --> 00:02:47,990 baik secara elektronik, online, atau jika rasanya kita harus 66 00:02:47,990 --> 00:02:50,430 benar-benar alamat itu secara massal, salah satu rekan pengajaran atau 67 00:02:50,430 --> 00:02:52,080 CA akan mengangkat tangan mereka dan meminta 68 00:02:52,080 --> 00:02:53,480 anonim atas nama Anda. 69 00:02:53,480 --> 00:02:55,650 Jadi kita akan memberikan ini mencoba dan melihat seberapa baik ini bekerja. 70 00:02:55,650 --> 00:02:58,540 Tapi, dengan segala cara, terus mengangkat tangan seperti yang Anda inginkan. 71 00:02:58,540 --> 00:03:11,420 >> Jadi terakhir kali kami mengungkapkan bahwa 10% atau sepersepuluh tidak, dalam 72 00:03:11,420 --> 00:03:13,840 Bahkan, 0,1, seperti Anda diajarkan bertahun-tahun yang lalu. 73 00:03:13,840 --> 00:03:15,390 Ini pada kenyataannya, nilai seperti ini. 74 00:03:15,390 --> 00:03:16,970 Tapi itu tidak sepenuhnya benar, kan? 75 00:03:16,970 --> 00:03:19,585 Kami hanya memiliki kendala ini di komputer dimana, jika Anda 76 00:03:19,585 --> 00:03:22,450 hanya memiliki jumlah terbatas memori, RAM, atau lebih 77 00:03:22,450 --> 00:03:25,220 bit khusus, baik, hanya ada sejumlah terbatas 78 00:03:25,220 --> 00:03:26,980 hal yang dapat mewakili. 79 00:03:26,980 --> 00:03:29,780 Sebagai contoh, jika kita memiliki angka nol, dan kami ingin 80 00:03:29,780 --> 00:03:32,790 mewakili dalam biner, menggunakan delapan bit, di mana sedikit, 81 00:03:32,790 --> 00:03:34,710 lagi, adalah nol atau satu, kita mungkin 82 00:03:34,710 --> 00:03:39,240 mewakili sebagai 00000000. 83 00:03:39,240 --> 00:03:41,160 Dan itu perlu sedikit verbose. 84 00:03:41,160 --> 00:03:43,700 Sama seperti dalam sistem desimal di dunia nyata, 85 00:03:43,700 --> 00:03:47,040 pada umumnya, jika Anda ingin menulis nomor 123, kita 86 00:03:47,040 --> 00:03:52,240 manusia mungkin tidak menulis 00000123 meskipun, 87 00:03:52,240 --> 00:03:53,940 fungsional, itu jumlah yang sama persis. 88 00:03:53,940 --> 00:03:56,580 Kami hanya drop nol terkemuka, sehingga untuk berbicara. 89 00:03:56,580 --> 00:03:58,270 >> Dalam biner, kita bisa melakukan hal yang sama. 90 00:03:58,270 --> 00:04:01,440 Biner dan nol, nol dan biner hanya nol. 91 00:04:01,440 --> 00:04:02,870 Anda hanya perlu satu bit. 92 00:04:02,870 --> 00:04:05,020 Tapi sekali lagi, unit paling umum dari ukuran di dunia 93 00:04:05,020 --> 00:04:07,820 komputasi adalah byte, delapan bit. 94 00:04:07,820 --> 00:04:09,720 Hanya karena satu bit, cukup berguna. 95 00:04:09,720 --> 00:04:12,020 Delapan bit, tidak terlalu berguna, tapi setidaknya itu lebih 96 00:04:12,020 --> 00:04:14,280 berguna daripada satu unit ukuran. 97 00:04:14,280 --> 00:04:17,100 Jadi dengan delapan bit, kita biasanya akan mewakili biner. 98 00:04:17,100 --> 00:04:20,459 Jadi di sini kita memiliki angka nol, satu, dua, dan kemudian, seperti yang 99 00:04:20,459 --> 00:04:24,200 Nate lakukan di video kami Rabu lalu, kita dapat melanjutkan 100 00:04:24,200 --> 00:04:25,940 menghitung sampai tujuh, delapan. 101 00:04:25,940 --> 00:04:27,860 Dan kemudian jika kita menggunakan bit lebih dan lebih, kita 102 00:04:27,860 --> 00:04:29,880 dapat menghitung sampai tak terhingga. 103 00:04:29,880 --> 00:04:32,800 Tetapi jika Anda hanya memiliki jumlah terbatas bit-bit, seperti 104 00:04:32,800 --> 00:04:35,030 kasus dalam sistem komputer, atau bahkan rudal 105 00:04:35,030 --> 00:04:36,670 sistem, baik, memang Anda hanya memiliki 106 00:04:36,670 --> 00:04:37,900 terbatas jumlah presisi. 107 00:04:37,900 --> 00:04:41,290 Jadi jika Anda ingin untuk mewakili nomor seperti 0.1, baik, 108 00:04:41,290 --> 00:04:43,410 komputer harus memilih. 109 00:04:43,410 --> 00:04:45,970 Dan jika hanya memiliki jumlah terbatas angka itu bisa 110 00:04:45,970 --> 00:04:50,490 mewakili, maka dapat datang dekat dengan 0,1 untuk Anda, tapi tidak bisa 111 00:04:50,490 --> 00:04:53,730 selalu memberikan persis nilai yang Anda inginkan. 112 00:04:53,730 --> 00:04:55,660 Dan ini hanya salah satu tantangan dari komputer, 113 00:04:55,660 --> 00:04:57,090 bawah kap mesin, untungnya. 114 00:04:57,090 --> 00:04:59,110 >> Ketika kita bergerak lebih jauh dalam semester, ini tingkat yang lebih rendah 115 00:04:59,110 --> 00:05:02,310 rincian menjadi jauh lebih menarik, tapi pasti 116 00:05:02,310 --> 00:05:05,700 penerapan ide ini dapat memiliki beberapa dunia yang sangat nyata 117 00:05:05,700 --> 00:05:06,760 konsekuensi. 118 00:05:06,760 --> 00:05:08,190 Salah satunya adalah menyenangkan sedikit. 119 00:05:08,190 --> 00:05:12,150 Berapa banyak dari Anda telah melihat film Space Office menakjubkan? 120 00:05:12,150 --> 00:05:13,620 Jika Anda belum, itu tidak resmi Anda 121 00:05:13,620 --> 00:05:14,370 PR selama seminggu. 122 00:05:14,370 --> 00:05:16,730 Namun dalam Office Space, rekan-rekan dalam film yang mengambil 123 00:05:16,730 --> 00:05:19,900 keuntungan justru ide ini, tetapi mereka benar-benar mencuri 124 00:05:19,900 --> 00:05:21,270 itu dari film lain yang mungkin Anda miliki 125 00:05:21,270 --> 00:05:22,760 dilihat, bahkan bertahun-tahun sebelumnya. 126 00:05:22,760 --> 00:05:24,920 Jadi izinkan saya memberi Anda beberapa detik dari trailer ini dari 127 00:05:24,920 --> 00:05:27,470 film ini luar biasa dan ini sangat banyak 128 00:05:27,470 --> 00:05:28,340 akademis yang relevan. 129 00:05:28,340 --> 00:05:30,310 >> [Bermain film] 130 00:05:30,310 --> 00:05:32,240 Sebenarnya saya sedang dipromosikan. 131 00:05:32,240 --> 00:05:33,360 Saya bisa memprogram virus yang akan merobek bahwa 132 00:05:33,360 --> 00:05:34,460 menempatkan off waktu besar. 133 00:05:34,460 --> 00:05:35,770 Nah, bagaimana cara kerjanya? 134 00:05:35,770 --> 00:05:37,836 Setiap kali ada transaksi bank di mana bunga 135 00:05:37,836 --> 00:05:40,154 dihitung, ada ribuan per hari, komputer berakhir 136 00:05:40,154 --> 00:05:41,040 dengan pecahan sen. 137 00:05:41,040 --> 00:05:43,050 Tapi aku tidak akan melakukan sesuatu yang ilegal. 138 00:05:43,050 --> 00:05:46,730 Illegal? Samir, ini adalah Amerika. 139 00:05:46,730 --> 00:05:48,010 Anda harus bersumpah kepada Tuhan. 140 00:05:48,010 --> 00:05:51,870 Jika tidak ada yang tahu tentang hal ini tetapi kita, baik-baik saja? Tidak ada anggota keluarga, tidak ada 141 00:05:51,870 --> 00:05:52,490 pacar, tidak ada. 142 00:05:52,490 --> 00:05:53,882 [Tak terdengar]. 143 00:05:53,882 --> 00:05:57,594 Jangan khawatir, man, saya tidak akan memberitahu siapa pun baik. 144 00:05:57,594 --> 00:05:59,680 [FILM ENDS] 145 00:05:59,680 --> 00:06:01,900 >> Baiklah, jadi mungkin saya menemukan film ini lebih baik daripada kebanyakan 146 00:06:01,900 --> 00:06:05,530 orang di sini, tetapi dalam hal apapun, virus yang mereka 147 00:06:05,530 --> 00:06:06,400 mencoba untuk membuat - 148 00:06:06,400 --> 00:06:08,410 dan di film, kapan mereka akan menyebut sesuatu virus, 149 00:06:08,410 --> 00:06:09,770 itu umumnya tidak benar-benar virus. 150 00:06:09,770 --> 00:06:11,600 Ini hanya sebuah program yang seseorang menulis untuk melakukan sesuatu. 151 00:06:11,600 --> 00:06:13,800 Dan dalam hal ini, orang-orang mencoba untuk menulis sebuah program 152 00:06:13,800 --> 00:06:16,610 yang mengambil keuntungan dari perusahaan mereka yang disebut itu Innotech 153 00:06:16,610 --> 00:06:19,740 sistem komputasi, dimana komputer, juga, bahkan ketika 154 00:06:19,740 --> 00:06:21,350 datang ke uang, tidak bisa serta merta 155 00:06:21,350 --> 00:06:23,490 mewakili uang tepatnya. 156 00:06:23,490 --> 00:06:27,630 Jadi meskipun Anda mungkin memiliki $ 0.10 di rekening bank Anda, 157 00:06:27,630 --> 00:06:31,060 0,10, dengan baik, komputer mungkin benar-benar berpikir bahwa Anda memiliki 158 00:06:31,060 --> 00:06:33,560 ini banyak sen di rekening bank Anda. 159 00:06:33,560 --> 00:06:35,750 Dan jadi apa orang-orang yang bercita-cita untuk melakukan - dan mereka 160 00:06:35,750 --> 00:06:38,240 mencuri ide, ternyata dari Superman III, di mana 161 00:06:38,240 --> 00:06:41,210 Richard Pryor melakukan hal yang sama - mereka pada dasarnya 162 00:06:41,210 --> 00:06:44,880 menulis program yang bercita-cita untuk mengambil semua trailing 163 00:06:44,880 --> 00:06:46,930 angka, semua, kecil kecil, pecahan kecil 164 00:06:46,930 --> 00:06:50,160 uang, dan menyedot mereka off sehingga manusia hanya 165 00:06:50,160 --> 00:06:52,620 berpikir, oh, itu hanya $ 0,10 sana, tapi semua orang 166 00:06:52,620 --> 00:06:54,410 nomor membuntuti akhirnya bertambah. 167 00:06:54,410 --> 00:06:57,490 Jadi ide bagus dan itu menjadi bumerang meriah dalam 168 00:06:57,490 --> 00:06:58,250 khususnya film. 169 00:06:58,250 --> 00:07:01,800 >> Tapi di dunia nyata, juga, ada jauh lebih memprihatinkan 170 00:07:01,800 --> 00:07:03,190 implikasi dari hal-hal ini. 171 00:07:03,190 --> 00:07:05,450 Dan salah satu alasan untuk menyelam ke dalam bidang komputer 172 00:07:05,450 --> 00:07:07,620 ilmu adalah, sekali lagi, penerapannya tidak dengan 173 00:07:07,620 --> 00:07:09,740 ilmu teknik saja, tetapi hanya untuk 174 00:07:09,740 --> 00:07:10,650 bidang lainnya juga. 175 00:07:10,650 --> 00:07:14,760 Jadi ini adalah melihat lebih ringan pada apa yang bisa salah, tetapi 176 00:07:14,760 --> 00:07:17,630 itu juga cukup membuka mata, saya pikir, ketika datang ke 177 00:07:17,630 --> 00:07:20,760 memahami persis bagaimana mana-mana teknologi seperti 178 00:07:20,760 --> 00:07:22,870 komputer dan pemrograman atau hari ini, 179 00:07:22,870 --> 00:07:23,930 dalam bentuk software. 180 00:07:23,930 --> 00:07:26,500 Jadi ini klip berikutnya hanya sekitar enam menit, terus 181 00:07:26,500 --> 00:07:30,320 di mana kami tinggalkan terakhir kali, namun memungkinkan kita untuk melihat sedikit 182 00:07:30,320 --> 00:07:33,370 lebih mendalam di salah satu seperti masalah ini. 183 00:07:33,370 --> 00:07:35,270 Biarkan saya melompat ke tempat kami tinggalkan, 184 00:07:35,270 --> 00:07:37,780 yang ada di sini. 185 00:07:37,780 --> 00:07:41,580 Dan kami memiliki dua bagian dari dua, selama sekitar enam menit di sini. 186 00:07:41,580 --> 00:07:41,980 >> [MAIN FILM] 187 00:07:41,980 --> 00:07:45,430 Terganggu teknologi roket modern. 188 00:07:45,430 --> 00:07:49,280 Pada tahun 1991, dengan dimulainya Perang Teluk pertama, Patriot 189 00:07:49,280 --> 00:07:51,350 rudal mengalami serupa 190 00:07:51,350 --> 00:07:52,645 Nomor konversi masalah. 191 00:07:52,645 --> 00:07:57,460 Dan sebagai hasilnya, 20 orang, 20 tentara Amerika, tewas 192 00:07:57,460 --> 00:08:01,130 dan sekitar 100 lainnya luka-luka, ketika Patriot, yang seharusnya 193 00:08:01,130 --> 00:08:03,400 untuk melindungi terhadap Scud masuk, 194 00:08:03,400 --> 00:08:06,020 gagal menembakkan rudal. 195 00:08:06,020 --> 00:08:09,350 >> Ketika Irak menginvasi Kuwait dan Amerika meluncurkan sebuah Desert 196 00:08:09,350 --> 00:08:13,530 Badai di awal 1991, baterai rudal Patriot adalah 197 00:08:13,530 --> 00:08:16,970 dikerahkan untuk melindungi Arab Saudi dan Israel dari Irak 198 00:08:16,970 --> 00:08:19,810 Rudal Scud serangan. 199 00:08:19,810 --> 00:08:23,740 Patriot adalah AS jarak menengah permukaan-ke-udara sistem, 200 00:08:23,740 --> 00:08:26,370 diproduksi oleh perusahaan Raytheon. 201 00:08:26,370 --> 00:08:30,860 Ukuran interceptor Patriot sendiri, ini tentang 202 00:08:30,860 --> 00:08:35,650 sekitar 20 meter panjang dan beratnya sekitar 2.000 pound. 203 00:08:35,650 --> 00:08:38,809 Dan itu membawa hulu ledak sekitar - saya pikir itu sekitar 204 00:08:38,809 --> 00:08:40,169 150 pound. 205 00:08:40,169 --> 00:08:45,820 Dan hulu ledak itu sendiri adalah ledak tinggi yang memiliki 206 00:08:45,820 --> 00:08:48,120 fragmen sekitarnya. 207 00:08:48,120 --> 00:08:51,870 Casing dari hulu ledak dirancang untuk bertindak seperti gotri. 208 00:08:51,870 --> 00:08:54,920 Rudal itu dilakukan empat per kontainer dan 209 00:08:54,920 --> 00:08:57,850 diangkut oleh semi trailer. 210 00:08:57,850 --> 00:09:02,940 >> The Patriot anti-rudal sistem kembali setidaknya ke 211 00:09:02,940 --> 00:09:05,530 20 tahun sekarang. 212 00:09:05,530 --> 00:09:09,150 Ini pada awalnya dirancang sebagai rudal pertahanan udara untuk 213 00:09:09,150 --> 00:09:12,920 menembak jatuh pesawat musuh, dalam Perang Teluk pertama. 214 00:09:12,920 --> 00:09:17,700 Ketika perang itu datang, Angkatan Darat ingin menggunakannya untuk menembak 215 00:09:17,700 --> 00:09:19,880 bawah Scud, bukan pesawat terbang. 216 00:09:19,880 --> 00:09:24,860 Angkatan Udara Irak tidak begitu banyak masalah, namun Angkatan Darat 217 00:09:24,860 --> 00:09:27,260 khawatir tentang Scud. 218 00:09:27,260 --> 00:09:30,810 Dan sehingga mereka mencoba untuk meng-upgrade Patriot. 219 00:09:30,810 --> 00:09:33,770 Mencegat rudal musuh bepergian di MACH 5 akan 220 00:09:33,770 --> 00:09:35,790 akan cukup menantang. 221 00:09:35,790 --> 00:09:39,460 Tapi ketika Patriot itu bergegas ke dalam layanan, Angkatan Darat 222 00:09:39,460 --> 00:09:43,730 tidak menyadari suatu modifikasi Irak yang membuat mereka 223 00:09:43,730 --> 00:09:46,510 Scud hampir mustahil untuk memukul. 224 00:09:46,510 --> 00:09:50,040 >> Apa yang terjadi adalah rudal Scud yang 225 00:09:50,040 --> 00:09:51,360 datang tidak stabil. 226 00:09:51,360 --> 00:09:52,266 Mereka bergoyang-goyang. 227 00:09:52,266 --> 00:09:56,300 Alasan untuk ini adalah Irak, dalam rangka untuk mendapatkan 600 228 00:09:56,300 --> 00:10:00,650 kilometer keluar dari rudal jarak 300 kilometer, mengambil 229 00:10:00,650 --> 00:10:02,423 berat keluar dari hulu ledak depan dan 230 00:10:02,423 --> 00:10:03,990 membuat hulu ledak ringan. 231 00:10:03,990 --> 00:10:08,700 Jadi sekarang Patriot berusaha untuk datang di Scud, dan sebagian besar 232 00:10:08,700 --> 00:10:11,192 waktu, mayoritas waktu, itu akan 233 00:10:11,192 --> 00:10:13,450 hanya terbang oleh Scud. 234 00:10:13,450 --> 00:10:16,300 Setelah operator Patriot sistem menyadari Patriot 235 00:10:16,300 --> 00:10:20,160 merindukan target, mereka meledakkan hulu ledak Patriot. 236 00:10:20,160 --> 00:10:22,760 Untuk menghindari korban yang besar, hal itu diperbolehkan 237 00:10:22,760 --> 00:10:25,100 jatuh ke tanah. 238 00:10:25,100 --> 00:10:29,400 Itulah apa yang kebanyakan orang melihat, seperti bola api besar di langit, 239 00:10:29,400 --> 00:10:34,930 dan disalahpahami sebagai penyadapan hulu ledak Scud. 240 00:10:34,930 --> 00:10:37,490 >> Meskipun, di langit malam, Patriots tampaknya 241 00:10:37,490 --> 00:10:41,570 Scud berhasil dihancurkan, di Dhahran, tidak mungkin ada 242 00:10:41,570 --> 00:10:43,730 kesalahan tentang kinerjanya. 243 00:10:43,730 --> 00:10:46,370 Di sana, sistem radar Patriot kehilangan jejak dari sebuah 244 00:10:46,370 --> 00:10:50,090 masuk Scud dan tidak pernah diluncurkan karena 245 00:10:50,090 --> 00:10:51,340 untuk cacat software. 246 00:10:54,030 --> 00:10:57,050 Itu adalah Israel yang pertama kali menemukan bahwa semakin lama 247 00:10:57,050 --> 00:11:02,000 sistem itu pada, semakin besar perbedaan waktu menjadi, 248 00:11:02,000 --> 00:11:05,530 karena jam tertanam di komputer sistem. 249 00:11:05,530 --> 00:11:09,060 Sekitar dua minggu sebelum tragedi di Dhahran, yang 250 00:11:09,060 --> 00:11:11,730 Israel dilaporkan ke Departemen Pertahanan bahwa 251 00:11:11,730 --> 00:11:13,250 Sistem kehilangan waktu. 252 00:11:13,250 --> 00:11:15,610 Setelah sekitar delapan jam berjalan, mereka melihat bahwa 253 00:11:15,610 --> 00:11:18,330 Sistem itu menjadi terasa kurang akurat. 254 00:11:18,330 --> 00:11:20,910 Departemen Pertahanan menanggapi dengan mengatakan semua 255 00:11:20,910 --> 00:11:23,710 baterai Patriot untuk tidak meninggalkan sistem 256 00:11:23,710 --> 00:11:25,450 untuk waktu yang lama. 257 00:11:25,450 --> 00:11:28,010 Mereka tidak pernah mengatakan apa lama adalah - 8 jam, 10 258 00:11:28,010 --> 00:11:29,690 jam, 1.000 jam. 259 00:11:29,690 --> 00:11:31,940 Tak ada yang tahu. 260 00:11:31,940 --> 00:11:35,020 >> Baterai Patriot ditempatkan di barak di Dhahran 261 00:11:35,020 --> 00:11:39,030 dan jam cacat internal telah di lebih dari 100 jam 262 00:11:39,030 --> 00:11:42,240 malam tanggal 25 Februari. 263 00:11:42,240 --> 00:11:46,580 Ini dilacak waktu dengan akurasi sekitar sepersepuluh detik. 264 00:11:46,580 --> 00:11:48,830 Sekarang sepersepuluh dari kedua adalah nomor menarik karena 265 00:11:48,830 --> 00:11:52,660 tidak dapat dinyatakan dalam biner, tepatnya, yang berarti 266 00:11:52,660 --> 00:11:54,940 itu tidak dapat dinyatakan tepat dalam setiap 267 00:11:54,940 --> 00:11:57,330 komputer digital modern. 268 00:11:57,330 --> 00:11:59,130 Sulit untuk percaya. 269 00:11:59,130 --> 00:12:01,720 Tetapi menggunakan ini sebagai contoh. 270 00:12:01,720 --> 00:12:04,090 >> Mari kita mengambil nomor yang ketiga. 271 00:12:04,090 --> 00:12:07,950 Satu ketiga tidak dapat dinyatakan dalam desimal, tepatnya. 272 00:12:07,950 --> 00:12:12,710 Sepertiga adalah 0,333 berlangsung tak terhingga. 273 00:12:12,710 --> 00:12:17,050 Tidak ada cara untuk melakukan itu dengan akurasi mutlak dalam desimal. 274 00:12:17,050 --> 00:12:19,340 Itu persis jenis masalah yang sama yang terjadi di 275 00:12:19,340 --> 00:12:20,190 Patriot. 276 00:12:20,190 --> 00:12:24,680 Semakin lama sistem berlari, kesalahan yang buruk menjadi waktu. 277 00:12:24,680 --> 00:12:28,640 Setelah 100 jam operasi, kesalahan dalam waktu hanya 278 00:12:28,640 --> 00:12:29,870 sekitar sepertiga detik. 279 00:12:29,870 --> 00:12:34,790 Tapi dalam hal menargetkan rudal bepergian di MACH 5, 280 00:12:34,790 --> 00:12:39,140 itu mengakibatkan kesalahan pelacakan lebih dari 600 meter. 281 00:12:39,140 --> 00:12:42,510 Ini akan menjadi kesalahan fatal bagi tentara di Dhahran. 282 00:12:42,510 --> 00:12:48,680 >> Apa yang terjadi adalah peluncuran Scud terdeteksi oleh peringatan dini 283 00:12:48,680 --> 00:12:52,440 satelit dan mereka tahu bahwa Scud itu datang mereka 284 00:12:52,440 --> 00:12:53,350 umum arah. 285 00:12:53,350 --> 00:12:55,470 Mereka tidak tahu di mana itu berasal. 286 00:12:55,470 --> 00:12:58,210 Itu sekarang sampai dengan komponen radar Patriot 287 00:12:58,210 --> 00:13:01,920 sistem, membela Dhahran, untuk mencari dan melacak 288 00:13:01,920 --> 00:13:03,700 masuk musuh rudal. 289 00:13:03,700 --> 00:13:05,390 Radar itu sangat cerdas. 290 00:13:05,390 --> 00:13:07,570 Anda benar-benar akan melacak posisi Scud dan kemudian 291 00:13:07,570 --> 00:13:10,340 memprediksi di mana mungkin akan menjadi waktu berikutnya 292 00:13:10,340 --> 00:13:12,040 radar mengirimkan pulsa keluar. 293 00:13:12,040 --> 00:13:13,730 Yang disebut gerbang jangkauan. 294 00:13:13,730 --> 00:13:18,820 Kemudian, setelah Patriot memutuskan cukup waktu telah berlalu pergi 295 00:13:18,820 --> 00:13:22,600 kembali dan memeriksa lokasi ini selanjutnya terdeteksi 296 00:13:22,600 --> 00:13:24,190 objek, itu akan kembali. 297 00:13:24,190 --> 00:13:27,940 Jadi ketika kembali ke tempat yang salah, kemudian tidak melihat 298 00:13:27,940 --> 00:13:31,000 keberatan, dan memutuskan bahwa ada tidak ada objek. 299 00:13:31,000 --> 00:13:34,370 Itu adalah deteksi palsu dan tetes trek. 300 00:13:34,370 --> 00:13:37,630 >> The Scud masuk menghilang dari layar radar. 301 00:13:37,630 --> 00:13:41,300 Dan beberapa detik kemudian, ia menabrak barak. The Scud 302 00:13:41,300 --> 00:13:44,730 menewaskan 28 dan yang terakhir dipecat selama 303 00:13:44,730 --> 00:13:46,450 Perang Teluk pertama. 304 00:13:46,450 --> 00:13:50,570 Tragisnya, perangkat lunak diperbarui tiba di Dhahran 305 00:13:50,570 --> 00:13:52,060 hari berikutnya. 306 00:13:52,060 --> 00:13:56,210 Dan kelemahan perangkat lunak telah diperbaiki, menutup satu bab dalam 307 00:13:56,210 --> 00:13:58,370 sejarah bermasalah dari rudal Patriot. 308 00:14:01,790 --> 00:14:04,990 PATRIOT sebenarnya singkatan dari "Pelacakan Array bertahap 309 00:14:04,990 --> 00:14:08,516 Mencegat target. " 310 00:14:08,516 --> 00:14:13,390 >> Semua, yang tepat sehingga hasil yang jauh lebih menyedihkan dari tidak cukup 311 00:14:13,390 --> 00:14:14,430 memahami dunia ini. 312 00:14:14,430 --> 00:14:18,180 Dan takeaway, benar-benar, dari film ini adalah bahwa solusi 313 00:14:18,180 --> 00:14:20,790 ada itu reboot sistem rudal pertahanan Anda 314 00:14:20,790 --> 00:14:21,770 setiap sekali dalam beberapa saat. 315 00:14:21,770 --> 00:14:24,280 Dan begitu lagi, salah satu tujuan dari program ini, tentu 316 00:14:24,280 --> 00:14:26,900 pada skala yang lebih sederhana daripada aplikasi ini, adalah untuk 317 00:14:26,900 --> 00:14:30,710 semua orang benar-benar open mata untuk persis bagaimana Anda pergi tentang 318 00:14:30,710 --> 00:14:34,380 membuat mesin melakukan apa yang Anda ingin mereka lakukan dan bagaimana Anda pergi 319 00:14:34,380 --> 00:14:37,180 melakukan itu dengan benar, sementara sepanjang jalan melakukannya 320 00:14:37,180 --> 00:14:38,810 dengan baik, elegan, dan sebagainya. 321 00:14:38,810 --> 00:14:41,680 Dan sehingga hari ini, mari selami sedikit lebih dari ini, namun 322 00:14:41,680 --> 00:14:44,210 sehingga kita tidak pergi terlalu cepat, terutama bagi mereka yang kurang 323 00:14:44,210 --> 00:14:46,590 nyaman, tetapi juga agar kita dapat mempertahankan kepentingan 324 00:14:46,590 --> 00:14:49,390 mereka lebih nyaman, mari kita mulai dengan cepat sedikit 325 00:14:49,390 --> 00:14:50,970 dari rekap dari beberapa ide. 326 00:14:50,970 --> 00:14:53,710 Dan lagi, meminta pergi, baik secara langsung atau online, jika Anda memiliki 327 00:14:53,710 --> 00:14:56,320 pertanyaan sehingga kita bisa membuat semua orang pada halaman yang sama. 328 00:14:56,320 --> 00:14:58,820 >> Jadi Appliance CS50, langkah cepat kembali, adalah 329 00:14:58,820 --> 00:15:02,360 apa, dengan kata-kata Anda sendiri? 330 00:15:02,360 --> 00:15:06,454 Tidak masalah jika Anda tidak tahu apa kata-kata mungkin belum. 331 00:15:06,454 --> 00:15:07,830 [Tak terdengar] 332 00:15:07,830 --> 00:15:10,950 Oke, jadi antarmuka universal untuk - 333 00:15:10,950 --> 00:15:11,900 bahwa kita semua bisa berbagi. 334 00:15:11,900 --> 00:15:12,470 Tentu saja. 335 00:15:12,470 --> 00:15:14,840 Jadi kita bisa, misalnya, memberitahu Anda untuk pergi ke beberapa 336 00:15:14,840 --> 00:15:16,910 situs, men-download software ini untuk Mac OS. 337 00:15:16,910 --> 00:15:19,140 Mendownload software ini untuk Windows, mengkonfigurasi di 338 00:15:19,140 --> 00:15:20,100 cara ini dan itu. 339 00:15:20,100 --> 00:15:22,370 Tetapi kenyataannya adalah maka kita mengalami teknis yang tak terhitung 340 00:15:22,370 --> 00:15:23,200 mendukung isu-isu. 341 00:15:23,200 --> 00:15:26,630 Dan juga hari ini, banyak dari apa yang sedang dilakukan sisi server, 342 00:15:26,630 --> 00:15:28,490 dalam dunia komputasi, terutama ketika datang ke 343 00:15:28,490 --> 00:15:31,460 pengembangan web dan aplikasi berbasis web, sebenarnya 344 00:15:31,460 --> 00:15:35,110 cukup sering dilakukan pada komputer Unix atau Linux, sebagai lawan 345 00:15:35,110 --> 00:15:36,800 Mac atau PC Windows. 346 00:15:36,800 --> 00:15:39,240 >> Jadi antara upsides, kemudian, menggunakan hal ini disebut 347 00:15:39,240 --> 00:15:41,500 CS50 Appliance adalah kita semua akan memiliki lingkungan yang sama. 348 00:15:41,500 --> 00:15:43,670 Jadi semua orang pada halaman yang sama tidak peduli hardware apa yang Anda 349 00:15:43,670 --> 00:15:46,650 datang ke kampus dengan tetapi juga akan berkecimpung persis 350 00:15:46,650 --> 00:15:48,230 lingkungan yang sama yang Anda akan menggunakan arah 351 00:15:48,230 --> 00:15:51,080 semester akhir juga untuk pengembangan web, serta dalam 352 00:15:51,080 --> 00:15:53,580 masa depan untuk aplikasi dunia nyata daripadanya. 353 00:15:53,580 --> 00:15:56,350 Jadi lebih konkret, Appliance CS50 adalah sepotong gratis 354 00:15:56,350 --> 00:15:59,400 perangkat lunak yang memungkinkan Anda untuk menjalankan sistem operasi lain, 355 00:15:59,400 --> 00:16:02,670 Linux, dalam hal ini, di komputer Anda sendiri, pada sebuah window. 356 00:16:02,670 --> 00:16:04,750 Sekarang Anda tidak bisa hanya men-download alat. 357 00:16:04,750 --> 00:16:08,170 Anda membutuhkan sebuah program yang dapat digunakan untuk memutar atau menjalankan alat. 358 00:16:08,170 --> 00:16:11,220 Dan itu bagian dari perangkat lunak umumnya dikenal sebagai 359 00:16:11,220 --> 00:16:11,520 hypervisor. 360 00:16:11,520 --> 00:16:14,050 Hypervisors datang dalam bentuk produk seperti VMware, 361 00:16:14,050 --> 00:16:15,820 Virtual Box, Parallels. 362 00:16:15,820 --> 00:16:18,390 Segala macam perusahaan membuat perangkat lunak, baik bebas dan 363 00:16:18,390 --> 00:16:19,310 komersial, sama. 364 00:16:19,310 --> 00:16:21,480 Apa yang Anda akan melihat dalam Soal Set 1 adalah petunjuk tentang cara 365 00:16:21,480 --> 00:16:23,440 mendapatkan perangkat lunak bebas yang dapat digunakan untuk 366 00:16:23,440 --> 00:16:25,000 menjalankan Appliance CS50. 367 00:16:25,000 --> 00:16:28,060 Dan sekali Anda melakukannya, Anda akan memiliki, di jendela pada Mac atau PC, 368 00:16:28,060 --> 00:16:30,710 lingkungan desktop yang terlihat cukup seperti ini, di mana 369 00:16:30,710 --> 00:16:33,100 memiliki hal-menu seperti Start di 370 00:16:33,100 --> 00:16:34,510 bawah kiri pojok. 371 00:16:34,510 --> 00:16:38,030 Memiliki folder Home, atau direktori Home, di kiri atas 372 00:16:38,030 --> 00:16:40,280 ada, tempat sampah, dan sebagainya. 373 00:16:40,280 --> 00:16:43,450 Jadi kita akan menggoda selain rincian yang diperlukan seperti yang kita pergi. 374 00:16:43,450 --> 00:16:46,430 >> Tapi sekarang mari kita mulai menyelam ke C. 375 00:16:46,430 --> 00:16:49,200 Jadi C adalah bahasa pemrograman ini, memiliki semangat yang sama 376 00:16:49,200 --> 00:16:52,390 Scratch, tetapi jauh lebih sedikit grafis, namun ironisnya, jauh 377 00:16:52,390 --> 00:16:54,730 lebih kuat setelah Anda mendapatkan cerdas dengan itu. 378 00:16:54,730 --> 00:16:58,970 Jadi dalam C, kita menulis program dengan menulis kode sumber, yang 379 00:16:58,970 --> 00:17:01,640 ini sintaks bahasa Inggris-seperti, mirip dengan kaus kaki 380 00:17:01,640 --> 00:17:05,609 demonstrasi yang kami lakukan terakhir kali yang memungkinkan Anda untuk 381 00:17:05,609 --> 00:17:07,910 mengekspresikan diri cukup tepat, jika 382 00:17:07,910 --> 00:17:09,760 arcanely, ke komputer. 383 00:17:09,760 --> 00:17:11,960 >> Jadi, apa jenis perangkat lunak produk Anda benar-benar perlu 384 00:17:11,960 --> 00:17:15,520 untuk menulis program dalam bahasa seperti C, berdasarkan kami 385 00:17:15,520 --> 00:17:17,492 percakapan pada hari Senin? 386 00:17:17,492 --> 00:17:19,650 [Tak terdengar] 387 00:17:19,650 --> 00:17:21,079 OK, Anda hanya memerlukan editor teks. 388 00:17:21,079 --> 00:17:22,890 Anda tidak perlu software khusus 389 00:17:22,890 --> 00:17:24,460 per se untuk menulis program. 390 00:17:24,460 --> 00:17:27,220 Anda hanya perlu sebuah editor teks seperti Notepad, pada Windows, 391 00:17:27,220 --> 00:17:30,450 TextEdit pada Mac, atau sesuatu yang disebut gedit, dalam dunia 392 00:17:30,450 --> 00:17:32,020 Linux, yang akan kita gunakan di sini. 393 00:17:32,020 --> 00:17:33,750 Dan itu saja, untuk menulis program. 394 00:17:33,750 --> 00:17:35,480 >> Tapi tulisan ini hanya setengah dari persamaan. 395 00:17:35,480 --> 00:17:36,630 Anda kemudian perlu untuk menjalankannya. 396 00:17:36,630 --> 00:17:38,320 Tetapi dalam rangka untuk menjalankan program - 397 00:17:38,320 --> 00:17:39,600 Anda tidak dapat menjalankan kode sumber. 398 00:17:39,600 --> 00:17:41,500 Anda malah harus melakukan apa yang harus terlebih dahulu? 399 00:17:41,500 --> 00:17:41,900 Ya. 400 00:17:41,900 --> 00:17:43,200 DAVID J. Malan: Anda perlu 401 00:17:43,200 --> 00:17:44,130 kompilasi. 402 00:17:44,130 --> 00:17:49,010 Dan, orang lain, kompilasi kode sumber berarti - 403 00:17:49,010 --> 00:17:50,260 [Tak terdengar] 404 00:17:52,300 --> 00:17:52,700 DAVID J. Malan: Tepat. 405 00:17:52,700 --> 00:17:54,430 Menerjemahkan ke angka satu dan nol. 406 00:17:54,430 --> 00:17:57,150 Karena kita semua, hari ini, memiliki komputer yang memiliki CPU, 407 00:17:57,150 --> 00:18:00,350 hampir semua yang dibuat oleh sebuah perusahaan bernama Intel, dan 408 00:18:00,350 --> 00:18:03,320 Intel Inside, berarti ada ini di dalam otak Anda 409 00:18:03,320 --> 00:18:04,990 komputer, yang dikenal sebagai CPU. 410 00:18:04,990 --> 00:18:07,570 Dan salah satu hal yang otak yang dilakukan adalah, ia tahu 411 00:18:07,570 --> 00:18:10,390 bagaimana memahami pola nol dan satu. 412 00:18:10,390 --> 00:18:13,240 Ia tahu apa yang pola bit mewakili Selain itu, apa yang 413 00:18:13,240 --> 00:18:15,500 Pola merupakan subtractions, apa pola 414 00:18:15,500 --> 00:18:18,890 bit mewakili mencetak, dan menciptakan suara yang dapat didengar. 415 00:18:18,890 --> 00:18:22,450 >> Jadi singkatnya, CPU, ditambah dengan sistem operasi, 416 00:18:22,450 --> 00:18:25,230 yang merupakan bagian dari perangkat lunak yang berjalan di atas CPU, 417 00:18:25,230 --> 00:18:26,050 sehingga untuk berbicara. 418 00:18:26,050 --> 00:18:29,850 Bersama-sama, dua potong tahu cara menjalankan program yang 419 00:18:29,850 --> 00:18:31,070 kita manusia menulis. 420 00:18:31,070 --> 00:18:34,040 >> Jadi jika saya pergi ke Appliance CS50 sini, saya perlu membuka 421 00:18:34,040 --> 00:18:35,660 sebuah editor teks dan saya dapat mengakses 422 00:18:35,660 --> 00:18:36,560 dalam beberapa cara. 423 00:18:36,560 --> 00:18:39,060 Saya dapat pergi ke Menu, Pemrograman, 424 00:18:39,060 --> 00:18:40,230 dan kemudian aku dapat memilih - 425 00:18:40,230 --> 00:18:40,810 nope, tidak menu. 426 00:18:40,810 --> 00:18:43,860 Aku bisa pergi ke Aksesoris / gedit sini untuk membuka 427 00:18:43,860 --> 00:18:45,090 editor teks kecilku. 428 00:18:45,090 --> 00:18:48,030 Atau lebih sederhana, saya dapat mengklik ikon kecil ini di bagian bawah 429 00:18:48,030 --> 00:18:48,970 tangan kiri pojok. 430 00:18:48,970 --> 00:18:50,430 Dan sekarang aku mendapatkan lingkungan ini di sini. 431 00:18:50,430 --> 00:18:52,590 Hal ini cukup mengingatkan editor teks sederhana, dengan hanya 432 00:18:52,590 --> 00:18:53,820 satu atau dua perbedaan. 433 00:18:53,820 --> 00:18:56,420 Di bagian atas, di mana kursor berkedip sekarang, ini adalah di mana 434 00:18:56,420 --> 00:18:57,900 Saya bisa mulai menulis kode saya. 435 00:18:57,900 --> 00:19:00,415 Di bawah ini hal ini disebut jendela terminal. 436 00:19:00,415 --> 00:19:03,400 Dan apa hal-hal yang dapat saya lakukan dalam hal ini 437 00:19:03,400 --> 00:19:04,960 disebut jendela terminal? 438 00:19:04,960 --> 00:19:06,680 [Tak terdengar] 439 00:19:06,680 --> 00:19:07,890 >> Oke, jadi saya akan menjalankan perintah. 440 00:19:07,890 --> 00:19:10,300 Dan beberapa perintah kami berlari pada hari Senin adalah sedikit 441 00:19:10,300 --> 00:19:15,070 samar pada awalnya, tetapi ls untuk daftar, cd untuk direktori perubahan, 442 00:19:15,070 --> 00:19:16,540 rm, untuk menghapus. 443 00:19:16,540 --> 00:19:19,680 Jadi semacam cara lama-sekolah navigasi Anda 444 00:19:19,680 --> 00:19:22,310 komputer, dengan hanya menggunakan keyboard Anda dan perintah tekstual, 445 00:19:22,310 --> 00:19:24,130 dan tidak, pada umumnya, menggunakan mouse. 446 00:19:24,130 --> 00:19:25,960 Tapi kita akan lihat, tak lama, ini benar-benar memberikan kita 447 00:19:25,960 --> 00:19:28,520 sedikit lebih kekuasaan dan presisi yang lebih sedikit yang dapat digunakan untuk 448 00:19:28,520 --> 00:19:29,600 mengekspresikan diri. 449 00:19:29,600 --> 00:19:31,330 Dan kemudian di sini di sebelah kiri, kita hanya akan melihat, 450 00:19:31,330 --> 00:19:34,360 saat kita mulai menulis perangkat lunak, ringkasan kecil dari 451 00:19:34,360 --> 00:19:36,350 program yang kami telah menulis di sebelah kiri atas. 452 00:19:36,350 --> 00:19:38,360 Tapi kita akan melihat bahwa lagi sebelum lama. 453 00:19:38,360 --> 00:19:40,050 >> Jadi mari kita lakukan sesuatu yang cukup sederhana di sini. 454 00:19:40,050 --> 00:19:43,440 Ijinkan saya pergi ke depan dan pergi ke File, Save, dan aku hanya 455 00:19:43,440 --> 00:19:45,970 akan klik pada jharvard sini, ke arah kiri, dan 456 00:19:45,970 --> 00:19:48,930 jharvard adalah, sekali lagi, nama untuk folder rumah saya, saya 457 00:19:48,930 --> 00:19:52,110 file pribadi, saya, sekarang sedang John Harvard, karena semua dari Anda 458 00:19:52,110 --> 00:19:54,230 akan segera John Harvard di lingkungan ini. 459 00:19:54,230 --> 00:19:57,360 Dia punya direktori Home, My Documents, dan sebagainya, 460 00:19:57,360 --> 00:19:58,900 bahwa saya ingin menyimpan, sekarang, file ini masuk 461 00:19:58,900 --> 00:20:01,520 Jadi aku akan menyebutnya hello.c. Lalu aku akan pergi 462 00:20:01,520 --> 00:20:05,770 depan dan klik Save, dan sekarang apa yang saya miliki di sini adalah tab 463 00:20:05,770 --> 00:20:09,440 disebut hello.c, sehingga mirip dengan yang lain jenis editor. 464 00:20:09,440 --> 00:20:11,760 >> Jadi sekarang biarkan aku pergi ke depan dan mulai menulis sebuah program. 465 00:20:11,760 --> 00:20:14,440 int main (void). 466 00:20:14,440 --> 00:20:18,150 Dan kemudian aku lakukan terakhir kali, printf, untuk cetak diformat, 467 00:20:18,150 --> 00:20:22,120 ("Hello, world!" 468 00:20:22,120 --> 00:20:24,500 );. 469 00:20:24,500 --> 00:20:25,630 Hampir selesai. 470 00:20:25,630 --> 00:20:27,130 Tapi aku kehilangan beberapa detail. 471 00:20:27,130 --> 00:20:30,210 Apa yang hilang dari program ini bahwa saya benar-benar perlu untuk 472 00:20:30,210 --> 00:20:31,890 untuk benar-benar mengkompilasi? 473 00:20:31,890 --> 00:20:32,130 Ya. 474 00:20:32,130 --> 00:20:33,980 [Tak terdengar]? 475 00:20:33,980 --> 00:20:35,770 >> DAVID J. Malan: Ya, jadi saya perlu menyertakan standar 476 00:20:35,770 --> 00:20:36,700 I / O perpustakaan. 477 00:20:36,700 --> 00:20:39,470 Jadi ini perlu pergi di atas utama, jadi aku hanya akan 478 00:20:39,470 --> 00:20:40,790 membuat beberapa ruang untuk itu ada. 479 00:20:40,790 --> 00:20:44,420 Dan aku akan melakukan # include. 480 00:20:44,420 --> 00:20:46,570 Dan perhatikan tanda kurung siku ada. 481 00:20:46,570 --> 00:20:49,410 Dan sebagai samping, gedit adalah pengguna kecil yang ramah, jika 482 00:20:49,410 --> 00:20:52,420 kadang-kadang agak membingungkan, dalam hal ini mencoba untuk membantu Anda 483 00:20:52,420 --> 00:20:54,770 mata memperhatikan apa yang berbaris dengan apa. 484 00:20:54,770 --> 00:20:57,760 Jadi fakta bahwa kursor saya tepat di sebelah ini miring 485 00:20:57,760 --> 00:21:00,600 braket, perhatikan bagaimana hal itu menyoroti miring lainnya 486 00:21:00,600 --> 00:21:01,920 braket ditambah satu ini. 487 00:21:01,920 --> 00:21:03,770 Dan itu hanya untuk menarik perhatian saya pada kenyataan bahwa saya 488 00:21:03,770 --> 00:21:04,460 memiliki simetri. 489 00:21:04,460 --> 00:21:07,010 Dan simetri dalam pemrograman umumnya merupakan hal yang baik. 490 00:21:07,010 --> 00:21:10,270 Demikian pula, jika saya memindahkan kursor ke akhir, perhatikan bagaimana 491 00:21:10,270 --> 00:21:13,630 kurung kurawal berbaris untuk menunjukkan bahwa, ya, saya memiliki satu terbuka 492 00:21:13,630 --> 00:21:15,160 dan yang tertutup, sehingga untuk berbicara. 493 00:21:15,160 --> 00:21:16,640 >> Baiklah, dan saya bisa melakukan satu hal lainnya. 494 00:21:16,640 --> 00:21:20,090 Ini tidak benar-benar diperlukan, tetapi praktik yang baik, untuk mengatakan 495 00:21:20,090 --> 00:21:21,250 return 0. 496 00:21:21,250 --> 00:21:24,140 Dan 0 kembali melakukan apa bagi kita di sini? 497 00:21:24,140 --> 00:21:25,584 Atau menandakan apa? 498 00:21:25,584 --> 00:21:27,480 [Tak terdengar] 499 00:21:27,480 --> 00:21:28,300 DAVID J. Malan: Tapi tidak ada yang salah. 500 00:21:28,300 --> 00:21:30,280 Dan terus terang sulit untuk banyak untuk pergi salah dalam 501 00:21:30,280 --> 00:21:31,250 memprogram pendek ini. 502 00:21:31,250 --> 00:21:33,930 Jadi aku hanya menjadi super eksplisit bahwa semuanya baik-baik. 503 00:21:33,930 --> 00:21:36,740 Aku, manusia, ketika saya menjalankan program ini, mungkin akan pernah 504 00:21:36,740 --> 00:21:38,150 melihat bahwa 0. 505 00:21:38,150 --> 00:21:41,070 Umumnya, angka-angka yang sedang kembali dari main 506 00:21:41,070 --> 00:21:43,540 hanya membesarkan kepala mereka ke manusia saat 507 00:21:43,540 --> 00:21:44,360 sesuatu yang tidak beres. 508 00:21:44,360 --> 00:21:46,640 Dan Anda mendapatkan pop up sedikit kesalahan sistem mengatakan, satu, 509 00:21:46,640 --> 00:21:48,760 dua, tiga, atau apa pun nomor adalah bahwa 510 00:21:48,760 --> 00:21:50,100 itu benar-benar kembali. 511 00:21:50,100 --> 00:21:52,870 Jadi apa pun yang salah dengan ini? 512 00:21:52,870 --> 00:21:55,300 [Tak terdengar] 513 00:21:55,300 --> 00:21:58,100 >> DAVID J. Malan: Jadi ini tidak begitu banyak kesalahan fungsional 514 00:21:58,100 --> 00:21:59,240 tapi satu estetika. 515 00:21:59,240 --> 00:22:02,340 Saya mungkin harus dimasukkan ke dalam karakter newline ada di 516 00:22:02,340 --> 00:22:05,240 akhir string ini sehingga kita benar-benar memindahkan kursor ke 517 00:22:05,240 --> 00:22:08,340 baris berikutnya, dan program hanya terlihat sedikit lebih cantik. 518 00:22:08,340 --> 00:22:10,340 >> Jadi sekarang biarkan aku pergi ke jendela terminal saya 519 00:22:10,340 --> 00:22:11,490 dan zoom kembali masuk 520 00:22:11,490 --> 00:22:13,390 Dan hal ini di sini, ini disebut prompt. 521 00:22:13,390 --> 00:22:16,760 Ini hanya mengingatkan saya siapa saya, jharvard @ alat, di mana 522 00:22:16,760 --> 00:22:18,850 alat adalah nama komputer saya pada. 523 00:22:18,850 --> 00:22:22,380 Dalam kurung ini tilde, simbol coretan, yang 524 00:22:22,380 --> 00:22:24,160 mewakili apa? 525 00:22:24,160 --> 00:22:25,590 HADIRIN: direktori Home. 526 00:22:25,590 --> 00:22:26,350 DAVID J. Malan: direktori Home. 527 00:22:26,350 --> 00:22:29,350 Jadi itu hanya notasi singkat untuk mengatakan Anda berada di 528 00:22:29,350 --> 00:22:32,780 Anda pribadi folder dimana semua file Anda pergi secara default. 529 00:22:32,780 --> 00:22:36,080 Jadi sekarang, di sini, saya bisa mengetik ls untuk daftar. 530 00:22:36,080 --> 00:22:40,020 Dan satu-satunya hal yang saya lihat di sini pada saat ini adalah hello.c. 531 00:22:40,020 --> 00:22:41,770 Dan itu bagus karena saya hanya menulis ini. 532 00:22:41,770 --> 00:22:44,380 >> Jadi biarkan aku pergi ke depan dan memang membuat halo. 533 00:22:44,380 --> 00:22:46,830 Dan perhatikan aku tidak mengetik membuat hello.c. 534 00:22:46,830 --> 00:22:50,300 Sebaliknya, aku hanya mengetik nama dasar file, halo. 535 00:22:50,300 --> 00:22:53,690 Dan membuat, seperti yang kita lihat pada hari Senin, hanya akan menyimpulkan bahwa saya ingin 536 00:22:53,690 --> 00:22:54,920 c file.. 537 00:22:54,920 --> 00:22:56,820 Jadi sekarang aku mengetik membuat halo. 538 00:22:56,820 --> 00:22:59,280 Sekarang saya melihat perintah ini cukup panjang dan akan terus 539 00:22:59,280 --> 00:23:00,480 melihat ini lagi dan lagi. 540 00:23:00,480 --> 00:23:03,620 Tapi harus jelas, dentang, kata yang baru saja muncul, 541 00:23:03,620 --> 00:23:05,340 itulah compiler yang sebenarnya. 542 00:23:05,340 --> 00:23:08,200 Buatlah hanya utilitas membangun. 543 00:23:08,200 --> 00:23:11,900 Ini hanya sebuah program lebih user friendly yang menyelamatkan saya, dalam 544 00:23:11,900 --> 00:23:15,310 jangka panjang, karena harus mengetikkan sangat membosankan panjang 545 00:23:15,310 --> 00:23:17,020 perintah seperti itu. 546 00:23:17,020 --> 00:23:18,950 Jadi Anda bisa menjalankan dentang manual. 547 00:23:18,950 --> 00:23:20,530 Anda bisa mengetik semua itu secara manual. 548 00:23:20,530 --> 00:23:21,580 Hanya mendapat sangat membosankan. 549 00:23:21,580 --> 00:23:24,720 Dan sehingga membuat hanyalah sebuah program yang menyederhanakan hidup kita dan 550 00:23:24,720 --> 00:23:27,120 menjalankan perintah yang lebih kompleks bagi kita. 551 00:23:27,120 --> 00:23:29,410 >> Baiklah, jadi sekarang apa file yang harus saya miliki 552 00:23:29,410 --> 00:23:31,540 dalam direktori saya saat ini? 553 00:23:31,540 --> 00:23:36,310 Tidak hanya hello.c, tetapi juga halo. 554 00:23:36,310 --> 00:23:39,710 Jadi jika saya ingin menjalankan halo, ingat bahwa saya katakan dot slash, 555 00:23:39,710 --> 00:23:42,220 mana berarti dot masuk ke folder saat ini, di mana pun Anda 556 00:23:42,220 --> 00:23:46,060 , dan kemudian menjalankan program yang disebut halo, dan memang, sekarang, 557 00:23:46,060 --> 00:23:48,080 Saya memiliki dunia halo. 558 00:23:48,080 --> 00:23:51,640 Baiklah, pertanyaan pada alur kerja atau sintaks 559 00:23:51,640 --> 00:23:52,890 apa yang baru saja kita lakukan? 560 00:23:55,380 --> 00:23:57,040 >> Baiklah, jadi mari kita mengambil hal-hal takik lagi. 561 00:23:57,040 --> 00:24:00,430 Jadi ini underwhelming untuk hanya menulis sebuah program yang hanya 562 00:24:00,430 --> 00:24:01,790 pernah mengatakan Halo, dunia. 563 00:24:01,790 --> 00:24:03,920 Jadi kita mengubahnya, Senin, mengatakan, halo, David. 564 00:24:03,920 --> 00:24:06,560 Ini sedikit lebih pribadi, tetapi hanya sebagai keras dikodekan sebagai 565 00:24:06,560 --> 00:24:07,410 pertama versi. 566 00:24:07,410 --> 00:24:08,780 Jadi tidak semua yang menarik. 567 00:24:08,780 --> 00:24:13,120 Tapi ada ada, di C, fungsi tentu selain 568 00:24:13,120 --> 00:24:15,700 cetak, fungsi yang memungkinkan Anda mendapatkan input pengguna. 569 00:24:15,700 --> 00:24:17,990 Dan cara kita melakukan ini, hari yang lain, adalah sebagai berikut. 570 00:24:17,990 --> 00:24:21,440 Sebelum saya benar-benar mencetak sesuatu, saya pertama kali 571 00:24:21,440 --> 00:24:22,410 sesuatu dari pengguna. 572 00:24:22,410 --> 00:24:23,370 Jadi biarkan aku melakukan ini lagi. 573 00:24:23,370 --> 00:24:26,580 >> String s, di mana s hanya sebuah nama sewenang-wenang, di sini, untuk 574 00:24:26,580 --> 00:24:30,600 string, sama GetString. 575 00:24:30,600 --> 00:24:32,070 Jadi apa yang GetString? 576 00:24:32,070 --> 00:24:34,630 Ini jelas mendapat string, berdasarkan namanya. 577 00:24:34,630 --> 00:24:37,560 Tapi apa yang terjadi, lebih teknis? 578 00:24:37,560 --> 00:24:38,440 Ini fungsi. 579 00:24:38,440 --> 00:24:41,790 Jadi itu adalah fungsi yang tidak datang dengan C per se. 580 00:24:41,790 --> 00:24:43,660 CS50 staf menulis ini. 581 00:24:43,660 --> 00:24:46,940 Dan sehingga untuk menggunakan ini, Anda tidak bisa hanya termasuk stdio.h, 582 00:24:46,940 --> 00:24:49,630 Anda juga perlu untuk memasukkan apa? 583 00:24:49,630 --> 00:24:50,060 Ya. 584 00:24:50,060 --> 00:24:54,210 Jadi cs50.h, yang hanya file kami menulis beberapa tahun yang lalu. 585 00:24:54,210 --> 00:24:57,130 Kami memasangnya di alat untuk Anda bersama 586 00:24:57,130 --> 00:24:58,490 semua file standar. 587 00:24:58,490 --> 00:25:00,500 Dan sehingga dalam beberapa minggu pertama kelas, kita akan menggunakan 588 00:25:00,500 --> 00:25:02,820 ini hanya untuk menyederhanakan proses melakukan sangat dasar 589 00:25:02,820 --> 00:25:04,600 hal-hal seperti input pengguna mendapatkan. 590 00:25:04,600 --> 00:25:07,370 Karena seperti yang kita akan lihat dalam beberapa minggu, mendapatkan input pengguna dalam 591 00:25:07,370 --> 00:25:10,180 bahasa seperti C sebenarnya mengejutkan kompleks, 592 00:25:10,180 --> 00:25:14,360 terutama karena Anda tidak tahu sebelumnya, biasanya, bagaimana 593 00:25:14,360 --> 00:25:17,030 banyak barang pengguna akan mengetik masuk 594 00:25:17,030 --> 00:25:20,340 Dan ketika Anda tidak tahu berapa banyak data yang diharapkan, Anda tidak 595 00:25:20,340 --> 00:25:22,380 tahu berapa banyak memori untuk mengalokasikan. 596 00:25:22,380 --> 00:25:25,480 Dan jika Anda benar-benar memiliki seorang pengguna yang berlawanan yang mencoba 597 00:25:25,480 --> 00:25:28,180 untuk kembali ke sistem Anda, crash komputer Anda, baik, 598 00:25:28,180 --> 00:25:31,600 umumnya metode pertama serangan adalah, seperti yang saya lakukan pada 599 00:25:31,600 --> 00:25:34,950 Senin, ketik urutan panjang seluruh karakter acak, 600 00:25:34,950 --> 00:25:37,020 tekan Enter, dan melihat apa yang istirahat. 601 00:25:37,020 --> 00:25:40,800 Karena pada umumnya, jika istirahat program, yang mengisyaratkan 602 00:25:40,800 --> 00:25:42,650 lubang keamanan, berpotensi. 603 00:25:42,650 --> 00:25:45,250 Ini tentu mengisyaratkan Anda, programmer, setelah membuat 604 00:25:45,250 --> 00:25:49,050 kesalahan, tetapi lebih berbahaya, Anda mungkin telah membuat 605 00:25:49,050 --> 00:25:52,430 yang berhubungan dengan keamanan kesalahan, dan umumnya kita akan melihat bahwa 606 00:25:52,430 --> 00:25:54,840 itulah bagaimana mesin terganggu sampai hari ini, baik 607 00:25:54,840 --> 00:25:56,620 dalam dunia web dan program di 608 00:25:56,620 --> 00:25:58,070 baris perintah, seperti ini. 609 00:25:58,070 --> 00:25:58,350 >> Baiklah. 610 00:25:58,350 --> 00:26:00,460 Jadi string s sama GetString. 611 00:26:00,460 --> 00:26:03,380 Jadi lebih konkret sekarang, apa line 6 lakukan di sini? 612 00:26:03,380 --> 00:26:05,640 Jadi fungsi di sebelah kanan mendapatkan string, 613 00:26:05,640 --> 00:26:06,890 Dibutuhkan berapa banyak argumen? 614 00:26:09,458 --> 00:26:09,900 Oke. 615 00:26:09,900 --> 00:26:10,400 Jadi tidak ada. 616 00:26:10,400 --> 00:26:11,360 Sebuah kewarasan sedikit memeriksa. 617 00:26:11,360 --> 00:26:15,380 Argumen, sekali lagi, hanya sebuah masukan ke fungsi untuk mengubah 618 00:26:15,380 --> 00:26:17,250 yang standar perilaku dalam beberapa cara. 619 00:26:17,250 --> 00:26:19,540 Tapi dalam kasus ini, saya tidak ingin mengubah 620 00:26:19,540 --> 00:26:20,650 perilaku GetString. 621 00:26:20,650 --> 00:26:22,430 Saya hanya ingin mendapatkan string. 622 00:26:22,430 --> 00:26:25,190 Jadi saya menaruh apa-apa di kurung, dan kemudian aku meletakkan 623 00:26:25,190 --> 00:26:27,550 koma demarking akhir baris kode. 624 00:26:27,550 --> 00:26:29,840 Sekarang, tanda sama dengan tidak berarti sama, per se. 625 00:26:29,840 --> 00:26:32,690 Ini berarti tugas, yang berarti menempatkan apapun mendapat 626 00:26:32,690 --> 00:26:36,060 outputted di bagian dalam kanan apa pun yang di sebelah kiri. 627 00:26:36,060 --> 00:26:39,400 >> Jadi di sebelah kiri, kita mengatakan bahwa kita telah mendeklarasikan 628 00:26:39,400 --> 00:26:41,630 string disebut s. 629 00:26:41,630 --> 00:26:44,240 Dan lebih khusus, kami telah mengalokasikan memori dalam 630 00:26:44,240 --> 00:26:46,340 yang kita akan menempatkan bit yang mewakili urutan 631 00:26:46,340 --> 00:26:46,850 karakter. 632 00:26:46,850 --> 00:26:49,400 Tapi untuk saat ini, kami telah mengalokasikan 633 00:26:49,400 --> 00:26:51,450 atau menyatakan string. 634 00:26:51,450 --> 00:26:51,790 Baiklah. 635 00:26:51,790 --> 00:26:54,760 Jadi sekarang setelah saya sudah melakukan ini, saya ingin pasang di nilai 636 00:26:54,760 --> 00:26:56,535 s, bukan nilai Daud. 637 00:26:56,535 --> 00:27:00,200 Jadi ini salah mengapa? 638 00:27:03,060 --> 00:27:04,870 Jadi ini hanya harfiah s hard-coded. 639 00:27:04,870 --> 00:27:06,870 Ini untuk mengatakan "Halo, s," yang tidak apa yang saya inginkan. 640 00:27:06,870 --> 00:27:07,790 Jadi saya bisa melakukan ini. 641 00:27:07,790 --> 00:27:10,330 Tanda persen adalah placeholder, tapi sekarang aku perlu 642 00:27:10,330 --> 00:27:12,520 masuk ke mencetak argumen kedua. 643 00:27:12,520 --> 00:27:15,160 Ingat bahwa argumen untuk fungsi yang dipisahkan oleh 644 00:27:15,160 --> 00:27:20,300 koma, jadi koma berikutnya di sini saya menempatkan setelah surat s. 645 00:27:20,300 --> 00:27:23,740 Dan dalam konteks ini sekarang, s adalah variabel, dan printf, 646 00:27:23,740 --> 00:27:25,550 setelah menerima dua input - 647 00:27:25,550 --> 00:27:29,440 string di sebelah kiri dan nama variabel di sebelah kanan - 648 00:27:29,440 --> 00:27:32,750 itu akan pasang yang terakhir ke mantan bagi kita, dan 649 00:27:32,750 --> 00:27:34,600 hanya mencetak string yang indah bagus berisi 650 00:27:34,600 --> 00:27:36,770 apa pun yang kita diketik masuk 651 00:27:36,770 --> 00:27:37,560 >> Jadi mari kita coba ini. 652 00:27:37,560 --> 00:27:38,860 Akan pergi ke depan dan zoom out, kembali 653 00:27:38,860 --> 00:27:40,250 ke jendela terminal saya. 654 00:27:40,250 --> 00:27:41,840 Zoom in di bagian bawah sini. 655 00:27:41,840 --> 00:27:44,070 Ketik kembali membuat halo. 656 00:27:44,070 --> 00:27:45,870 Dentang tampaknya telah menjalankan kembali. 657 00:27:45,870 --> 00:27:49,280 Aku akan mengetik / hello, Enter.. 658 00:27:49,280 --> 00:27:52,145 Tidak ada yang tampaknya terjadi, tapi itu pada prompt 659 00:27:52,145 --> 00:27:55,700 bahwa saya bisa mengetik sesuatu seperti Nate, Enter, dan sekarang kami memiliki 660 00:27:55,700 --> 00:27:56,380 Halo, Nate. 661 00:27:56,380 --> 00:27:59,600 Dan saya bisa melakukannya lagi dengan Rob, dan sebagainya. 662 00:27:59,600 --> 00:28:03,410 Jadi mudah-mudahan sekarang program ini berperilaku seperti yang saya inginkan. 663 00:28:03,410 --> 00:28:05,720 >> Sekarang, tidak semua pengguna yang ramah. 664 00:28:05,720 --> 00:28:07,930 Aku tidak tahu apa yang diharapkan dari saya. 665 00:28:07,930 --> 00:28:09,620 Jadi kita pasti bisa membersihkan ini sedikit. 666 00:28:09,620 --> 00:28:13,270 Biarkan aku pergi kembali ke sini, dan bukan hanya menyelam dalam dan 667 00:28:13,270 --> 00:28:16,480 meminta pengguna untuk string, biar eksplisit memberitahu 668 00:28:16,480 --> 00:28:17,750 pengguna apa yang saya harapkan. 669 00:28:17,750 --> 00:28:21,610 Jadi printf ("Masukkan string:" 670 00:28:21,610 --> 00:28:24,080 ); 671 00:28:24,080 --> 00:28:25,510 Jadi tidak ada variabel di sini. 672 00:28:25,510 --> 00:28:26,750 Tidak ada tanda-tanda persen. 673 00:28:26,750 --> 00:28:28,550 Hanya kalimat bahasa Inggris yang sederhana. 674 00:28:28,550 --> 00:28:34,030 Sekarang saya pergi ke bawah sini dan jalankan kembali program saya. 675 00:28:34,030 --> 00:28:35,380 Tapi tidak ada yang tampaknya telah berubah. 676 00:28:35,380 --> 00:28:37,350 Kenapa? 677 00:28:37,350 --> 00:28:38,380 Saya harus mengkompilasi ulang itu. 678 00:28:38,380 --> 00:28:39,570 Jadi mudah untuk membuat kesalahan. 679 00:28:39,570 --> 00:28:41,700 Tapi Anda harus tidak hanya menyimpan file tetapi 680 00:28:41,700 --> 00:28:43,260 mengkompilasi ulang program tersebut. 681 00:28:43,260 --> 00:28:46,640 Dan jadi jika saya kembali menjalankan make halo, sekarang dentang berjalan. 682 00:28:46,640 --> 00:28:51,800 Sekarang saya dapat menjalankan / hello.. Dan sekarang saya melihat "Masukkan string:". 683 00:28:51,800 --> 00:28:52,050 Oke. 684 00:28:52,050 --> 00:28:53,440 Sekarang sedikit lebih user-friendly. 685 00:28:53,440 --> 00:28:55,850 Nate, Enter, halo, Nate. 686 00:28:55,850 --> 00:28:57,310 >> Nah, mari kita coba ini lagi dan mulai berpikir 687 00:28:57,310 --> 00:28:58,080 tentang kasus sudut. 688 00:28:58,080 --> 00:29:00,520 Jadi seperti di Scratch, Anda didorong atau sedang 689 00:29:00,520 --> 00:29:03,180 didorong dalam spesifikasi untuk jenis berpikir tentang apa yang bisa 690 00:29:03,180 --> 00:29:06,610 salah jika Anda tidak mengantisipasi semua pengguna mungkin dilakukan. 691 00:29:06,610 --> 00:29:08,050 Bugs, oleh karena itu, mungkin terjadi. 692 00:29:08,050 --> 00:29:09,710 Jadi memasukkan string - 693 00:29:09,710 --> 00:29:11,130 apa kasus sudut sini? 694 00:29:11,130 --> 00:29:13,320 Apa skenario yang saya, programmer, mungkin tidak memiliki 695 00:29:13,320 --> 00:29:16,070 diantisipasi? 696 00:29:16,070 --> 00:29:17,600 Ya. 697 00:29:17,600 --> 00:29:17,920 Oke. 698 00:29:17,920 --> 00:29:22,060 Jadi bagaimana jika saya mengetik di sejumlah seperti ini? 699 00:29:22,060 --> 00:29:22,500 Baiklah. 700 00:29:22,500 --> 00:29:24,490 Jadi itu masih bekerja. 701 00:29:24,490 --> 00:29:25,880 Gramatically tidak masuk akal. 702 00:29:25,880 --> 00:29:27,180 Tapi setidaknya program ini bekerja. 703 00:29:27,180 --> 00:29:28,650 >> Apa kasus lain sudut? 704 00:29:28,650 --> 00:29:29,610 Sesuatu yang saya tidak mengharapkan. 705 00:29:29,610 --> 00:29:31,590 Ya? 706 00:29:31,590 --> 00:29:31,940 Oke. 707 00:29:31,940 --> 00:29:34,950 Jadi kita bisa melakukan sesuatu seperti nomor benar-benar besar. 708 00:29:34,950 --> 00:29:37,270 Jadi mari kita lakukan ini di sini. 709 00:29:37,270 --> 00:29:40,880 Biarkan aku tampilannya keluar untuk kedua, biarkan aku sorot. 710 00:29:40,880 --> 00:29:42,250 Tidak bisa copy dan paste di sini. 711 00:29:42,250 --> 00:29:42,470 Baiklah. 712 00:29:42,470 --> 00:29:44,440 Jadi saya tidak bisa copy dan paste di jendela terminal, sehingga kita akan 713 00:29:44,440 --> 00:29:46,950 hanya mensimulasikan itu. 714 00:29:46,950 --> 00:29:51,340 Biarkan saya zoom out, akan membungkus. 715 00:29:51,340 --> 00:29:52,700 Aku tidak akan melakukan hal ini terlalu lama, karena tidak akan 716 00:29:52,700 --> 00:29:54,440 benar-benar istirahat dalam program ini. 717 00:29:54,440 --> 00:29:55,260 Tapi itu bisa. 718 00:29:55,260 --> 00:29:55,830 Enter. 719 00:29:55,830 --> 00:29:56,580 Tapi itu tidak. 720 00:29:56,580 --> 00:29:57,050 Baiklah. 721 00:29:57,050 --> 00:29:58,440 Tapi itu kasus sudut asli. 722 00:29:58,440 --> 00:30:01,610 Dan satu-satunya alasan yang berperilaku dengan benar, sehingga untuk 723 00:30:01,610 --> 00:30:05,820 berbicara, karena GetString fungsi CS50 sebenarnya 724 00:30:05,820 --> 00:30:08,040 dirancang di bawah kap mesin, seperti yang kita akan lihat dalam beberapa minggu, 725 00:30:08,040 --> 00:30:11,570 untuk secara otomatis mengalokasikan RAM lebih dan lebih, lebih dan lebih 726 00:30:11,570 --> 00:30:14,330 memori dari sistem operasi, ketika menyadari, wow, 727 00:30:14,330 --> 00:30:16,670 Anda benar-benar mengetikkan sesuatu yang cukup panjang. 728 00:30:16,670 --> 00:30:18,500 Sekarang, ini adalah sedikit dari sebuah kebohongan putih. 729 00:30:18,500 --> 00:30:22,020 Jika kita benar-benar berhenti cukup lama dan saya mengetikkan 730 00:30:22,020 --> 00:30:24,640 sesuatu seperti 5 miliar karakter di keyboard 731 00:30:24,640 --> 00:30:28,060 sini, atau benar-benar memukul copy-paste cukup sedikit, kita sangat mungkin 732 00:30:28,060 --> 00:30:29,730 dapat menyebabkan program untuk kecelakaan. 733 00:30:29,730 --> 00:30:32,130 Hanya sedikit lebih keras untuk mensimulasikan bahwa dengan terbatas 734 00:30:32,130 --> 00:30:33,740 jumlah waktu. 735 00:30:33,740 --> 00:30:37,320 >> Apa kasus lain sudut kita bisa mencoba? 736 00:30:37,320 --> 00:30:38,730 Ya? 737 00:30:38,730 --> 00:30:39,020 Ya. 738 00:30:39,020 --> 00:30:40,360 Jadi mengapa kita tidak menjawab apa-apa? 739 00:30:40,360 --> 00:30:43,130 Jadi kita benar-benar harus mengambil beberapa tindakan, karena jika 740 00:30:43,130 --> 00:30:45,060 program akan duduk di sana berkedip sepanjang hari. 741 00:30:45,060 --> 00:30:46,860 Tapi jika aku hanya tekan Enter - 742 00:30:46,860 --> 00:30:48,780 OK, sekarang, masih terlihat salah. 743 00:30:48,780 --> 00:30:51,670 Tidak crash, tapi mungkin sekarang ada kesempatan untuk 744 00:30:51,670 --> 00:30:54,190 mulai menerapkan program yang lebih ketat 745 00:30:54,190 --> 00:30:55,290 yang benar-benar memeriksa. 746 00:30:55,290 --> 00:30:57,640 Dan jika string, kalimat, kata yang saya 747 00:30:57,640 --> 00:31:00,890 mengetik memiliki panjang 0, baik, mungkin aku harus berteriak di 748 00:31:00,890 --> 00:31:03,770 pengguna, atau memberitahu dia untuk memasukkan string lagi, sehingga 749 00:31:03,770 --> 00:31:06,560 kita benar-benar mendapatkan apa yang tampak seperti perilaku yang benar dan tidak 750 00:31:06,560 --> 00:31:08,570 hanya lengkap pengawasan di bagian saya. 751 00:31:08,570 --> 00:31:11,130 >> Pertanyaan di belakang? 752 00:31:11,130 --> 00:31:11,970 Desimal angka. 753 00:31:11,970 --> 00:31:13,120 Jadi kita bisa mencoba itu juga. 754 00:31:13,120 --> 00:31:16,840 1,10000005. 755 00:31:16,840 --> 00:31:19,470 Sepertinya itu akan hanya bekerja benar-benar baik-baik saja. 756 00:31:19,470 --> 00:31:21,160 Dan yang benar-benar diharapkan. 757 00:31:21,160 --> 00:31:24,550 Meskipun kita mungkin telah mengetik angka di sana, atau 758 00:31:24,550 --> 00:31:28,200 jumlah yang lebih besar sebelumnya, menyadari bahwa ketika kita mengetik pengguna 759 00:31:28,200 --> 00:31:31,070 masukan dan kita menggunakan fungsi GetString, tidak 760 00:31:31,070 --> 00:31:34,380 peduli jika apa yang aku mengetik terlihat seperti nomor. 761 00:31:34,380 --> 00:31:36,720 Ingat bahwa menurut ASCII, segala sesuatu pada 762 00:31:36,720 --> 00:31:39,920 Keyboard memiliki nilai numerik yang dapat dipetakan ke 763 00:31:39,920 --> 00:31:41,480 karakter, char. 764 00:31:41,480 --> 00:31:44,490 Jadi dalam hal ini, meskipun saya mungkin mengetikkan angka, yang 765 00:31:44,490 --> 00:31:48,190 komputer akan memikirkan hal itu, sehingga untuk berbicara, sebagai string - 766 00:31:48,190 --> 00:31:49,870 sesuatu yang tampak seperti angka, tetapi 767 00:31:49,870 --> 00:31:51,090 tidak benar-benar nomor. 768 00:31:51,090 --> 00:31:53,450 Tapi itu sebenarnya segue yang sempurna, karena sekarang kita bisa 769 00:31:53,450 --> 00:31:55,450 sebenarnya transisi ke program menulis bahwa 770 00:31:55,450 --> 00:31:56,730 menggunakan jenis data lainnya. 771 00:31:56,730 --> 00:32:01,840 >> Jadi selain menggunakan karakter, atau lebih tepatnya, selain menggunakan string, 772 00:32:01,840 --> 00:32:04,510 menyadari bahwa kita memiliki tipe data lain dalam C maupun di 773 00:32:04,510 --> 00:32:05,230 bahasa lainnya. 774 00:32:05,230 --> 00:32:08,480 Sebuah char, seperti namanya, hanya satu karakter. 775 00:32:08,480 --> 00:32:12,150 Sebuah float adalah nilai floating point, dan itu hanya mewah yang 776 00:32:12,150 --> 00:32:14,470 cara untuk mengatakan sejumlah nyata - sesuatu yang memiliki desimal 777 00:32:14,470 --> 00:32:17,410 titik di dalamnya dengan beberapa nomor ke kiri dan / atau kanan. 778 00:32:17,410 --> 00:32:21,370 Int adalah bilangan bulat, yang hanya nomor seperti 123. 779 00:32:21,370 --> 00:32:24,170 Dan sekarang lebih menarik hal-hal seperti ganda. 780 00:32:24,170 --> 00:32:28,540 Apa yang kita katakan ganda adalah terakhir kali? 781 00:32:28,540 --> 00:32:30,050 Ini 64, benar. 782 00:32:30,050 --> 00:32:33,560 Jadi sementara biasanya pelampung adalah 32-bit - 783 00:32:33,560 --> 00:32:37,340 jadi selama ini di memori, menggunakan 32 angka satu dan nol untuk 784 00:32:37,340 --> 00:32:40,530 mewakili nilai-nilai - ganda secara harfiah dua kali lipat, yang 785 00:32:40,530 --> 00:32:43,810 berarti bahwa Anda dapat mewakili angka yang lebih besar, atau 786 00:32:43,810 --> 00:32:45,810 Anda dapat mewakili angka lebih tepat. 787 00:32:45,810 --> 00:32:48,690 Sehingga Anda dapat memiliki nomor lebih setelah titik desimal, namun 788 00:32:48,690 --> 00:32:51,520 sebagai sesama mengatakan dalam video, bahkan sesuatu yang sederhana 789 00:32:51,520 --> 00:32:55,360 konseptual seperti 1/3 tidak dapat diwakili tepat oleh 790 00:32:55,360 --> 00:32:58,330 komputer, karena pada akhirnya Anda kehabisan bit, dan 791 00:32:58,330 --> 00:33:02,510 Oleh karena itu Anda hanya dapat melakukan .33333333 kali begitu banyak, di 792 00:33:02,510 --> 00:33:05,050 titik mana Anda hanya harus mengatakan aku keluar dari representasi 793 00:33:05,050 --> 00:33:08,120 ruang, saya harus sebut saja sehari dan mewakili 794 00:33:08,120 --> 00:33:10,200 agak imprecisely seperti itu. 795 00:33:10,200 --> 00:33:11,110 Dan lama - 796 00:33:11,110 --> 00:33:13,880 Nama bodoh, tapi itu karena ada tipe data yang dikenal sebagai 797 00:33:13,880 --> 00:33:19,350 panjang di C yang kebetulan sering 32 bit, seperti sebuah 798 00:33:19,350 --> 00:33:21,670 int adalah 32 bit, tetapi lama adalah 799 00:33:21,670 --> 00:33:23,560 umumnya 64 bit. 800 00:33:23,560 --> 00:33:25,740 Jadi itu hanya berarti Anda dapat mewakili besar 801 00:33:25,740 --> 00:33:26,990 angka dari ini. 802 00:33:26,990 --> 00:33:27,410 >> Baiklah. 803 00:33:27,410 --> 00:33:29,390 Jadi jika kita benar-benar ingin memulai mewakili sesuatu, kita 804 00:33:29,390 --> 00:33:31,030 mungkin membutuhkan lebih banyak jenis canggih, dan 805 00:33:31,030 --> 00:33:32,340 itu sebabnya kita memiliki string. 806 00:33:32,340 --> 00:33:36,450 Jadi di perpustakaan CS50, bahwa file bernama cs50.h, kami sudah 807 00:33:36,450 --> 00:33:41,110 sebenarnya menyatakan tipe data, sehingga untuk berbicara, yang disebut string, 808 00:33:41,110 --> 00:33:42,710 tapi string tidak benar-benar ada. 809 00:33:42,710 --> 00:33:44,780 Ini, sekali lagi, salah satu lapisan kita akan mengupas 810 00:33:44,780 --> 00:33:47,490 kembali dalam satu atau dua minggu dan membuangnya, dan benar-benar 811 00:33:47,490 --> 00:33:49,640 melihat di bawah kap mesin apa string sebenarnya, dan 812 00:33:49,640 --> 00:33:50,840 bagaimana hal itu diwakili. 813 00:33:50,840 --> 00:33:53,520 Kami juga akan melihat nilai Boolean. 814 00:33:53,520 --> 00:33:56,040 >> Jadi apa bool dalam konteks Scratch? 815 00:33:59,154 --> 00:34:00,300 Memang benar atau salah. 816 00:34:00,300 --> 00:34:03,900 Jadi itu hanya nilai yang benar atau salah, on atau off, atau 1 817 00:34:03,900 --> 00:34:06,140 0, namun Anda ingin melihat dunia. 818 00:34:06,140 --> 00:34:09,739 Jadi dalam C, berkat perpustakaan CS50, yang pada gilirannya 819 00:34:09,739 --> 00:34:12,179 termasuk perpustakaan lain di bawah tenda, kita memiliki 820 00:34:12,179 --> 00:34:14,909 akses ke tipe data yang disebut bool, yang akan 821 00:34:14,909 --> 00:34:18,730 harfiah memungkinkan kita untuk menetapkan nilai-nilai benar atau palsu 822 00:34:18,730 --> 00:34:20,219 hal dalam sebuah program. 823 00:34:20,219 --> 00:34:23,880 >> Jadi mari kita lanjutkan di sini dan menulis sebuah program kecil yang 824 00:34:23,880 --> 00:34:26,330 melakukan sesuatu yang melibatkan angka bukan. 825 00:34:26,330 --> 00:34:29,840 Jadi biarkan aku kembali ke Appliance CS50, biarkan aku pergi ke depan dan 826 00:34:29,840 --> 00:34:32,770 membuat file baru di sini disebut - 827 00:34:32,770 --> 00:34:35,460 mari kita hanya mengatakan sesuatu yang sederhana, seperti math.c. 828 00:34:38,270 --> 00:34:38,710 Baiklah. 829 00:34:38,710 --> 00:34:41,600 Dan sekarang naik ke atas program saya, saya 830 00:34:41,600 --> 00:34:42,510 akan melakukan yang biasa - 831 00:34:42,510 --> 00:34:44,780 # Include, sehingga saya dapat menggunakan 832 00:34:44,780 --> 00:34:46,860 printf, int main (void) - 833 00:34:46,860 --> 00:34:49,270 kita akan kembali ke, pada akhirnya, apa artinya int 834 00:34:49,270 --> 00:34:52,389 di sini, apa yang berlaku di sini berarti, tapi untuk saat ini, hanya tahu bahwa 835 00:34:52,389 --> 00:34:54,270 Anda harus mulai program seperti ini. 836 00:34:54,270 --> 00:34:56,280 Sekarang aku akan pergi ke depan dan mengatakan sesuatu yang sedikit 837 00:34:56,280 --> 00:35:02,110 berbeda - printf ("Beri aku nomor:" 838 00:35:02,110 --> 00:35:03,570 );. 839 00:35:03,570 --> 00:35:09,220 Lalu aku akan melakukan int n = GetInt, karena 840 00:35:09,220 --> 00:35:12,770 ternyata keluar GetInt adalah fungsi lain di perpustakaan CS50 841 00:35:12,770 --> 00:35:14,060 selain GetString. 842 00:35:14,060 --> 00:35:17,340 Dan sekarang aku akan melakukan sesuatu yang bodoh, seperti "terima kasih 843 00:35:17,340 --> 00:35:25,760 untuk d%, "untuk desimal integer, dan maka n koma, dan 844 00:35:25,760 --> 00:35:26,620 kemudian kembali 0. 845 00:35:26,620 --> 00:35:28,940 Jadi sekali lagi, kembali 0 tidak ada hubungannya dengan jumlah aku 846 00:35:28,940 --> 00:35:30,080 meminta pengguna untuk. 847 00:35:30,080 --> 00:35:33,620 Hanya menandakan pada akhir bahwa semua, mungkin, baik. 848 00:35:33,620 --> 00:35:36,290 >> Jadi biarkan aku pergi ke jendela terminal saya di sini. 849 00:35:36,290 --> 00:35:39,590 Biarkan saya mengetikkan make matematika, masukkan. 850 00:35:39,590 --> 00:35:41,360 Dan sesuatu yang salah. 851 00:35:41,360 --> 00:35:44,620 Membuat matematika tidak bekerja. 852 00:35:44,620 --> 00:35:46,170 Berikut pertama dari pesan kesalahan kami. 853 00:35:46,170 --> 00:35:46,570 Kenapa? 854 00:35:46,570 --> 00:35:49,720 Sedikit samar, tapi - 855 00:35:49,720 --> 00:35:50,060 Ya. 856 00:35:50,060 --> 00:35:51,240 Jadi cs50.h. 857 00:35:51,240 --> 00:35:53,900 Jadi sekali lagi, terutama sejak dini, Anda akan menulis pertama Anda 858 00:35:53,900 --> 00:35:56,590 program untuk pset 1 di bagian dalam jam kerja, dan 859 00:35:56,590 --> 00:35:59,050 terus terang, itu akan menjadi luar biasa kadang-kadang apa hal-hal 860 00:35:59,050 --> 00:36:00,000 sebenarnya mengatakan. 861 00:36:00,000 --> 00:36:01,890 Tapi Anda akan menyadari sangat cepat mereka mulai jatuh 862 00:36:01,890 --> 00:36:06,120 ke dalam ember dimana satu ini berarti bahwa Anda telah meninggalkan dari salah satu 863 00:36:06,120 --> 00:36:08,290 dari # termasuk di bagian atas file. 864 00:36:08,290 --> 00:36:10,960 Dan dentang, compiler, menginformasikan Anda tentang hal ini dengan 865 00:36:10,960 --> 00:36:14,090 mengatakan deklarasi, bukan fancifully, implisit 866 00:36:14,090 --> 00:36:15,990 GetInt fungsi tidak valid. 867 00:36:15,990 --> 00:36:16,310 >> Baiklah. 868 00:36:16,310 --> 00:36:17,520 Jadi apa artinya? 869 00:36:17,520 --> 00:36:22,080 Ini hanya berarti Anda telah secara implisit menyatakan GetInt di 870 00:36:22,080 --> 00:36:24,850 arti bahwa Anda tidak secara eksplisit menyatakan itu. 871 00:36:24,850 --> 00:36:27,300 Secara eksplisit mendeklarasikan int, Anda harus mengajari 872 00:36:27,300 --> 00:36:28,740 Clang bahwa itu ada. 873 00:36:28,740 --> 00:36:32,020 Dan solusi yang sangat sederhana untuk itu adalah untuk mengajar dengan 874 00:36:32,020 --> 00:36:34,780 termasuk file ini lainnya, cs50.h, di 875 00:36:34,780 --> 00:36:35,850 bagian atas file Anda. 876 00:36:35,850 --> 00:36:40,380 Karena secara harfiah, apa yang # include apakah itu memberitahu dentang 877 00:36:40,380 --> 00:36:44,030 cukup banyak untuk pergi mencari file bernama cs50.h, copy, 878 00:36:44,030 --> 00:36:48,150 tempel otomatis ke bagian atas program saya untuk saya, 879 00:36:48,150 --> 00:36:50,850 dan kemudian mengubah kode sumber untuk angka satu dan nol. 880 00:36:50,850 --> 00:36:52,850 Tapi itu jelas akan sangat membosankan jika kita manusia memiliki 881 00:36:52,850 --> 00:36:55,370 untuk pergi menyalin dan menyisipkan file-file besar sepanjang waktu, 882 00:36:55,370 --> 00:36:58,540 jadi # include hanya melakukan semua itu secara otomatis tanpa 883 00:36:58,540 --> 00:37:01,550 mengeruhkan kode saya dengan perpustakaan orang lain. 884 00:37:01,550 --> 00:37:06,370 Dan perpustakaan hanyalah file yang berisi fungsi dan 885 00:37:06,370 --> 00:37:08,340 hal lain yang orang lain telah menulis, bahwa kita 886 00:37:08,340 --> 00:37:10,270 memanfaatkan untuk kepentingan kita sendiri. 887 00:37:10,270 --> 00:37:10,580 >> Baiklah. 888 00:37:10,580 --> 00:37:11,200 Mari kita coba lagi. 889 00:37:11,200 --> 00:37:12,250 Membuat matematika. 890 00:37:12,250 --> 00:37:13,120 Enter. 891 00:37:13,120 --> 00:37:13,530 Baik. 892 00:37:13,530 --> 00:37:14,880 Sehingga tampaknya telah bekerja. 893 00:37:14,880 --> 00:37:18,330 Jadi biarkan aku sekarang menjalankan matematika,. / Matematika. 894 00:37:18,330 --> 00:37:21,100 Masukkan memberi saya nomor, 123. 895 00:37:21,100 --> 00:37:22,620 Terima kasih atas 123. 896 00:37:22,620 --> 00:37:24,490 Sekarang mari kita coba kasus lain sudut. 897 00:37:24,490 --> 00:37:26,530 Sebuah string adalah cukup murah hati, karena 898 00:37:26,530 --> 00:37:27,620 string dapat berupa apa saja. 899 00:37:27,620 --> 00:37:28,910 Dapat terlihat seperti angka, terlihat seperti 900 00:37:28,910 --> 00:37:30,600 karakter, seperti kata-kata. 901 00:37:30,600 --> 00:37:31,900 Tapi int adalah int. 902 00:37:31,900 --> 00:37:34,370 Jadi sekarang kalau aku pengguna sulit, dan itu mengatakan "Beri aku 903 00:37:34,370 --> 00:37:38,730 nomor, "bagaimana jika saya mencoba untuk melakukan sesuatu seperti 0,1? 904 00:37:38,730 --> 00:37:41,510 Nah, itu angka, dan itu konsisten dengan 905 00:37:41,510 --> 00:37:44,180 tata bahasa saya digunakan di sini, tapi di balik kap mesin, saya dari 906 00:37:44,180 --> 00:37:45,610 Tentu saja menggunakan GetInt fungsi. 907 00:37:45,610 --> 00:37:46,610 >> Jadi mari kita lihat apa yang terjadi. 908 00:37:46,610 --> 00:37:48,250 Masukkan, coba lagi. 909 00:37:48,250 --> 00:37:48,560 Baiklah. 910 00:37:48,560 --> 00:37:50,570 Biarkan aku menjadi sulit dan hanya tekan Enter lagi. 911 00:37:50,570 --> 00:37:51,700 Masukkan, Enter. 912 00:37:51,700 --> 00:37:53,890 Jadi sekarang tampaknya GetInt yang sedikit lebih 913 00:37:53,890 --> 00:37:55,240 kuat daripada GetString. 914 00:37:55,240 --> 00:37:58,540 Kami, staf, dilaksanakan sedemikian rupa sehingga jika kita perhatikan 915 00:37:58,540 --> 00:38:02,100 Anda tidak memberi kita sebuah int - dan int adalah angka desimal 916 00:38:02,100 --> 00:38:04,785 mengandung nol, yang, berpasangan, bertiga, merangkak, balita, berenam, 917 00:38:04,785 --> 00:38:05,540 tujuh, delapan, atau sembilan. 918 00:38:05,540 --> 00:38:06,310 Dan itu saja. 919 00:38:06,310 --> 00:38:08,810 Tidak desimal poin, tidak ada karakter, tidak ada tanda baca. 920 00:38:08,810 --> 00:38:10,390 Tampaknya kita harus bekerja sama. 921 00:38:10,390 --> 00:38:13,680 Jadi biarkan aku mencoba empat, lima, enam, dan yang membuat saya melalui. 922 00:38:13,680 --> 00:38:16,760 Jadi benar-benar, untuk menjadi anal sini, saya mungkin harus mengatakan "Beri aku 923 00:38:16,760 --> 00:38:20,310 integer "dalam rangka untuk menyampaikan kepada pengguna 924 00:38:20,310 --> 00:38:22,620 persis apa yang saya inginkan. 925 00:38:22,620 --> 00:38:24,090 >> Sekarang mari kita pikirkan bawah tenda. 926 00:38:24,090 --> 00:38:27,930 Kita tidak akan melihat bagaimana cs50.h diimplementasikan saat ini, 927 00:38:27,930 --> 00:38:29,080 perpustakaan itu. 928 00:38:29,080 --> 00:38:33,600 Tapi jika terus mengatakan coba lagi, coba lagi, coba lagi, apa pemrograman 929 00:38:33,600 --> 00:38:36,970 membangun saya mungkin menggunakan di bawah tenda untuk 930 00:38:36,970 --> 00:38:39,000 menerapkan itu? 931 00:38:39,000 --> 00:38:39,980 Jadi hanya lingkaran, kan? 932 00:38:39,980 --> 00:38:41,930 Salah satu ide sederhana yang kita lihat di Scratch. 933 00:38:41,930 --> 00:38:45,050 The Selamanya membangun, Ulangi membangun. 934 00:38:45,050 --> 00:38:47,320 Agaknya, dalam program ini, di bawah kap, bahkan 935 00:38:47,320 --> 00:38:49,470 meskipun itu ditulis dalam C dan tidak awal, itu melakukan 936 00:38:49,470 --> 00:38:54,300 sesuatu yang disebut setara dengan selamanya jika pengguna belum 937 00:38:54,300 --> 00:38:58,710 diketik dalam integer, katakanlah coba lagi, coba lagi, coba lagi, coba lagi, sehingga 938 00:38:58,710 --> 00:39:01,220 akhirnya ketika kita mendapatkan integer, maka Anda 939 00:39:01,220 --> 00:39:02,970 keluar dari lingkaran itu. 940 00:39:02,970 --> 00:39:05,610 >> Jadi fungsi lain apa yang bisa kita gunakan di sini di perpustakaan CS50 ini? 941 00:39:05,610 --> 00:39:07,880 Nah, jenis yang jelas, setidaknya berdasarkan pada 942 00:39:07,880 --> 00:39:09,570 tipe data yang kita ketahui sekarang ada. 943 00:39:09,570 --> 00:39:12,900 Kami menerapkan GetString, GetInt, tetapi di seluruh 944 00:39:12,900 --> 00:39:15,680 minggu pertama istilah, Anda juga dapat menggunakan GetFloat dan 945 00:39:15,680 --> 00:39:18,870 GetDouble dan GetLongLong untuk mendapatkan tepat 946 00:39:18,870 --> 00:39:20,030 tipe data yang Anda inginkan. 947 00:39:20,030 --> 00:39:24,030 Karena detil kunci di sini adalah bahwa tidak seperti beberapa bahasa, 948 00:39:24,030 --> 00:39:26,630 seperti Python dan Ruby, di mana Anda tidak perlu harus 949 00:39:26,630 --> 00:39:29,730 mendeklarasikan tipe data dari variabel - 950 00:39:29,730 --> 00:39:32,390 Anda tidak perlu memberitahu komputer apa jenis barang 951 00:39:32,390 --> 00:39:34,000 Anda akan dimasukkan ke dalam variabel - 952 00:39:34,000 --> 00:39:36,640 di C, Anda harus pernah begitu tepat. 953 00:39:36,640 --> 00:39:40,060 Jadi jika Anda ingin sebuah variabel yang disebut n, sepotong penyimpanan 954 00:39:40,060 --> 00:39:42,900 bahwa dalam kasus ini terjadi menjadi 32 bit dengan konvensi, Anda 955 00:39:42,900 --> 00:39:45,660 harus memberitahu komputer bahwa bit 956 00:39:45,660 --> 00:39:47,840 akan menyimpan nomor - 957 00:39:47,840 --> 00:39:50,630 bukan karakter, bukan string, bukan pelampung. 958 00:39:50,630 --> 00:39:52,620 Dan ini membahas masalah kita secara efektif 959 00:39:52,620 --> 00:39:53,760 berlari ke pekan lalu. 960 00:39:53,760 --> 00:39:57,050 Jika kita menggunakan angka nol dan angka yang mewakili tidak hanya 961 00:39:57,050 --> 00:40:00,770 nomor tapi As dan B dan C, bagaimana di dunia adalah 962 00:40:00,770 --> 00:40:03,460 komputer akan tahu bahwa pola bit sebenarnya 963 00:40:03,460 --> 00:40:07,650 menunjukkan jumlah 65, sebagai lawan mewakili 964 00:40:07,650 --> 00:40:09,860 huruf A, yang kebetulan, menurut 965 00:40:09,860 --> 00:40:13,440 ASCII, ingat, itu setara dengan 65? 966 00:40:13,440 --> 00:40:16,550 >> Jadi jenis data yang memberikan konteks untuk komputer, sehingga 967 00:40:16,550 --> 00:40:18,810 bahwa ia tahu jika bit harus ditafsirkan sebagai 968 00:40:18,810 --> 00:40:23,660 int atau sebagai string. 969 00:40:23,660 --> 00:40:26,500 Ada pertanyaan, kemudian, pada ini? 970 00:40:26,500 --> 00:40:28,149 Ya? 971 00:40:34,780 --> 00:40:35,270 DAVID J. Malan: Pertanyaan yang bagus. 972 00:40:35,270 --> 00:40:39,140 Jika kita mengambil stdio.h, kita menyimpan file - 973 00:40:39,140 --> 00:40:44,360 biarkan aku pergi ke jendela terminal dan jalankan make matematika, zoom 974 00:40:44,360 --> 00:40:45,530 dan masukkan - 975 00:40:45,530 --> 00:40:47,700 sekarang saya mendapatkan error yang berbeda, karena aku implisit 976 00:40:47,700 --> 00:40:49,650 menyatakan apa yang berfungsi sekarang? 977 00:40:49,650 --> 00:40:50,700 Printf. 978 00:40:50,700 --> 00:40:52,970 Jadi sekarang aku telah membuat masalah baru, yang solusinya adalah 979 00:40:52,970 --> 00:40:53,890 dasarnya sama. 980 00:40:53,890 --> 00:40:55,365 Saya perlu menempatkan kembali itu. 981 00:40:55,365 --> 00:40:56,615 HADIRIN: [Tak terdengar] 982 00:41:03,534 --> 00:41:04,030 DAVID J. Malan: Oh. 983 00:41:04,030 --> 00:41:04,850 Jadi jika saya mengambil - 984 00:41:04,850 --> 00:41:05,360 Oke, yeah. 985 00:41:05,360 --> 00:41:08,960 Jadi jika saya menghapus inklusi I / O standar perpustakaan up 986 00:41:08,960 --> 00:41:12,020 di sini, dan kemudian Anda katakan jika saya menyingkirkan printf, mendapatkan 987 00:41:12,020 --> 00:41:13,450 menyingkirkan printf? 988 00:41:13,450 --> 00:41:13,810 Ya. 989 00:41:13,810 --> 00:41:18,450 Ini harus bekerja, karena aku tidak lagi menggunakan - whoops. 990 00:41:18,450 --> 00:41:20,110 Apakah aku hanya berbaring? 991 00:41:20,110 --> 00:41:21,650 Oh, oke. 992 00:41:21,650 --> 00:41:25,640 Ini tidak akan bekerja karena kesalahan baru kita hanya diperkenalkan. 993 00:41:25,640 --> 00:41:28,390 Dan yang satu ini sedikit lebih jelas. 994 00:41:28,390 --> 00:41:29,440 >> Apa masalahnya? 995 00:41:29,440 --> 00:41:30,680 Terpakai variabel n. 996 00:41:30,680 --> 00:41:34,040 Jadi kesalahan ini adalah hasil dari kami telah dikonfigurasi 997 00:41:34,040 --> 00:41:36,640 alat untuk menjadi sangat bertele-tele, untuk benar-benar berteriak 998 00:41:36,640 --> 00:41:39,060 Anda untuk setiap kesalahan yang mungkin, bahkan jika itu jenis 999 00:41:39,060 --> 00:41:41,950 kesalahan non-fatal seperti ini - itu benar-benar seperti besar 1000 00:41:41,950 --> 00:41:44,820 menangani bahwa saya dialokasikan int, menempatkan nomor di dalamnya, dan kemudian 1001 00:41:44,820 --> 00:41:46,030 hanya melakukan apa-apa dengan itu? 1002 00:41:46,030 --> 00:41:47,020 Jadi secara fungsional, tidak. 1003 00:41:47,020 --> 00:41:50,410 Itu tidak akan merusak program. 1004 00:41:50,410 --> 00:41:51,490 Hanya saja agak bodoh, kan? 1005 00:41:51,490 --> 00:41:54,220 Tidak ada nilai untuk memiliki meminta nomor tersebut, disimpan 1006 00:41:54,220 --> 00:41:56,370 dalam variabel, jika Anda tidak akan melakukan apa-apa 1007 00:41:56,370 --> 00:41:58,000 dengan itu, apakah mencetaknya atau menyimpannya. 1008 00:41:58,000 --> 00:42:00,270 Jadi dalam hal ini, dentang yang mengakui sebanyak, dan 1009 00:42:00,270 --> 00:42:02,010 itu mengatakan n variabel yang tidak terpakai. 1010 00:42:02,010 --> 00:42:05,380 >> Jadi kita bisa memperbaiki hal ini jika kita benar-benar ingin. 1011 00:42:05,380 --> 00:42:07,250 Tapi sekali lagi, ini bukan pemrograman yang baik sekarang. 1012 00:42:07,250 --> 00:42:09,310 Jadi aku hanya bisa melakukan ini - 1013 00:42:09,310 --> 00:42:12,060 turun di sini, biarkan aku membersihkan layar, membuat matematika. 1014 00:42:12,060 --> 00:42:13,090 Yang bekerja. 1015 00:42:13,090 --> 00:42:18,110 Sekarang saya bisa menjalankan program matematika saya, mengambil input - 1016 00:42:18,110 --> 00:42:18,700 baik, itu buruk. 1017 00:42:18,700 --> 00:42:23,450 Membawa masukan, dan itu adalah semua hal ini, dalam kasus ini. 1018 00:42:23,450 --> 00:42:25,220 >> Jadi sebenarnya, mari kita coba satu kasus sudut lain yang kita 1019 00:42:25,220 --> 00:42:26,300 tidak memikirkan sebelumnya. 1020 00:42:26,300 --> 00:42:28,220 Dalam kasus ini - di sini, mari kita kembali ke salah satu yang adalah 1021 00:42:28,220 --> 00:42:29,500 sedikit lebih user-friendly. 1022 00:42:29,500 --> 00:42:32,580 Biarkan aku pergi kembali ke sini dan jalankan make matematika lagi. 1023 00:42:32,580 --> 00:42:34,190 Whoops, apa yang saya lakukan salah? 1024 00:42:34,190 --> 00:42:35,400 Harus memutar kembali lebih lanjut. 1025 00:42:35,400 --> 00:42:36,390 Oke. 1026 00:42:36,390 --> 00:42:38,490 Sekarang kita kembali pada keadaan semula, di mana semua 1027 00:42:38,490 --> 00:42:39,990 Mudah-mudahan dengan baik. 1028 00:42:39,990 --> 00:42:43,360 Dan sekarang jika saya menjalankan matematika, 123 tampaknya bekerja. 1029 00:42:43,360 --> 00:42:46,010 Tapi ini tidak benar-benar bukti yang efektif, hanya mengatakan 1030 00:42:46,010 --> 00:42:47,930 oke, yang bekerja. 1031 00:42:47,930 --> 00:42:49,120 789, yang bekerja. 1032 00:42:49,120 --> 00:42:50,100 Waktu untuk menyerahkan. 1033 00:42:50,100 --> 00:42:51,870 Karena ada kasus sudut lain di sini. 1034 00:42:51,870 --> 00:42:55,040 Sebuah string tidak benar-benar memberi kita banyak kesulitan dengan mengetikkan 1035 00:42:55,040 --> 00:42:56,510 Seluruh banyak karakter. 1036 00:42:56,510 --> 00:42:59,580 Tapi bagaimana kalau saya ketik ini? 1037 00:42:59,580 --> 00:43:04,850 Menekan nomor 1 jauh, banyak di sini - 1038 00:43:04,850 --> 00:43:06,300 baik-baik saja, itu semakin sedikit membosankan, jadi saya akan 1039 00:43:06,300 --> 00:43:10,040 berhenti di sini, dan aku akan tekan Enter. 1040 00:43:10,040 --> 00:43:11,290 >> Apa yang baru saja terjadi? 1041 00:43:14,110 --> 00:43:17,680 Jadi ini sebenarnya dapat dijelaskan. 1042 00:43:17,680 --> 00:43:18,920 Jadi waktu yang diperlukan sebagai biner? 1043 00:43:18,920 --> 00:43:21,130 Sebuah pikiran yang baik, tapi tidak, itu bukan fakta bahwa itu membawanya 1044 00:43:21,130 --> 00:43:22,815 sebagai biner, karena memang, itu hanya semacam 1045 00:43:22,815 --> 00:43:23,080 kebetulan. 1046 00:43:23,080 --> 00:43:23,930 Kita bisa melakukan ini lagi. 1047 00:43:23,930 --> 00:43:26,530 Jadi tidak ada 2 dalam sistem biner, yang 1048 00:43:26,530 --> 00:43:27,420 mungkin cukup pula. 1049 00:43:27,420 --> 00:43:28,780 Enter. 1050 00:43:28,780 --> 00:43:30,140 Jadi itu bukan masalah. 1051 00:43:30,140 --> 00:43:31,390 Apa lagi? 1052 00:43:34,650 --> 00:43:35,400 Tepat. 1053 00:43:35,400 --> 00:43:37,830 >> Jadi pikirkan kembali apa int sebenarnya. 1054 00:43:37,830 --> 00:43:40,970 Ini 32 bit yang secara kolektif diinterpretasikan 1055 00:43:40,970 --> 00:43:42,090 sebagai angka. 1056 00:43:42,090 --> 00:43:44,730 Jika Anda memiliki 32 bit, itu berarti setiap bit dapat 1057 00:43:44,730 --> 00:43:46,690 0 atau. 1, 0 atau 1 1058 00:43:46,690 --> 00:43:49,090 Jadi itu berarti ada dua kemungkinan untuk sedikit ini, 1059 00:43:49,090 --> 00:43:51,140 dua kemungkinan untuk ini, dua kemungkinan untuk ini 1060 00:43:51,140 --> 00:43:52,570 bit - jadi itu 2 kali 2 kali - 1061 00:43:52,570 --> 00:43:55,480 jadi itu 2 pangkat 32 adalah jumlah total 1062 00:43:55,480 --> 00:43:58,960 permutasi dari angka satu dan nol jika Anda memiliki 32 1063 00:43:58,960 --> 00:44:01,400 penampung, angka nol atau yang, di depan Anda. 1064 00:44:01,400 --> 00:44:04,250 Jadi jika saya memiliki 2 ke 32, secara matematis, itu apa? 1065 00:44:07,080 --> 00:44:07,840 Jadi banyak. 1066 00:44:07,840 --> 00:44:09,910 Ini 4 miliar, memberi atau mengambil. 1067 00:44:09,910 --> 00:44:13,510 Dan 4 miliar tampaknya tidak menjadi apa yang dicetak di sini. 1068 00:44:13,510 --> 00:44:16,290 Bahkan, ini tampak lebih dekat dengan 2 miliar. 1069 00:44:16,290 --> 00:44:17,970 Tapi ini bukan suatu kebetulan. 1070 00:44:17,970 --> 00:44:21,590 Fakta bahwa komputer telah salah menafsirkan jumlah besar saya, 1071 00:44:21,590 --> 00:44:24,260 saya besar urutan satu dan kemudian urutan besar saya berpasangan, 1072 00:44:24,260 --> 00:44:26,880 sebagai sekitar 2 miliar, dijelaskan bagaimana? 1073 00:44:30,250 --> 00:44:32,180 Ada topi pada int. 1074 00:44:32,180 --> 00:44:34,970 Ada tentu saja nilai maksimum yang dapat mewakili. 1075 00:44:34,970 --> 00:44:36,370 Tapi itu biasanya 4 miliar, kan? 1076 00:44:36,370 --> 00:44:39,100 Jika 2 ke 32 adalah sekitar 4 miliar, yang tampaknya seperti 1077 00:44:39,100 --> 00:44:40,350 itulah jumlah terbesar. 1078 00:44:42,420 --> 00:44:45,240 Jadi bukan sisa, tetapi pikiran yang baik. 1079 00:44:45,240 --> 00:44:46,340 Angka negatif. 1080 00:44:46,340 --> 00:44:49,570 Jadi jika Anda memiliki 4 miliar hal yang mungkin Anda bisa 1081 00:44:49,570 --> 00:44:52,970 mewakili dengan berbagai permutasi dari 32 0s dan 1082 00:44:52,970 --> 00:44:55,600 1s, baik, maka bisa dipastikan bahwa kita manusia mungkin ingin 1083 00:44:55,600 --> 00:44:57,110 mewakili tidak hanya bilangan bulat positif 1084 00:44:57,110 --> 00:44:58,240 namun bilangan bulat negatif. 1085 00:44:58,240 --> 00:45:00,410 Dan memang, itulah asumsi bahwa C membuat. 1086 00:45:00,410 --> 00:45:03,550 Jadi dengan 32 bit, Anda dapat mewakili sekitar 2 negatif 1087 00:45:03,550 --> 00:45:06,630 miliar sepanjang jalan sampai dengan positif 2 miliar. 1088 00:45:06,630 --> 00:45:08,750 Dan sehingga dalam kasus ini, apa yang kita benar-benar melihat hanya 1089 00:45:08,750 --> 00:45:13,600 pinggiran kapasitas integer kami, dan kami memiliki, sehingga 1090 00:45:13,600 --> 00:45:15,860 untuk berbicara, meluap integer. 1091 00:45:15,860 --> 00:45:19,180 Kami sudah mencoba untuk menjejalkan bit lebih ke dalamnya daripada benar-benar bisa cocok. 1092 00:45:19,180 --> 00:45:22,960 Jadi hasil akhirnya adalah kita pada dasarnya memiliki semua bit 1. 1093 00:45:22,960 --> 00:45:25,280 Kami telah membalik semua bit kami, kami sudah mencoba untuk mewakili 1094 00:45:25,280 --> 00:45:27,630 jumlah terbesar yang mungkin, tapi itu jelas tidak hampir 1095 00:45:27,630 --> 00:45:30,960 cukup besar untuk mewakili dua hal yang saya baru saja diketik masuk 1096 00:45:30,960 --> 00:45:31,730 Ya? 1097 00:45:31,730 --> 00:45:32,980 HADIRIN: [Tak terdengar] 1098 00:45:37,230 --> 00:45:37,830 >> DAVID J. Malan: Pertanyaan yang bagus. 1099 00:45:37,830 --> 00:45:40,080 Mengapa kita tidak bisa hanya menyatakan bahwa negatif 1100 00:45:40,080 --> 00:45:41,500 menandatangani hanya sebagai karakter? 1101 00:45:41,500 --> 00:45:44,200 Jadi kita benar-benar bisa, dan kita kemudian bisa menyelamatkan 1102 00:45:44,200 --> 00:45:45,470 sedikit tambahan. 1103 00:45:45,470 --> 00:45:49,100 Tapi kau masih akan harus mewakili dasbor itu, dan 1104 00:45:49,100 --> 00:45:50,700 yang akan dikenakan biaya setidaknya sesuatu, 1105 00:45:50,700 --> 00:45:52,220 mungkin sedikit. 1106 00:45:52,220 --> 00:45:55,610 Jadi ya, kita bisa memiliki 32 bit yang digunakan untuk nomor kami, tapi sekarang 1107 00:45:55,610 --> 00:45:57,610 kita membutuhkan bit yang digunakan untuk dasbor kami 1108 00:45:57,610 --> 00:45:58,810 simbol, tanda minus. 1109 00:45:58,810 --> 00:46:01,470 Jadi sekarang kita memiliki 33 bit nilai, yang bisa kita lakukan, tapi itu 1110 00:46:01,470 --> 00:46:02,570 hanya tidak cara itu dilakukan. 1111 00:46:02,570 --> 00:46:05,140 Kami membuat keputusan beberapa tahun lalu panggilan, 32 bit adalah semacam 1112 00:46:05,140 --> 00:46:06,170 satuan ukuran di sini. 1113 00:46:06,170 --> 00:46:08,120 Jadi kita akan menggunakan salah satu bit secara efektif 1114 00:46:08,120 --> 00:46:12,950 mewakili negatif, dan 31 bit untuk mewakili nomor. 1115 00:46:12,950 --> 00:46:15,550 Pertanyaan lain? 1116 00:46:15,550 --> 00:46:15,670 Baiklah. 1117 00:46:15,670 --> 00:46:16,030 Itu banyak. 1118 00:46:16,030 --> 00:46:17,930 Mengapa kita tidak pergi ke depan dan mengambil lima menit kami istirahat di sini? 1119 00:46:23,580 --> 00:46:24,270 >> Baiklah. 1120 00:46:24,270 --> 00:46:31,250 Jadi sekali lagi, bukan untuk bergantung pada aplikasi matematika 1121 00:46:31,250 --> 00:46:33,840 pemrograman, mari kita hanya memetik off satu contoh 1122 00:46:33,840 --> 00:46:36,590 sebelum kita pindah ke konstruksi lainnya, hanya karena 1123 00:46:36,590 --> 00:46:39,430 akan menggambarkan beberapa poin sandungan umum di beberapa 1124 00:46:39,430 --> 00:46:41,520 dasar-dasar ketika datang ke program menulis. 1125 00:46:41,520 --> 00:46:44,360 Dalam kasus ini, melakukan ekspresi aritmatika yang memiliki beberapa 1126 00:46:44,360 --> 00:46:48,010 menarik relevansi dengan sintaks. 1127 00:46:48,010 --> 00:46:50,430 >> Jadi ini hanyalah sebuah rumus yang kita dapat mengkonversi 1128 00:46:50,430 --> 00:46:52,690 suhu dari Fahrenheit ke Celsius. 1129 00:46:52,690 --> 00:46:54,600 Jika Anda tidak ingat, ini hanya rumus. 1130 00:46:54,600 --> 00:46:58,870 Jadi jika kita pasang di Fahrenheit nilai 32 derajat, yang 1131 00:46:58,870 --> 00:47:02,850 pembekuan, yang akan menjadi 32 dikurangi 32 adalah 0, dan memang, 1132 00:47:02,850 --> 00:47:05,130 0 di Celcius juga beku. 1133 00:47:05,130 --> 00:47:08,210 Jadi kewarasan cepat check sana - itu rumus akrab. 1134 00:47:08,210 --> 00:47:10,880 Biarkan aku pergi ke alat, meskipun, dan mulai 1135 00:47:10,880 --> 00:47:13,920 menulis sebuah program yang disebut, seperti, f2c, "Fahrenheit ke 1136 00:47:13,920 --> 00:47:15,920 Celsius dot c ". 1137 00:47:15,920 --> 00:47:18,930 Dan sampai di atas sini, aku akan mulai dengan # include 1138 00:47:18,930 --> 00:47:22,190 stdio.h, dan aku akan melakukan int main (void), dan 1139 00:47:22,190 --> 00:47:24,680 lagi, kami akan kembali di masa depan seperti apa int berarti 1140 00:47:24,680 --> 00:47:26,820 ada dan apa yang berarti ada kekosongan. 1141 00:47:26,820 --> 00:47:28,770 Dan sekarang biarkan aku pergi ke depan dan menerapkan program yang 1142 00:47:28,770 --> 00:47:31,170 pada dasarnya melakukan konversi ini bagi kita. 1143 00:47:31,170 --> 00:47:36,830 >> Jadi printf, katakanlah, suhu di Fahrenheit. 1144 00:47:36,830 --> 00:47:40,140 Dan kemudian biarkan aku pergi ke depan dan mendapatkan nilai dari pengguna. 1145 00:47:40,140 --> 00:47:43,120 Apa nilai yang harus saya dapatkan dari pengguna jika saya ingin 1146 00:47:43,120 --> 00:47:45,620 mereka untuk memberikan suhu dalam Fahrenheit? 1147 00:47:45,620 --> 00:47:48,090 Ya? 1148 00:47:48,090 --> 00:47:50,090 Apa yang akan Anda usulkan? 1149 00:47:50,090 --> 00:47:50,410 Ya. 1150 00:47:50,410 --> 00:47:51,960 Jadi mengapung terasa cukup masuk akal. 1151 00:47:51,960 --> 00:47:53,950 Kami memiliki, sekali lagi, hanya beberapa pilihan yang 1152 00:47:53,950 --> 00:47:55,310 kita lihat sejauh ini. 1153 00:47:55,310 --> 00:48:00,100 Kami memiliki hal-hal seperti char, pelampung ganda,, int, panjang, 1154 00:48:00,100 --> 00:48:01,150 bool, string. 1155 00:48:01,150 --> 00:48:03,510 Jadi ini, mengambang terasa cukup masuk akal. 1156 00:48:03,510 --> 00:48:06,340 Kita bisa menggunakan hak, ganda, karena jika kita benar-benar ingin 1157 00:48:06,340 --> 00:48:07,580 mewakili suhu manusia - 1158 00:48:07,580 --> 00:48:10,730 98,60000 - 1159 00:48:10,730 --> 00:48:12,990 kita bisa menggunakan 64 bit untuk melakukan itu, tapi rasanya seperti 1160 00:48:12,990 --> 00:48:14,200 berlebihan untuk suhu. 1161 00:48:14,200 --> 00:48:16,380 Jadi mari kita pergi dengan float. 1162 00:48:16,380 --> 00:48:18,100 Sekarang aku butuh variabel. 1163 00:48:18,100 --> 00:48:20,500 Hanya untuk menjaga hal-hal sederhana, aku akan menyebutnya f, tapi aku 1164 00:48:20,500 --> 00:48:23,370 bisa saja benar menyebutnya suhu, 1165 00:48:23,370 --> 00:48:24,600 tapi entah baik-baik saja. 1166 00:48:24,600 --> 00:48:27,610 Jadi mengapung f = GetFloat. 1167 00:48:27,610 --> 00:48:30,220 Begitu aku sekarang telah memutuskan untuk menggunakan GetFloat, meskipun, saya 1168 00:48:30,220 --> 00:48:33,340 perlu membuat satu koreksi. 1169 00:48:33,340 --> 00:48:33,720 Ya. 1170 00:48:33,720 --> 00:48:37,460 Jadi kita perlu # include , jika compiler adalah 1171 00:48:37,460 --> 00:48:39,000 akan berteriak pada kami. 1172 00:48:39,000 --> 00:48:41,720 Sekarang saya memiliki pelampung, biarkan aku pergi ke depan dan melakukan 1173 00:48:41,720 --> 00:48:42,460 konversi. 1174 00:48:42,460 --> 00:48:44,980 >> Jadi pertama, saya juga masuk ke kebiasaan di sini dari 1175 00:48:44,980 --> 00:48:46,310 komentar kode saya. 1176 00:48:46,310 --> 00:48:49,820 Jadi sekali lagi, komentar hanya notasi ke manusia yang 1177 00:48:49,820 --> 00:48:52,600 bukan bagian dari program per se, tetapi satu, membantu Anda 1178 00:48:52,600 --> 00:48:55,010 mengerti apa yang Anda lakukan keesokan harinya, atau berikutnya 1179 00:48:55,010 --> 00:48:57,570 bulan, itu membantu sesama mengajar Anda mengerti apa yang Anda lakukan 1180 00:48:57,570 --> 00:48:59,230 atau apa yang Anda dimaksudkan untuk melakukan, jadi 1181 00:48:59,230 --> 00:49:00,950 umumnya sangat baik praktek. 1182 00:49:00,950 --> 00:49:02,940 Setiap beberapa baris kode, menulis komentar ke 1183 00:49:02,940 --> 00:49:04,490 diri sendiri atau kolega Anda. 1184 00:49:04,490 --> 00:49:08,460 Jadi di sini, aku akan mengatakan, "Mintalah pengguna untuk suhu." 1185 00:49:08,460 --> 00:49:10,890 Tidak harus berupa kalimat lengkap, hanya kalimat pendek. 1186 00:49:10,890 --> 00:49:14,270 Tapi ide di balik komentar di C adalah bahwa setiap Anda 1187 00:49:14,270 --> 00:49:17,980 komentar harus memberdayakan Anda - atau, katakanlah, TF atau kolega - 1188 00:49:17,980 --> 00:49:21,290 untuk skim program Anda dan tahu persis apa yang dilakukannya, dengan tidak 1189 00:49:21,290 --> 00:49:24,650 begitu banyak membaca kode, tetapi dengan membaca komentar, yang 1190 00:49:24,650 --> 00:49:26,220 harus ringkas dan jelas. 1191 00:49:26,220 --> 00:49:29,030 Baiklah, jadi sekarang biarkan aku pergi ke depan dan berkata, "Mengkonversi 1192 00:49:29,030 --> 00:49:32,660 Fahrenheit ke Celsius. "Jadi aku akan pergi ke depan dan melakukan, 1193 00:49:32,660 --> 00:49:34,340 katakanlah, mengambang c. 1194 00:49:34,340 --> 00:49:36,610 Kami akan terus Celcius sebagai nilai floating point. 1195 00:49:36,610 --> 00:49:37,630 >> Dan biarkan aku mengambil bacokan di ini. 1196 00:49:37,630 --> 00:49:40,350 Rumusnya adalah, sekali lagi, di sini. 1197 00:49:40,350 --> 00:49:45,510 Sebagai 5/9 kali F dikurangi 32. 1198 00:49:45,510 --> 00:49:46,360 Jadi mari kita lakukan ini. 1199 00:49:46,360 --> 00:49:50,450 Jadi 5 dibagi dengan 9, minus - 1200 00:49:50,450 --> 00:49:52,330 whoops, saya mengacaukannya sudah. 1201 00:49:52,330 --> 00:49:53,070 Times. 1202 00:49:53,070 --> 00:49:56,550 Jadi 5/9 kali F dikurangi 32. 1203 00:49:56,550 --> 00:49:59,650 Jadi F dikurangi 32, titik koma. 1204 00:49:59,650 --> 00:50:02,000 Dan sekarang, di sini, aku akan pergi ke depan 1205 00:50:02,000 --> 00:50:03,220 dan berkata, mencetak hasil. 1206 00:50:03,220 --> 00:50:05,160 Dan bagian ini mudah. Printf. 1207 00:50:05,160 --> 00:50:07,980 Bagaimana saya pergi tentang mencetak ini? 1208 00:50:07,980 --> 00:50:16,890 Nah, saya bisa mengatakan "Itu nomor dalam Celcius adalah% f \ n", 1209 00:50:16,890 --> 00:50:18,060 hanya untuk beberapa estetika. 1210 00:50:18,060 --> 00:50:20,450 Lalu apa nilai yang ingin saya pasang di sini sebagai yang printf 1211 00:50:20,450 --> 00:50:21,360 argumen kedua? 1212 00:50:21,360 --> 00:50:21,650 Oke. 1213 00:50:21,650 --> 00:50:22,540 Jadi hanya c. 1214 00:50:22,540 --> 00:50:24,760 Jadi kita akan mulai dengan ini dan kemudian hanya kembali 0. 1215 00:50:24,760 --> 00:50:25,960 Sekali lagi, itu tidak ada hubungannya dengan matematika. 1216 00:50:25,960 --> 00:50:27,610 Ini hanya berarti semuanya baik-baik. 1217 00:50:27,610 --> 00:50:31,210 >> Sekarang, program ini, yang benar ini? 1218 00:50:31,210 --> 00:50:31,520 Baiklah. 1219 00:50:31,520 --> 00:50:33,630 Jadi saya sudah membuat beberapa kesalahan. 1220 00:50:33,630 --> 00:50:35,980 Bahkan jika Anda tidak tahu apa pemrograman, Anda dapat mengurutkan 1221 00:50:35,980 --> 00:50:37,120 punggung menyimpulkan ke sekolah kelas apa 1222 00:50:37,120 --> 00:50:38,740 kesalahan di sini mungkin. 1223 00:50:38,740 --> 00:50:40,050 Apa salah satu yang pertama? 1224 00:50:40,050 --> 00:50:41,256 HADIRIN: [Tak terdengar] 1225 00:50:41,256 --> 00:50:41,660 DAVID J. Malan: Ya. 1226 00:50:41,660 --> 00:50:42,940 Jadi kita hilang kurung. 1227 00:50:42,940 --> 00:50:45,420 Itu sengaja saya lakukan kurung di keynote 1228 00:50:45,420 --> 00:50:48,130 geser sini, karena sebenarnya ada gagasan order 1229 00:50:48,130 --> 00:50:51,590 operasi, atau didahulukan, dimana operasi tertentu - 1230 00:50:51,590 --> 00:50:52,890 perkalian - 1231 00:50:52,890 --> 00:50:56,000 memiliki tinggi mengikat, memiliki prioritas lebih tinggi, daripada hal-hal 1232 00:50:56,000 --> 00:50:58,050 seperti penambahan atau pengurangan. 1233 00:50:58,050 --> 00:51:00,550 Jadi kita sudah melakukan ini selama bertahun-tahun hanya untuk membuat benar-benar jelas 1234 00:51:00,550 --> 00:51:02,840 apa operasi matematika harus dilakukan terlebih dahulu. 1235 00:51:02,840 --> 00:51:05,010 Jadi saya mungkin harus meniru persis ini. 1236 00:51:05,010 --> 00:51:08,990 Jika tidak, komputer mungkin akan mencoba untuk melakukan 1237 00:51:08,990 --> 00:51:13,090 sesuatu seperti membagi 5 dengan 9, kemudian kalikan F, kemudian kurangi 1238 00:51:13,090 --> 00:51:14,850 32 dari semuanya. 1239 00:51:14,850 --> 00:51:16,480 Yang tidak, pada kenyataannya, apa yang ingin kita lakukan. 1240 00:51:16,480 --> 00:51:17,340 Jadi mari kita mengurungkan. 1241 00:51:17,340 --> 00:51:20,860 Mari kita tambahkan tanda kurung saya di sini, kurung di sini. 1242 00:51:20,860 --> 00:51:22,670 Mari kita menempatkan ini di sini. 1243 00:51:22,670 --> 00:51:25,130 Di sini, saya hanya melihat satu kesalahan yang kubuat sepanjang jalan. 1244 00:51:25,130 --> 00:51:25,680 Ya? 1245 00:51:25,680 --> 00:51:26,930 HADIRIN: [Tak terdengar] 1246 00:51:29,632 --> 00:51:30,130 >> DAVID J. Malan: Ah. 1247 00:51:30,130 --> 00:51:30,470 Baik. 1248 00:51:30,470 --> 00:51:32,400 Jadi kita benar-benar memiliki bilangan bulat yang sama 1249 00:51:32,400 --> 00:51:34,020 Divisi masalah dari sebelumnya. 1250 00:51:34,020 --> 00:51:35,800 Saya benar itu, mari kita lihat apa gejala tersebut. 1251 00:51:35,800 --> 00:51:36,990 Tapi kami akan harus memperbaiki satu 1252 00:51:36,990 --> 00:51:37,680 lainnya kesalahan di sini. 1253 00:51:37,680 --> 00:51:38,015 Ya? 1254 00:51:38,015 --> 00:51:39,540 HADIRIN: [Tak terdengar] 1255 00:51:39,540 --> 00:51:40,070 DAVID J. Malan: Ya. 1256 00:51:40,070 --> 00:51:43,130 Jadi, kesalahan bodoh saya buat, tapi sangat penting. 1257 00:51:43,130 --> 00:51:45,870 Komputer tidak akan hanya menutup mata dan membiarkan 1258 00:51:45,870 --> 00:51:48,770 saya menggunakan F modal, ketika aku benar-benar mendeklarasikan variabel 1259 00:51:48,770 --> 00:51:51,360 sebagai f huruf kecil di sini, di baris 8. 1260 00:51:51,360 --> 00:51:54,470 Jadi saya perlu memperbaiki sejalan 11 kapitalisasi saya, dimana 1261 00:51:54,470 --> 00:51:56,820 saat lalu adalah F modal oleh kesalahan. 1262 00:51:56,820 --> 00:51:57,610 Bagaimana dengan di sini? 1263 00:51:57,610 --> 00:51:59,980 Hal ini harus huruf kecil juga? 1264 00:51:59,980 --> 00:52:02,260 Seharusnya, tapi itu suatu kebetulan. 1265 00:52:02,260 --> 00:52:05,070 Bahwa f% tidak ada hubungannya dengan variabel. 1266 00:52:05,070 --> 00:52:07,980 Jadi hanya untuk menjadi super jelas di sini, biarkan aku pergi ke depan dan 1267 00:52:07,980 --> 00:52:10,710 mengubah nama ini, sebentar, "suhu." Biarkan saya mengubah nama 1268 00:52:10,710 --> 00:52:15,050 ini "suhu." Biar tidak mengubah nama ini. 1269 00:52:15,050 --> 00:52:18,180 Karena, sekali lagi, f% secara global berarti, "nilai titik mengambang." 1270 00:52:18,180 --> 00:52:19,950 Tidak ada hubungannya dengan variabel saya. 1271 00:52:19,950 --> 00:52:23,080 Tapi "suhu" di seluruh tempat ini hanya sedikit bertele-tele, 1272 00:52:23,080 --> 00:52:25,370 jadi aku akan kembali ke s huruf kecil saya "f". 1273 00:52:25,370 --> 00:52:27,890 >> Sekarang, biarkan aku pergi ke depan ke jendela saya di sini. 1274 00:52:27,890 --> 00:52:29,190 Membuat f2c - 1275 00:52:29,190 --> 00:52:31,200 yang, sekali lagi, nama saya sewenang-wenang 1276 00:52:31,200 --> 00:52:32,590 memberikan ke file ini. 1277 00:52:32,590 --> 00:52:33,690 Tampaknya telah disusun. 1278 00:52:33,690 --> 00:52:35,080 Biarkan saya menjalankan f2c. 1279 00:52:35,080 --> 00:52:35,780 Enter. 1280 00:52:35,780 --> 00:52:37,786 Suhu di Fahrenheit - mari kita lakukan yang mudah. 1281 00:52:37,786 --> 00:52:39,370 32. 1282 00:52:39,370 --> 00:52:40,910 OK, benar. 1283 00:52:40,910 --> 00:52:45,910 Tapi, jika saya lakukan sekarang 212 untuk mendidih - 1284 00:52:45,910 --> 00:52:46,630 sialan. 1285 00:52:46,630 --> 00:52:47,030 Baiklah. 1286 00:52:47,030 --> 00:52:50,780 Jadi, jelas tidak benar, jika Anda mencoba TF 1287 00:52:50,780 --> 00:52:51,800 setidaknya dua nilai. 1288 00:52:51,800 --> 00:52:53,340 Jadi apa masalahnya di sini? 1289 00:52:53,340 --> 00:52:55,970 Nah, Anda sudah meletakkan jari Anda pada apa masalah ini. 1290 00:52:55,970 --> 00:52:57,600 Tapi kenapa begitu kasus ini? 1291 00:52:57,600 --> 00:53:00,630 Sampai di sini, ketika saya melakukan matematika dari 5 dibagi dengan 9. 1292 00:53:00,630 --> 00:53:02,190 Jadi secara konseptual, itu sempurna benar. 1293 00:53:02,190 --> 00:53:03,690 Benar-benar konsisten dengan rumus. 1294 00:53:03,690 --> 00:53:05,940 Namun komputer hanya melakukan persis apa yang Anda 1295 00:53:05,940 --> 00:53:06,760 memberitahu mereka untuk melakukannya. 1296 00:53:06,760 --> 00:53:08,940 Dan apa yang kita efektif memberitahu komputer di sini adalah 1297 00:53:08,940 --> 00:53:12,320 membagi 5 bilangan bulat oleh 9 bilangan bulat 1298 00:53:12,320 --> 00:53:13,670 dan memberikan hasilnya. 1299 00:53:13,670 --> 00:53:16,230 Masalahnya adalah, meskipun, ketika Anda melakukan pembagian menggunakan data 1300 00:53:16,230 --> 00:53:20,220 jenis, output adalah tipe data yang sama sebagai masukan. 1301 00:53:20,220 --> 00:53:23,670 Dan jadi jika dua input keduanya ints, output akan 1302 00:53:23,670 --> 00:53:25,110 menjadi int. 1303 00:53:25,110 --> 00:53:28,770 Dan jadi 5 dibagi dengan 9 adalah sesuatu titik. 1304 00:53:28,770 --> 00:53:32,320 Tapi apa bilangan bulat terdekat untuk menunjukkan sesuatu? 1305 00:53:32,320 --> 00:53:33,630 Jadi, itu sebenarnya 0. 1306 00:53:33,630 --> 00:53:36,620 Jadi seperti yang kita bahas pada hari Senin, semuanya setelah desimal 1307 00:53:36,620 --> 00:53:37,940 titik akan terpotong. 1308 00:53:37,940 --> 00:53:39,495 Itu hanya akan dibuang. 1309 00:53:39,495 --> 00:53:42,760 Jadi ini adalah kesalahan lengkap, karena saya mungkin juga hanya 1310 00:53:42,760 --> 00:53:44,700 kalikan dengan apapun di sini 0. 1311 00:53:44,700 --> 00:53:46,550 >> Sekarang, saya bisa memperbaiki ini dalam beberapa cara. 1312 00:53:46,550 --> 00:53:48,080 Aku bisa melakukan ini. 1313 00:53:48,080 --> 00:53:50,490 5.0 dibagi dengan 9.0. 1314 00:53:50,490 --> 00:53:52,110 Secara teknis, aku bahkan tidak perlu melakukan itu. 1315 00:53:52,110 --> 00:53:55,780 Ini tidak cukup untuk hanya membuat salah satu nomor pelampung - 1316 00:53:55,780 --> 00:53:58,290 atau double - dengan menempatkan titik desimal di sini. 1317 00:53:58,290 --> 00:54:01,740 Karena apa yang terjadi sekarang adalah ketika Anda membagi integer oleh 1318 00:54:01,740 --> 00:54:04,670 pelampung, atau ganda, komputer akan menyadari 1319 00:54:04,670 --> 00:54:06,830 oh, salah satunya adalah lebih tepat. 1320 00:54:06,830 --> 00:54:09,420 Biarkan aku berbuat salah di sisi memberi Anda lebih presisi dibanding 1321 00:54:09,420 --> 00:54:10,310 Anda dimaksudkan. 1322 00:54:10,310 --> 00:54:12,700 Sehingga akan mengubah hasilnya - 1323 00:54:12,700 --> 00:54:16,240 itu akan mengembalikan hasil sebagai nilai floating point juga. 1324 00:54:16,240 --> 00:54:17,330 Sehingga akan bekerja. 1325 00:54:17,330 --> 00:54:18,060 Hal ini akan bekerja. 1326 00:54:18,060 --> 00:54:20,010 Dan ada satu mekanisme lain yang akan kita lihat pada 1327 00:54:20,010 --> 00:54:21,390 lebih detil minggu depan. 1328 00:54:21,390 --> 00:54:24,690 Anda benar-benar dapat, sebagai programmer, memberitahu komputer 1329 00:54:24,690 --> 00:54:27,930 untuk benar-benar memperlakukan satu tipe data sebagai 1330 00:54:27,930 --> 00:54:29,260 olah yang lain. 1331 00:54:29,260 --> 00:54:30,990 >> Jadi saya benar-benar bisa melakukan ini. 1332 00:54:30,990 --> 00:54:35,280 Dalam kurung, saya dapat mengatakan sesuatu seperti (float), terbuka 1333 00:54:35,280 --> 00:54:36,350 paren, paren dekat. 1334 00:54:36,350 --> 00:54:39,050 Dan ini adalah apa yang disebut "casting." Sekali lagi, lebih 1335 00:54:39,050 --> 00:54:39,940 pada minggu depan. 1336 00:54:39,940 --> 00:54:42,280 Tapi ini hanya cara untuk memberitahu program 1337 00:54:42,280 --> 00:54:45,910 komputer, ya aku tahu 9 adalah bilangan bulat atau panjang. 1338 00:54:45,910 --> 00:54:47,700 Aku tahu itu bukan nilai floating point. 1339 00:54:47,700 --> 00:54:49,420 Tapi memperlakukannya seperti itu pula. 1340 00:54:49,420 --> 00:54:52,000 Jadi untuk melemparkan tipe data berarti untuk mengkonversi 1341 00:54:52,000 --> 00:54:53,310 dari satu ke yang lainnya. 1342 00:54:53,310 --> 00:54:55,790 Terus terang, ini hanya sedikit jelek, jadi saya akan mengusulkan kita pergi 1343 00:54:55,790 --> 00:54:58,830 kembali ke saran asli hanya mengkonversi 1344 00:54:58,830 --> 00:55:00,770 hal-hal yang mengambang point nilai secara manual. 1345 00:55:00,770 --> 00:55:02,890 Karena sekarang itu hanya super jelas apa yang terjadi, dan 1346 00:55:02,890 --> 00:55:04,280 itu tidak semua yang mengganggu. 1347 00:55:04,280 --> 00:55:06,710 >> Sekarang, mari kita kembali ke jendela terminal saya. 1348 00:55:06,710 --> 00:55:07,990 Membuat f2c. 1349 00:55:07,990 --> 00:55:09,430 Biarkan aku pergi ke depan dan menjalankan ini. 1350 00:55:09,430 --> 00:55:12,340 Dan, sebagai samping, Anda bosan mengetik perintah ini 1351 00:55:12,340 --> 00:55:14,910 lagi dan lagi, menyadari bahwa komputer, seperti Linux sini, 1352 00:55:14,910 --> 00:55:16,010 cenderung cukup pintar. 1353 00:55:16,010 --> 00:55:18,890 Dan jika aku memukul Up, kita bisa pergi melalui seluruh sejarah saya 1354 00:55:18,890 --> 00:55:20,380 perintah, Atas dan Bawah. 1355 00:55:20,380 --> 00:55:23,840 Jadi dalam hal ini di sini, saya hanya bisa pergi Hingga jalankan make f2c. 1356 00:55:23,840 --> 00:55:25,830 Aku sedang berteriak, karena saya hanya melakukan itu satu detik yang lalu. 1357 00:55:25,830 --> 00:55:27,030 Ini sudah up to date. 1358 00:55:27,030 --> 00:55:30,720 Jadi sekarang saya dapat menjalankan f2c lagi. 1359 00:55:30,720 --> 00:55:33,260 Mari kita coba 32 Fahrenheit. 1360 00:55:33,260 --> 00:55:36,720 Sekarang mari kita coba 212 Fahrenheit. 1361 00:55:36,720 --> 00:55:37,250 >> Fiuh. 1362 00:55:37,250 --> 00:55:38,250 Tampaknya bekerja. 1363 00:55:38,250 --> 00:55:41,760 Sekarang, ini bagus, tapi rasanya agak sewenang-wenang yang 1364 00:55:41,760 --> 00:55:44,890 Aku menunjukkan enam angka setelah titik desimal. 1365 00:55:44,890 --> 00:55:45,070 Benar? 1366 00:55:45,070 --> 00:55:47,830 Jika Anda orang cuaca di TV, kau jenis doofus suatu 1367 00:55:47,830 --> 00:55:49,150 jika Anda membaca suhu untuk 1368 00:55:49,150 --> 00:55:50,070 ini tingkat presisi. 1369 00:55:50,070 --> 00:55:51,270 Jadi mari kita menyederhanakan ini. 1370 00:55:51,270 --> 00:55:53,880 Jadi mari kita benar-benar pergi di sini, untuk printf saya. 1371 00:55:53,880 --> 00:55:55,490 Dan ya, saya ingin mengapung. 1372 00:55:55,490 --> 00:55:57,570 Tapi aku ingin sekarang menentukan presisi. 1373 00:55:57,570 --> 00:55:59,070 Dan aku akan menjadi ringkas sedikit. 1374 00:55:59,070 --> 00:56:03,090 Aku akan mengatakan, beri saya satu poin setelah tempat desimal. 1375 00:56:03,090 --> 00:56:07,590 Jadi daripada mengatakan f%, aku akan mengatakan% .1 f. 1376 00:56:07,590 --> 00:56:09,760 Dan ini hanya berarti memberi saya satu posisi 1377 00:56:09,760 --> 00:56:11,410 setelah titik desimal. 1378 00:56:11,410 --> 00:56:11,700 Baiklah. 1379 00:56:11,700 --> 00:56:12,570 Mari kita coba ini lagi. 1380 00:56:12,570 --> 00:56:15,590 Biarkan aku kembali menjalankannya setelah kompilasi. 1381 00:56:15,590 --> 00:56:18,160 Dan sekarang saya ketik di 32, dan saya mendapatkan kembali 1382 00:56:18,160 --> 00:56:19,310 lebih ringkas nilai. 1383 00:56:19,310 --> 00:56:22,480 Dan saya dapat mengetikkan, sekarang, 212, dan mendapatkan kembali lebih ringkas 1384 00:56:22,480 --> 00:56:23,260 nilai juga. 1385 00:56:23,260 --> 00:56:25,190 Dan ada hal lain yang dapat Anda lakukan dengan printf. 1386 00:56:25,190 --> 00:56:27,950 Anda benar-benar dapat menentukan berapa lebar nomor harus. 1387 00:56:27,950 --> 00:56:30,900 Jika Anda ingin memiliki bantalan di atasnya, sehingga Anda dapat benar-align atau 1388 00:56:30,900 --> 00:56:32,360 kiri-align semua nomor atau 1389 00:56:32,360 --> 00:56:33,400 mencoba hal pusat. 1390 00:56:33,400 --> 00:56:35,340 Jadi menyadari ada sedikit trik yang dapat Anda lakukan di sana. 1391 00:56:35,340 --> 00:56:38,420 Tapi mereka hanya mendidih ke kode format, 1392 00:56:38,420 --> 00:56:39,600 seperti kita telah ada. 1393 00:56:39,600 --> 00:56:41,090 >> Jadi dalam hal ini masalah didahulukan. 1394 00:56:41,090 --> 00:56:43,820 Ini adalah meja yang sangat membosankan untuk pergi melalui metodis. 1395 00:56:43,820 --> 00:56:46,780 Tapi menyadari bahwa penulis C telah datang dengan 1396 00:56:46,780 --> 00:56:50,190 aturan yang menentukan operator memiliki tinggi 1397 00:56:50,190 --> 00:56:53,680 didahulukan, lebih banyak kekuatan mengikat, daripada yang lain. 1398 00:56:53,680 --> 00:56:55,890 Jadi sedangkan di sekolah dasar, kita umumnya tahu bahwa itu 1399 00:56:55,890 --> 00:56:58,930 perkalian dan pembagian, maka penambahan dan pengurangan, 1400 00:56:58,930 --> 00:56:59,950 maka beberapa hal lainnya. 1401 00:56:59,950 --> 00:57:01,720 Dalam dunia pemrograman, ada banyak 1402 00:57:01,720 --> 00:57:03,360 lagi daftar hal-hal. 1403 00:57:03,360 --> 00:57:05,150 Dan ini bukan sesuatu yang layak menghafal sekarang. 1404 00:57:05,150 --> 00:57:07,310 Anda akan mendapatkan terbiasa untuk itu sebelum lama. 1405 00:57:07,310 --> 00:57:10,690 Tapi sama seperti di sekolah dasar, tanda kurung pada umumnya memecahkan 1406 00:57:10,690 --> 00:57:12,990 isu diutamakan, dengan membuat super jelas untuk 1407 00:57:12,990 --> 00:57:15,620 komputer dan manusia sama apa yang dimaksudkan. 1408 00:57:15,620 --> 00:57:17,770 Jadi pertimbangkan ini hanya contekan kecil di sana. 1409 00:57:17,770 --> 00:57:21,690 Tapi kebanyakan dari mereka rincian kita tidak akan mendapatkan untuk beberapa waktu. 1410 00:57:21,690 --> 00:57:21,900 >> Baiklah. 1411 00:57:21,900 --> 00:57:24,120 Sekarang, mari kita membangun dan menjauh dari ini sedikit konyol 1412 00:57:24,120 --> 00:57:25,460 contoh matematika. 1413 00:57:25,460 --> 00:57:27,500 Masih menggunakan fundamental yang sama, tapi mulai 1414 00:57:27,500 --> 00:57:29,960 mengekspresikan diri kita sedikit lebih seperti Scratch. 1415 00:57:29,960 --> 00:57:31,660 Jadi dalam Scratch, kami memiliki ekspresi-ekspresi Boolean. 1416 00:57:31,660 --> 00:57:34,890 Dan dalam bahasa Inggris, ekspresi Boolean adalah apa? 1417 00:57:34,890 --> 00:57:35,580 Benar atau salah. 1418 00:57:35,580 --> 00:57:38,300 Ini adalah sesuatu yang mengevaluasi untuk benar atau salah. 1419 00:57:38,300 --> 00:57:39,060 1 atau 0. 1420 00:57:39,060 --> 00:57:39,870 Hidup atau mati. 1421 00:57:39,870 --> 00:57:41,000 Apa pun yang Anda ingin menyebutnya. 1422 00:57:41,000 --> 00:57:43,210 Sekarang di Gores, potongan-potongan teka-teki tampak seperti ini. 1423 00:57:43,210 --> 00:57:45,850 Dan itulah kombinasi, di bawah sana, dari tiga 1424 00:57:45,850 --> 00:57:47,980 teka-teki potongan. 1425 00:57:47,980 --> 00:57:48,980 Satu hubungannya - 1426 00:57:48,980 --> 00:57:51,710 sesuatu yang kosong dan kosong. 1427 00:57:51,710 --> 00:57:53,970 Dan kemudian dua ekspresi Boolean dalamnya. 1428 00:57:53,970 --> 00:57:56,460 Jadi Anda dapat sarang ekspresi Boolean untuk mendapatkan lebih banyak 1429 00:57:56,460 --> 00:57:59,360 rumit ekspresi Boolean. 1430 00:57:59,360 --> 00:58:03,930 Misalnya, jika hari Sabtu, dan itu bagus 1431 00:58:03,930 --> 00:58:06,180 Cuaca, kemudian pergi ke luar. 1432 00:58:06,180 --> 00:58:07,500 Atau sewenang-wenang seperti itu sesuatu. 1433 00:58:07,500 --> 00:58:10,090 Jadi Anda dapat bergabung ekspresi Boolean untuk datang dengan 1434 00:58:10,090 --> 00:58:12,780 besar nilai kebenarannya, yang jawabannya didasarkan 1435 00:58:12,780 --> 00:58:13,800 pada yang lebih kecil. 1436 00:58:13,800 --> 00:58:15,770 >> Sekarang, di C, untungnya, pemetaan ini 1437 00:58:15,770 --> 00:58:16,720 sebenarnya cukup sederhana. 1438 00:58:16,720 --> 00:58:18,820 Kurung membantu membuat hal-hal yang jelas di sini. 1439 00:58:18,820 --> 00:58:21,700 && Adalah apa artinya "dan." Jadi begitulah 1440 00:58:21,700 --> 00:58:24,700 kita akan mengkonversi blok dari Scratch ke C. 1441 00:58:24,700 --> 00:58:27,590 Dan untuk kondisi yang kita lihat di Gores, di sisi kiri 1442 00:58:27,590 --> 00:58:31,150 sisi ada, saya dapat stack mereka sama di C. Jika x kurang 1443 00:58:31,150 --> 00:58:32,970 daripada y, kemudian melakukan ini. 1444 00:58:32,970 --> 00:58:35,100 Lain jika x lebih besar dari y, kemudian melakukan ini. 1445 00:58:35,100 --> 00:58:38,030 Lain logis mereka harus sama, jadi ucapkan 1446 00:58:38,030 --> 00:58:39,140 bahwa mereka adalah sama. 1447 00:58:39,140 --> 00:58:41,210 Jadi sekarang kita dapat mulai membangun hal-hal ini. 1448 00:58:41,210 --> 00:58:42,170 >> Jadi mari kita lakukan contoh. 1449 00:58:42,170 --> 00:58:45,550 Mari saya membuka file yang ada di situs kursus yang 1450 00:58:45,550 --> 00:58:47,270 Saya menulis di muka. 1451 00:58:47,270 --> 00:58:50,540 Itu disebut nonswitch.c. 1452 00:58:50,540 --> 00:58:52,270 Dan kita akan melihat mengapa hanya dalam beberapa saat. 1453 00:58:52,270 --> 00:58:54,770 Jadi dalam file ini - nonswitch.c-- 1454 00:58:54,770 --> 00:58:56,830 pertama kali menyadari bahwa ada sejumlah besar 1455 00:58:56,830 --> 00:58:58,460 Komentar di atas. 1456 00:58:58,460 --> 00:59:00,110 Itu hanya menjelaskan nama file, apa 1457 00:59:00,110 --> 00:59:01,260 tidak, dan sebagainya. 1458 00:59:01,260 --> 00:59:04,390 Dan itu tampaknya menunjukkan penggunaan Boolean AND-ing - 1459 00:59:04,390 --> 00:59:06,220 conjoining dua ekspresi. 1460 00:59:06,220 --> 00:59:07,670 >> Jadi mari kita lihat bagaimana program ini bekerja. 1461 00:59:07,670 --> 00:59:10,840 Saya termasuk dua file, cs50.h dan stdio.h. 1462 00:59:10,840 --> 00:59:13,180 Jika saya gulir ke bawah, sekarang, untuk program, itu sedikit lebih lama 1463 00:59:13,180 --> 00:59:15,730 daripada kita sudah ditulis sebelum, tapi cukup dibaca. 1464 00:59:15,730 --> 00:59:18,360 Jadi saya pertama kali mencetak ke pengguna, on line 18, 1465 00:59:18,360 --> 00:59:20,460 "Berikan saya sebuah integer antara 1 dan 10." Jadi 1466 00:59:20,460 --> 00:59:21,530 yang ada di sana. 1467 00:59:21,530 --> 00:59:23,410 Sekarang saya mendapatkan integer. 1468 00:59:23,410 --> 00:59:25,380 Tetapi menyadari bahwa GetInt - cukup sederhana. 1469 00:59:25,380 --> 00:59:26,510 Ini hanya akan mendapatkan sebuah int. 1470 00:59:26,510 --> 00:59:28,830 Ini akan memastikan bahwa itu tidak mendapatkan int dan bukan 1471 00:59:28,830 --> 00:59:30,060 string atau pelampung. 1472 00:59:30,060 --> 00:59:32,390 Tapi itu tidak akan melakukan apapun pengecekan batas. 1473 00:59:32,390 --> 00:59:34,750 Ini tidak akan menyaring angka-angka harus antara 1474 00:59:34,750 --> 00:59:35,630 tertentu jangkauan. 1475 00:59:35,630 --> 00:59:37,730 Jadi kita harus menerapkan bahwa diri kita sendiri. 1476 00:59:37,730 --> 00:59:40,680 Jadi seperti di Scratch, di mana saya bisa melakukan gabungan dari 1477 00:59:40,680 --> 00:59:43,560 dua ekspresi, saya bisa melakukan itu di C sebagai berikut. 1478 00:59:43,560 --> 00:59:48,660 Jika n lebih besar dari atau sama dengan 1, dan n adalah kurang dari dan 1479 00:59:48,660 --> 00:59:52,220 atau sama dengan 3, saya akan sangat sewenang-wenang memutuskan bahwa 1480 00:59:52,220 --> 00:59:53,830 nomor untuk menjadi nomor kecil. 1481 00:59:53,830 --> 00:59:56,730 Hanya demi sebuah pernyataan. 1482 00:59:56,730 --> 01:00:00,210 Lain jika n adalah antara 4 dan 6, cetak "Anda memilih media 1483 01:00:00,210 --> 01:00:03,440 nomor. "Lain jika n adalah antara 7 dan 10, cetak" memilih Anda 1484 01:00:03,440 --> 01:00:06,390 jumlah yang besar. "Lain print" Anda memilih nomor yang tidak valid. " 1485 01:00:06,390 --> 01:00:07,900 Karena secara logika, yang mengikuti jika kita sudah 1486 01:00:07,900 --> 01:00:09,230 kelelahan jangkauan kami. 1487 01:00:09,230 --> 01:00:12,400 >> Jadi menyadari hal ini tidak cukup bagaimana kita menulis lebih besar atau 1488 01:00:12,400 --> 01:00:15,000 sama dengan di kelas matematika. 1489 01:00:15,000 --> 01:00:15,160 Benar? 1490 01:00:15,160 --> 01:00:17,430 Anda biasanya menarik seperti ini, dengan garis di bawahnya. 1491 01:00:17,430 --> 01:00:19,250 Tetapi tidak ada kunci seperti pada keyboard saya. 1492 01:00:19,250 --> 01:00:22,390 Jadi simbol dalam C untuk mengekspresikan lebih besar dari atau 1493 01:00:22,390 --> 01:00:25,770 sama dengan dua karakter, dan simbol untuk kurang dari 1494 01:00:25,770 --> 01:00:29,100 atau sama dengan dua karakter juga. 1495 01:00:29,100 --> 01:00:29,330 Baiklah. 1496 01:00:29,330 --> 01:00:31,910 Jadi jika saya menjalankan program ini, Anda mungkin bisa menebak apa itu 1497 01:00:31,910 --> 01:00:32,650 akan dilakukan. 1498 01:00:32,650 --> 01:00:36,180 Jika saya pergi ke depan dan membuat nonswitch, Enter. 1499 01:00:36,180 --> 01:00:38,130 Dan kemudian jalankan nonswitch. 1500 01:00:38,130 --> 01:00:39,530 Beri aku nomor antara 1 dan 10. 1501 01:00:39,530 --> 01:00:40,870 Aku akan memberikannya 11. 1502 01:00:40,870 --> 01:00:42,280 Aku mengambil nomor yang tidak valid. 1503 01:00:42,280 --> 01:00:44,090 Biarkan aku mencoba nomor 3. 1504 01:00:44,090 --> 01:00:45,990 Aku mengambil sejumlah kecil. 1505 01:00:45,990 --> 01:00:48,360 Jadi cukup mudah di sana. 1506 01:00:48,360 --> 01:00:52,230 >> Bagaimana jika saya ingin mengubah perilaku dari program ini dan 1507 01:00:52,230 --> 01:00:54,250 melakukan sesuatu yang sedikit berbeda, bukan? 1508 01:00:54,250 --> 01:00:57,620 Biarkan aku pergi ke depan dan mengatakan ini. 1509 01:00:57,620 --> 01:00:59,480 Mari saya menyingkirkan semua ini. 1510 01:00:59,480 --> 01:01:03,780 Dan biarkan aku mengatakan jika (n == 42). 1511 01:01:03,780 --> 01:01:08,730 Dan kemudian aku akan pergi ke depan dan mengatakan cetak "Anda memilih yang 1512 01:01:08,730 --> 01:01:16,340 jawaban yang benar. "Lain kita akan pergi ke depan dan berkata, 1513 01:01:16,340 --> 01:01:18,460 printf ("Anda memilih 1514 01:01:18,460 --> 01:01:21,170 Jawaban salah ");. Oke. 1515 01:01:21,170 --> 01:01:22,040 Hanya karena. 1516 01:01:22,040 --> 01:01:23,890 >> Sekarang, beberapa poin yang bisa kita lakukan di sini. 1517 01:01:23,890 --> 01:01:26,570 Satu, saya tidak ketik simbol yang Anda akan berpikir adalah 1518 01:01:26,570 --> 01:01:27,390 paling masuk akal. 1519 01:01:27,390 --> 01:01:30,110 Ketika saya ingin memeriksa kesetaraan, ternyata Anda tidak menggunakan 1520 01:01:30,110 --> 01:01:30,910 sama tanda. 1521 01:01:30,910 --> 01:01:34,000 Anda malah menggunakan tanda sama sama. 1522 01:01:34,000 --> 01:01:36,440 Dan mengapa mungkin itu akan, hanya intuitif? 1523 01:01:36,440 --> 01:01:37,030 Ya. 1524 01:01:37,030 --> 01:01:39,330 HADIRIN: [Tak terdengar] 1525 01:01:39,330 --> 01:01:39,615 DAVID J. Malan: Benar. 1526 01:01:39,615 --> 01:01:41,630 Tanda sama sudah digunakan untuk tugas. 1527 01:01:41,630 --> 01:01:43,020 Seseorang tidak benar-benar berpikir ini melalui. 1528 01:01:43,020 --> 01:01:45,820 Dan sekarang, ketika datang ke pengujian kesetaraan, kita harus 1529 01:01:45,820 --> 01:01:48,850 lebih eksplisit, dan mengatakan sama sama. 1530 01:01:48,850 --> 01:01:52,110 Sebuah kesalahan yang sangat umum adalah untuk melakukan hal ini. 1531 01:01:52,110 --> 01:01:54,800 Dan, jika dalam jam kantor atau kadang-kadang minggu depan atau di 1532 01:01:54,800 --> 01:01:58,340 berikutnya dua minggu Anda melakukan sesuatu seperti ini dan kemudian 1533 01:01:58,340 --> 01:02:00,920 berjuang dengan itu selama 10, 20 menit mencoba untuk mencari tahu 1534 01:02:00,920 --> 01:02:03,330 apa bug sialan ini, menyadari bahwa Anda adalah salah satu dari mereka 1535 01:02:03,330 --> 01:02:04,470 orang-orang yang membuat kesalahan ini. 1536 01:02:04,470 --> 01:02:06,030 Jadi, super mudah untuk membuat. 1537 01:02:06,030 --> 01:02:08,240 Tetapi tujuannya sekarang adalah untuk menangkal kesalahan ini. 1538 01:02:08,240 --> 01:02:11,840 Ini bisa mengevaluasi, karena apa yang ini benar-benar katakan? 1539 01:02:11,840 --> 01:02:15,010 Jika n mendapat 42. 1540 01:02:15,010 --> 01:02:18,250 Jadi orang-orang verba digunakan, secara lisan, untuk mengekspresikan 1541 01:02:18,250 --> 01:02:21,800 gagasan penugasan adalah "mendapat." Jadi jika n mendapat 42. 1542 01:02:21,800 --> 01:02:24,060 Jadi itu berarti menetapkan 42 ke n. 1543 01:02:24,060 --> 01:02:26,250 Sekarang saya memiliki ekspresi Boolean dalam tanda kurung, 1544 01:02:26,250 --> 01:02:30,230 dalam kondisi ini, nilai yang 42. 1545 01:02:30,230 --> 01:02:30,390 Benar? 1546 01:02:30,390 --> 01:02:32,690 Karena jika Anda mengevaluasi itu dari dalam ke luar, total 1547 01:02:32,690 --> 01:02:34,100 Jawabannya, sekarang, adalah 42. 1548 01:02:34,100 --> 01:02:37,360 >> Jadi jika saya meminta Anda pertanyaan, "jika (42)," apa yang 1549 01:02:37,360 --> 01:02:38,410 yang benar-benar katakan? 1550 01:02:38,410 --> 01:02:40,990 Nah, ekspresi Boolean hanya bisa benar atau salah. 1551 01:02:40,990 --> 01:02:42,010 1 atau 0. 1552 01:02:42,010 --> 01:02:43,010 Hidup atau mati. 1553 01:02:43,010 --> 01:02:45,240 Jadi kita tampaknya memiliki kasus sudut sini, dimana semua dari 1554 01:02:45,240 --> 01:02:50,060 tiba-tiba, saya katakan "jika (42)". Itu bukan nilai Boolean. 1555 01:02:50,060 --> 01:02:54,500 Jadi apa yang komputer lakukan, meskipun, adalah pada dasarnya menyamakan 1556 01:02:54,500 --> 01:02:58,620 sesuatu yang tidak 0 ditafsirkan untuk menjadi kenyataan. 1557 01:02:58,620 --> 01:02:59,340 1. 1558 01:02:59,340 --> 01:02:59,690 Pada. 1559 01:02:59,690 --> 01:03:01,510 Mereka semua setara fungsional. 1560 01:03:01,510 --> 01:03:05,070 Hanya nilai 0, atau kata kunci palsu, seperti yang kita akan 1561 01:03:05,070 --> 01:03:07,860 akhirnya melihat, sebenarnya palsu. 1562 01:03:07,860 --> 01:03:15,040 Jadi "jika (42)" akan benar-benar menjadi kenyataan, karena itu adalah non-nol. 1563 01:03:15,040 --> 01:03:18,620 Jadi untuk lebih tepat di sini, nilai Boolean benar-benar tidak begitu 1564 01:03:18,620 --> 01:03:20,680 banyak benar atau salah, tetapi untuk ini 1565 01:03:20,680 --> 01:03:24,650 kasus, jika adalah 0 atau non-nol. 1566 01:03:24,650 --> 01:03:26,330 Jadi palsu atau tidak palsu. 1567 01:03:26,330 --> 01:03:28,640 Dan yang memungkinkan kita untuk mencakup semua lebih 1568 01:03:28,640 --> 01:03:30,980 kemungkinan dalam ekspresi kurung. 1569 01:03:30,980 --> 01:03:33,840 Jadi kita perlu, pernah begitu hati-hati, mengatakan ini - 1570 01:03:33,840 --> 01:03:35,620 if (n == 42). 1571 01:03:35,620 --> 01:03:39,100 Hanya karena kita perlu menentukan tes kesetaraan, 1572 01:03:39,100 --> 01:03:40,930 bukan tugas dari nilai. 1573 01:03:40,930 --> 01:03:42,830 >> Apa lagi yang perlu diperhatikan di sini? 1574 01:03:42,830 --> 01:03:46,030 Ini kurung kurawal sebenarnya tidak diperlukan. 1575 01:03:46,030 --> 01:03:48,650 Aku sudah melakukannya hanya untuk menjadi rewel di sini. 1576 01:03:48,650 --> 01:03:51,350 Tetapi bila Anda memiliki kondisi yang hanya memiliki satu baris 1577 01:03:51,350 --> 01:03:55,100 kode, seperti kenyamanan, programmer tidak perlu menggunakan 1578 01:03:55,100 --> 01:03:56,030 yang keriting kawat gigi. 1579 01:03:56,030 --> 01:03:59,370 Itu sudah cukup untuk hanya indent, untuk alasan estetika, dan 1580 01:03:59,370 --> 01:04:01,050 kemudian menulis baris kode Anda. 1581 01:04:01,050 --> 01:04:04,160 Hanya ketika Anda ingin menulis dua baris kode - untuk 1582 01:04:04,160 --> 01:04:08,230 Misalnya, lain printf ("Bye!"). Jika Anda ingin melakukan 1583 01:04:08,230 --> 01:04:09,540 itu, ini rusak. 1584 01:04:09,540 --> 01:04:11,700 Anda dapat indent semua yang Anda inginkan, tapi fakta bahwa Anda memiliki 1585 01:04:11,700 --> 01:04:14,600 mengetik dua baris kode tanpa menggunakan kurung kurawal 1586 01:04:14,600 --> 01:04:16,860 berarti bahwa program ini tidak akan berjalan dengan benar atau mungkin 1587 01:04:16,860 --> 01:04:18,530 bahkan tidak mengkompilasi benar. 1588 01:04:18,530 --> 01:04:21,040 Jadi untuk saat ini, jujur, saya pikir kebiasaan terbaik adalah hanya 1589 01:04:21,040 --> 01:04:24,460 menggunakan kurung kurawal, dan Anda akan menemukan bahwa mereka membuat 1590 01:04:24,460 --> 01:04:25,750 super jelas apa yang terjadi. 1591 01:04:25,750 --> 01:04:29,410 >> Juga, sebagai samping - terutama jika Anda berada di antara mereka yang menggunakan 1592 01:04:29,410 --> 01:04:31,700 yang direkomendasikan buku atau sumber daya online - 1593 01:04:31,700 --> 01:04:33,480 menyadari bahwa ada gagasan dari gaya dalam 1594 01:04:33,480 --> 01:04:34,130 pemrograman. 1595 01:04:34,130 --> 01:04:37,280 Dan beberapa orang benar-benar lebih memilih untuk menempatkan tanda kurung kurawal 1596 01:04:37,280 --> 01:04:38,720 di sini pada baris. 1597 01:04:38,720 --> 01:04:41,520 Sebagian orang memilih untuk melakukan hal-hal konyol, 1598 01:04:41,520 --> 01:04:43,830 seperti menempatkan mereka di sini. 1599 01:04:43,830 --> 01:04:45,140 Tidak ada jawaban yang salah ketika datang ke 1600 01:04:45,140 --> 01:04:46,710 gaya, tapi ini salah. 1601 01:04:46,710 --> 01:04:47,700 Tetapi beberapa orang melakukannya. 1602 01:04:47,700 --> 01:04:49,160 [TERTAWA] 1603 01:04:49,160 --> 01:04:51,760 DAVID J. Malan: Jadi saya menyebutkan ini sekarang, hanya karena sebagai 1604 01:04:51,760 --> 01:04:54,400 Anda membaca tentang hal-hal di buku atau online, Anda akan mendapatkan 1605 01:04:54,400 --> 01:04:55,990 berbeda pesan dari guru yang berbeda dan 1606 01:04:55,990 --> 01:04:56,730 penulis yang berbeda. 1607 01:04:56,730 --> 01:04:58,640 Dan hanya menyadari bahwa, fungsional, mereka 1608 01:04:58,640 --> 01:05:00,740 umumnya setara, tapi konsisten. 1609 01:05:00,740 --> 01:05:02,850 Jadi dalam hal ini, kita akan standarisasi pada keriting 1610 01:05:02,850 --> 01:05:04,650 kawat gigi berbaris di sini di sebelah kiri. 1611 01:05:04,650 --> 01:05:04,910 >> Baiklah. 1612 01:05:04,910 --> 01:05:07,040 Jadi mari kita lanjutkan sekarang dan menjalankan ini, dan melihat apa yang terjadi 1613 01:05:07,040 --> 01:05:07,780 dengan program ini. 1614 01:05:07,780 --> 01:05:09,970 Membuat nonswitch. 1615 01:05:09,970 --> 01:05:11,040 Kemudian jalankan nonswitch. 1616 01:05:11,040 --> 01:05:13,900 Berikan saya sebuah integer antara 0 dan - jadi itu tidak relevan 1617 01:05:13,900 --> 01:05:16,480 lagi, tapi aku hanya akan sewenang-wenang katakan 42. 1618 01:05:16,480 --> 01:05:17,850 Dan saya memilih jawaban yang tepat. 1619 01:05:17,850 --> 01:05:20,430 Nah sekarang, mari kita benar-benar mengambil ini dalam arah yang berbeda. 1620 01:05:20,430 --> 01:05:22,070 Ternyata ada beberapa sintaks lain kita 1621 01:05:22,070 --> 01:05:23,480 dapat digunakan dalam program. 1622 01:05:23,480 --> 01:05:27,310 Berikut sepotong baru sintaks yang secara fungsional sama, 1623 01:05:27,310 --> 01:05:30,680 tetapi hanya memperkenalkan cara lain untuk mengekspresikan diri kita sendiri. 1624 01:05:30,680 --> 01:05:32,830 Jadi ini adalah apa yang disebut "pernyataan switch." Dan 1625 01:05:32,830 --> 01:05:34,820 pernyataan switch beroperasi sebagai berikut. 1626 01:05:34,820 --> 01:05:37,580 Dibutuhkan, dalam tanda kurung, nilai yang ingin Anda 1627 01:05:37,580 --> 01:05:38,860 "Saklar" on. 1628 01:05:38,860 --> 01:05:41,490 Anda ingin berperilaku berbeda berdasarkan nilainya. 1629 01:05:41,490 --> 01:05:44,360 Jadi ini berarti beralih pada nilai n. 1630 01:05:44,360 --> 01:05:45,480 Dan apa artinya ini? 1631 01:05:45,480 --> 01:05:50,530 Nah, jika n adalah 1 atau 2 atau 3, pergi ke depan dan mencetak "Kau 1632 01:05:50,530 --> 01:05:52,680 mengambil sejumlah besar "dan kemudian istirahat. 1633 01:05:52,680 --> 01:05:55,720 Alasan untuk istirahat adalah bahwa cara kerjanya adalah sebagai C 1634 01:05:55,720 --> 01:05:59,790 Begitu ia menemukan kasus yang cocok, ia mulai melaksanakan 1635 01:05:59,790 --> 01:06:01,610 semua kode di bawahnya. 1636 01:06:01,610 --> 01:06:04,580 Jadi jika saya memiliki satu baris kode, seperti yang saya lakukan di sini pada baris 27, hal itu 1637 01:06:04,580 --> 01:06:05,360 dijalankan. 1638 01:06:05,360 --> 01:06:07,520 Jika saya menambahkan baris lain di sini, itu akan dieksekusi. 1639 01:06:07,520 --> 01:06:09,350 Baris lain di sini, itu akan dieksekusi. 1640 01:06:09,350 --> 01:06:12,460 Program ini hanya berhenti melaksanakan apa yang di bawah 1641 01:06:12,460 --> 01:06:14,680 Kasus berlaku pernyataan ketika saya tandasnya 1642 01:06:14,680 --> 01:06:17,210 mengatakan "istirahat." Begitu salah. 1643 01:06:17,210 --> 01:06:19,220 Benar, dalam hal ini, sebagai hasilnya. 1644 01:06:19,220 --> 01:06:22,130 Kasus 4 atau 5 atau 6, sama, akan 1645 01:06:22,130 --> 01:06:23,160 untuk mencetak pesan. 1646 01:06:23,160 --> 01:06:24,410 Dalam hal ini angka, menengah. 1647 01:06:24,410 --> 01:06:25,200 Istirahat. 1648 01:06:25,200 --> 01:06:28,160 Kasus 7, 8, 9, 10, itu akan mencetak "Kau memilih besar 1649 01:06:28,160 --> 01:06:28,950 nomor "Break.. 1650 01:06:28,950 --> 01:06:31,290 Dan kemudian ada harfiah kata kunci yang disebut "default" 1651 01:06:31,290 --> 01:06:34,090 itu efektif seperti "lain" membangun. 1652 01:06:34,090 --> 01:06:36,010 Jadi baru sintaks, namun secara intelektual, 1653 01:06:36,010 --> 01:06:37,060 tidak ada sama sekali di sini baru. 1654 01:06:37,060 --> 01:06:38,280 Ini seperti Scratch tersebut. 1655 01:06:38,280 --> 01:06:41,040 Jika, else if, else if, semacam blok. 1656 01:06:41,040 --> 01:06:44,560 >> Jadi itulah versi beralih dari program ini. 1657 01:06:44,560 --> 01:06:46,280 Tapi perhatikan bahwa kita melakukannya dengan angka di sini. 1658 01:06:46,280 --> 01:06:49,040 Mari saya membuka versi kedua, hanya untuk menunjukkan 1659 01:06:49,040 --> 01:06:50,670 sedikit lebih sesuatu yang konkret. 1660 01:06:50,670 --> 01:06:52,840 Jadi di sini kita memiliki nilai sebagai gantinya. 1661 01:06:52,840 --> 01:06:55,540 Ternyata Anda dapat menggunakan switch tidak hanya pada bilangan bulat, tetapi pada 1662 01:06:55,540 --> 01:06:56,340 karakter. 1663 01:06:56,340 --> 01:06:58,930 Tidak di semua jenis data, tapi setidaknya pada karakter. 1664 01:06:58,930 --> 01:07:02,670 Jadi di sini, kita bisa melakukan sesuatu seperti jika nilai C yang 1665 01:07:02,670 --> 01:07:06,230 pengguna mengetik, di baris 19, dengan menggunakan fungsi getchar, 1666 01:07:06,230 --> 01:07:09,410 adalah modal A atau huruf kecil, mari kita mengartikannya sebagai sebuah kelas, 1667 01:07:09,410 --> 01:07:11,340 dan mengatakan mereka memilih sebuah kelas yang sangat baik. 1668 01:07:11,340 --> 01:07:14,690 Dan turun sepanjang pernyataan switch, yang kita miliki lainnya 1669 01:07:14,690 --> 01:07:17,950 kasus untuk "B" s dan "C" s, dan sebagainya. 1670 01:07:17,950 --> 01:07:19,780 Tapi mari kita sekarang melengkapi satu hal lainnya. 1671 01:07:19,780 --> 01:07:21,130 Dan lagi, jenis terbang melalui 1672 01:07:21,130 --> 01:07:22,200 beberapa contoh. 1673 01:07:22,200 --> 01:07:26,990 Tapi itu benar-benar sehingga kita bisa menerapkannya, sekarang - 1674 01:07:26,990 --> 01:07:28,880 atau benar-benar, hanya menerjemahkan mereka sekarang - 1675 01:07:28,880 --> 01:07:32,220 C. 1676 01:07:32,220 --> 01:07:33,310 >> Jadi biarkan aku pergi ke depan dan melakukan hal ini. 1677 01:07:33,310 --> 01:07:34,830 Aku akan membuka file baru. 1678 01:07:34,830 --> 01:07:39,430 Dan aku akan melakukan include. 1679 01:07:39,430 --> 01:07:42,770 Dan kemudian aku akan melakukan int main (void). 1680 01:07:42,770 --> 01:07:46,390 Biarkan saya menyimpan file ini sebagai suatu loop.c. 1681 01:07:46,390 --> 01:07:48,280 Hanya sebagai contoh. 1682 01:07:48,280 --> 01:07:49,910 Dan aku akan pergi ke depan dan lakukan hal berikut. 1683 01:07:49,910 --> 01:07:54,180 Saya ingin menulis sebuah program yang sangat membosankan. 1684 01:07:54,180 --> 01:07:56,170 Jadi 10. 1685 01:07:56,170 --> 01:07:58,862 Mari kita lakukan ini. 1686 01:07:58,862 --> 01:07:59,320 9. 1687 01:07:59,320 --> 01:08:00,360 Baiklah. 1688 01:08:00,360 --> 01:08:02,120 Segera setelah Anda mulai melakukan hal ini dalam pemrograman, Anda 1689 01:08:02,120 --> 01:08:03,490 mungkin melakukan sesuatu yang salah. 1690 01:08:03,490 --> 01:08:04,950 Tapi kita akan mulai dari sana pula. 1691 01:08:04,950 --> 01:08:05,430 Ups. 1692 01:08:05,430 --> 01:08:06,950 Itu benar-benar salah. 1693 01:08:06,950 --> 01:08:08,230 7. 1694 01:08:08,230 --> 01:08:09,440 6. 1695 01:08:09,440 --> 01:08:10,750 5. 1696 01:08:10,750 --> 01:08:11,200 4. 1697 01:08:11,200 --> 01:08:12,450 Tidak ada yang akan terjadi ketika kita sampai ke 0. 1698 01:08:12,450 --> 01:08:13,290 3. 1699 01:08:13,290 --> 01:08:14,590 2. 1700 01:08:14,590 --> 01:08:15,630 1. 1701 01:08:15,630 --> 01:08:16,020 Oke. 1702 01:08:16,020 --> 01:08:17,560 0. 1703 01:08:17,560 --> 01:08:18,689 Hapus. 1704 01:08:18,689 --> 01:08:19,029 >> Baiklah. 1705 01:08:19,029 --> 01:08:20,029 Jadi kembali 0. 1706 01:08:20,029 --> 01:08:22,010 Jadi program ini yang jelas akan melakukan apa yang sangat 1707 01:08:22,010 --> 01:08:23,310 tediously mengatakan itu akan dilakukan. 1708 01:08:23,310 --> 01:08:24,060 Ini akan mencetak semua dari mereka 1709 01:08:24,060 --> 01:08:25,290 nilai-nilai, dari atas ke bawah. 1710 01:08:25,290 --> 01:08:27,140 Jadi biarkan aku lakukan membuat lingkaran. 1711 01:08:27,140 --> 01:08:28,640 Dan kemudian - whoops. 1712 01:08:28,640 --> 01:08:29,700 Membuat loop. 1713 01:08:29,700 --> 01:08:31,479 Aku berada di direktori yang salah. 1714 01:08:31,479 --> 01:08:33,300 Dan sekarang biarkan aku menjalankan loop. 1715 01:08:33,300 --> 01:08:34,140 Enter. 1716 01:08:34,140 --> 01:08:34,620 Woohoo. 1717 01:08:34,620 --> 01:08:35,270 Sangat bagus. 1718 01:08:35,270 --> 01:08:36,279 Program yang bagus, panjang. 1719 01:08:36,279 --> 01:08:38,109 >> Baiklah, tapi sekarang mari kita lakukan ini lebih baik. 1720 01:08:38,109 --> 01:08:40,810 Sama seperti di Scratch, ketika Anda mulai menggunakan looping 1721 01:08:40,810 --> 01:08:43,149 membangun, bukan hanya menyalin dan menyisipkan semua 1722 01:08:43,149 --> 01:08:45,580 potongan puzzle, izinkan saya memperkenalkan hal ini. 1723 01:08:45,580 --> 01:08:48,609 Jadi di C, ada konstruksi perulangan berbagai, 1724 01:08:48,609 --> 01:08:50,540 salah satunya terlihat seperti ini. 1725 01:08:50,540 --> 01:08:55,069 A "untuk" loop memiliki tiga hal, dipisahkan oleh dua titik koma. 1726 01:08:55,069 --> 01:08:57,770 Dan kemudian, dalam tubuh loop, sehingga untuk berbicara - yang 1727 01:08:57,770 --> 01:08:59,390 hal dalam kurung kurawal - 1728 01:08:59,390 --> 01:09:01,010 kita bisa melakukan sesuatu lagi dan lagi. 1729 01:09:01,010 --> 01:09:02,310 Jadi apa yang saya miliki di sini di layar, ini 1730 01:09:02,310 --> 01:09:03,300 benar-benar hanya komentar. 1731 01:09:03,300 --> 01:09:05,380 The / / berarti di sini datang komentar. 1732 01:09:05,380 --> 01:09:06,180 Ini bukan kode. 1733 01:09:06,180 --> 01:09:08,890 Ini hanya deskripsi bahasa Inggris, bagi saya, manusia. 1734 01:09:08,890 --> 01:09:11,300 >> Jadi inisialisasi, kondisi, dan update. 1735 01:09:11,300 --> 01:09:12,770 Nah, mari kita lihat bagaimana ini bekerja. 1736 01:09:12,770 --> 01:09:15,520 Hal ini memungkinkan saya untuk menulis ulang program ini sebagai berikut. 1737 01:09:15,520 --> 01:09:16,399 Untuk - 1738 01:09:16,399 --> 01:09:18,029 jadi di sini datang loop saya - 1739 01:09:18,029 --> 01:09:19,439 int i - 1740 01:09:19,439 --> 01:09:21,330 di sini datang sebuah variabel yang disebut "i" - 1741 01:09:21,330 --> 01:09:23,140 akan diinisialisasi ke 10. 1742 01:09:23,140 --> 01:09:25,260 Jadi ada inisialisasi saya. 1743 01:09:25,260 --> 01:09:29,450 Saya ingin melakukan loop ini asalkan "i" lebih besar dari atau 1744 01:09:29,450 --> 01:09:30,899 sama dengan 0. 1745 01:09:30,899 --> 01:09:32,880 Dan pada setiap iterasi dari loop ini, saya ingin 1746 01:09:32,880 --> 01:09:34,979 untuk melakukan i -. 1747 01:09:34,979 --> 01:09:36,310 Jadi kita melihat + + pada Senin. 1748 01:09:36,310 --> 01:09:37,660 - Adalah sebaliknya. 1749 01:09:37,660 --> 01:09:39,410 Ini decrements nilai dengan 1. 1750 01:09:39,410 --> 01:09:43,319 Di dalam loop ini, saya ingin benar-benar melakukan sesuatu. 1751 01:09:43,319 --> 01:09:46,390 Jadi aku akan mengatakan sesuatu seperti printf. 1752 01:09:46,390 --> 01:09:48,939 Saya tidak ingin mengatakan 10 sekarang, karena ini jelas hanya 1753 01:09:48,939 --> 01:09:50,000 akan mencetak nilai yang sama. 1754 01:09:50,000 --> 01:09:52,246 Apa yang saya ingin mencetak sebaliknya, mungkin? 1755 01:09:52,246 --> 01:09:52,590 Ya. 1756 01:09:52,590 --> 01:09:55,270 Jadi "i." Jadi% d, i. 1757 01:09:55,270 --> 01:09:57,340 >> Jadi aku akan mencuri salah satu ide dari sebelumnya - 1758 01:09:57,340 --> 01:09:59,640 ini substitusi untuk kode format - 1759 01:09:59,640 --> 01:10:01,620 dan kemudian turun di sini, di bagian bawah, aku akan kembali 0, hanya 1760 01:10:01,620 --> 01:10:02,710 untuk mengukur baik. 1761 01:10:02,710 --> 01:10:04,740 Tapi sekarang, saya memiliki program lebih ringkas. 1762 01:10:04,740 --> 01:10:07,490 Ini hanya beberapa baris, dan bukan 10 atau 11 baris. 1763 01:10:07,490 --> 01:10:09,440 Biarkan aku pergi ke prompt saya di sini. 1764 01:10:09,440 --> 01:10:10,630 Remake loop. 1765 01:10:10,630 --> 01:10:12,140 Memutarkan loop. 1766 01:10:12,140 --> 01:10:13,570 Dan tampaknya menjadi sama. 1767 01:10:13,570 --> 01:10:15,550 Sekarang, program ini ada lebih menarik. 1768 01:10:15,550 --> 01:10:17,180 Tapi sekarang saya bisa mengetik sesuatu seperti ini. 1769 01:10:17,180 --> 01:10:18,970 Saya bisa mengubah ini untuk 100. 1770 01:10:18,970 --> 01:10:21,400 Saya kemudian bisa mengkompilasi ulang program saya. 1771 01:10:21,400 --> 01:10:23,360 Dan kemudian saya dapat kembali menjalankan program saya. 1772 01:10:23,360 --> 01:10:26,390 Dan sekarang ia pergi super cepat pada komputer saat ini. 1773 01:10:26,390 --> 01:10:27,820 Tapi ada saya - 1774 01:10:27,820 --> 01:10:29,620 dan benar-benar, penyangga scrollback saya tidak 1775 01:10:29,620 --> 01:10:30,890 bahkan pergi sejauh itu. 1776 01:10:30,890 --> 01:10:31,680 Di sana kami pergi. 1777 01:10:31,680 --> 01:10:34,090 Jadi ada kita memiliki semua 100. 1778 01:10:34,090 --> 01:10:35,880 Tapi itu mudah untuk membuat kesalahan di sini. 1779 01:10:35,880 --> 01:10:37,920 Apa yang akan menjadi perilaku yang diharapkan jika saya 1780 01:10:37,920 --> 01:10:41,150 sengaja melakukan itu? 1781 01:10:41,150 --> 01:10:42,550 Jadi rasanya seperti tak terbatas. 1782 01:10:42,550 --> 01:10:44,670 Jadi mari kita lihat apakah komputer berperilaku. 1783 01:10:44,670 --> 01:10:47,020 >> Jadi biarkan aku pergi ke depan dan membuat lingkaran. 1784 01:10:47,020 --> 01:10:48,355 Dan biarkan aku menjalankan loop. 1785 01:10:53,590 --> 01:10:55,210 Jadi mari kita kembali ke yang hanya dalam beberapa saat. 1786 01:10:55,210 --> 01:10:56,720 Kami akan membiarkan menjalankan itu. 1787 01:10:56,720 --> 01:10:59,520 Karena apa yang harus kita menghitung sampai, minimal? 1788 01:10:59,520 --> 01:11:02,200 Mungkin setidaknya 2 miliar, jika kita memiliki banyak bit, dan 1789 01:11:02,200 --> 01:11:03,660 kita menggunakan nilai-nilai positif. 1790 01:11:03,660 --> 01:11:04,890 Jadi mari kita melompat kembali ke sini. 1791 01:11:04,890 --> 01:11:07,810 Selain jenis loop, kita memiliki apa yang disebut sementara 1792 01:11:07,810 --> 01:11:09,430 loop. Jadi, seperti dalam Scratch, Anda memiliki Selamanya 1793 01:11:09,430 --> 01:11:11,240 blok, dan Anda memiliki blok Ulangi. 1794 01:11:11,240 --> 01:11:13,270 Demikian pula, di C, Anda hanya punya cara lain 1795 01:11:13,270 --> 01:11:14,260 untuk mengekspresikan diri. 1796 01:11:14,260 --> 01:11:17,110 Jadi Anda memiliki gagasan while loop yang memungkinkan Anda untuk 1797 01:11:17,110 --> 01:11:18,860 mengekspresikan diri sedikit berbeda. 1798 01:11:18,860 --> 01:11:21,490 Dan kemudian Anda memiliki sesuatu yang disebut loop do-while, 1799 01:11:21,490 --> 01:11:24,200 yang beroperasi sedikit berbeda juga. 1800 01:11:24,200 --> 01:11:25,320 Dan kita akan menggoda ini terpisah dari waktu ke waktu. 1801 01:11:25,320 --> 01:11:28,630 >> Tapi mari kita lihat ini yang terakhir di sini. 1802 01:11:28,630 --> 01:11:30,160 Jika kita pergi ke - 1803 01:11:30,160 --> 01:11:31,466 masih berjalan. 1804 01:11:31,466 --> 01:11:32,770 Hal ini cukup terbatas. 1805 01:11:32,770 --> 01:11:36,870 Jadi biarkan aku pergi ke positif, dan menunjukkan bagaimana kita dapat benar-benar 1806 01:11:36,870 --> 01:11:39,410 mengatur input pengguna sedikit lebih efektif. 1807 01:11:39,410 --> 01:11:40,910 Ini adalah program yang cukup singkat. 1808 01:11:40,910 --> 01:11:43,730 Dan di sini kita miliki, di utama, sebuah deklarasi int n. 1809 01:11:43,730 --> 01:11:46,570 Jadi memberi saya sebuah variabel yang disebut n. Sekarang, saya benar-benar mengatakan 1810 01:11:46,570 --> 01:11:48,340 "Lakukan." Dan kemudian aku punya terbuka keriting 1811 01:11:48,340 --> 01:11:49,630 penjepit, penjepit keriting dekat. 1812 01:11:49,630 --> 01:11:52,000 Dan kemudian perhatikan, setelah itu, ia mengatakan sedangkan n 1813 01:11:52,000 --> 01:11:53,790 kurang dari 1. 1814 01:11:53,790 --> 01:11:55,300 Jadi perhatikan bahwa garis - 1815 01:11:55,300 --> 01:11:56,740 19 sampai 24 - 1816 01:11:56,740 --> 01:11:59,450 menulis kolektif loop do-while. 1817 01:11:59,450 --> 01:12:01,280 Dan lagi, sintaks baru, bukan ide baru. 1818 01:12:01,280 --> 01:12:03,740 Ini hanya cara lain untuk perulangan, sintaksis. 1819 01:12:03,740 --> 01:12:04,890 Jadi apa ini lakukan? 1820 01:12:04,890 --> 01:12:08,000 Lakukan hal berikut saat n kurang dari 1. 1821 01:12:08,000 --> 01:12:09,080 Jadi apa yang saya ingin lakukan? 1822 01:12:09,080 --> 01:12:11,390 Saya menuntut bahwa Anda memberi saya bilangan bulat positif. 1823 01:12:11,390 --> 01:12:14,110 Lalu aku benar-benar mencoba untuk mendapatkan integer dari pengguna. 1824 01:12:14,110 --> 01:12:16,740 Tapi dalam hal urutan operasi di sini, karena 1825 01:12:16,740 --> 01:12:21,850 sementara kondisinya di sini, saya kemudian akan memeriksa, adalah n 1826 01:12:21,850 --> 01:12:23,100 kurang dari 1? 1827 01:12:23,100 --> 01:12:24,600 Jadi misalkan bahwa pengguna - 1828 01:12:24,600 --> 01:12:26,450 setelah dituntut dengan cara ini - 1829 01:12:26,450 --> 01:12:29,190 jenis dalam nilai 0. 1830 01:12:29,190 --> 01:12:34,510 Kondisi ini akan menjadi benar atau salah? 1831 01:12:34,510 --> 01:12:35,820 Yah, itu benar-benar akan menjadi kenyataan. 1832 01:12:35,820 --> 01:12:38,700 Karena n adalah 0, dan 0 adalah kurang dari 1. 1833 01:12:38,700 --> 01:12:40,140 Jadi, apa itu berarti? 1834 01:12:40,140 --> 01:12:41,160 Lakukan lagi. 1835 01:12:41,160 --> 01:12:41,990 Lakukan lagi. 1836 01:12:41,990 --> 01:12:42,640 Lakukan lagi. 1837 01:12:42,640 --> 01:12:46,080 Hanya sekali kondisi yang mengevaluasi ke false. 1838 01:12:46,080 --> 01:12:47,510 Jika saya ketik di 42. 1839 01:12:47,510 --> 01:12:49,690 Yah tidak, 42 ​​tidak kurang dari 1. 1840 01:12:49,690 --> 01:12:52,320 Oleh karena itu loop ini dilakukan mengeksekusi. 1841 01:12:52,320 --> 01:12:54,650 Dan sehingga pada saat itu, program ini akan mengatakan, terima kasih untuk 1842 01:12:54,650 --> 01:12:57,530 42, dalam kasus ini. 1843 01:12:57,530 --> 01:13:00,320 Sekarang bahwa Anda memiliki cara untuk mengekspresikan diri - 1844 01:13:00,320 --> 01:13:02,360 Kita tidak harus menunggu untuk ini untuk menyelesaikan. 1845 01:13:02,360 --> 01:13:03,620 Ini akan memakan waktu. 1846 01:13:03,620 --> 01:13:04,990 Untuk dilanjutkan lain kali, mungkin. 1847 01:13:04,990 --> 01:13:08,050 >> Tapi sekarang, Anda memiliki kemampuan untuk mudah-mudahan untuk memahami 1848 01:13:08,050 --> 01:13:09,060 sedikit humor geek. 1849 01:13:09,060 --> 01:13:11,560 Permintaan maaf. 1850 01:13:11,560 --> 01:13:13,620 Ini tidak mewakili humor dalam ilmu komputer 1851 01:13:13,620 --> 01:13:14,870 dunia, tapi itu lucu. 1852 01:13:21,020 --> 01:13:23,890 [LAUGHS] Mari kita berakhir pada catatan itu. 1853 01:13:23,890 --> 01:13:25,750 Dan kita akan melihat Anda pada hari Senin. 1854 01:13:25,750 --> 01:13:31,629 [Tepuk Tangan]