1 00:00:07,830 --> 00:00:12,200 [Powered by Google Translate] DAVID Malan: Ini adalah CS50, dan ini adalah awal dari Minggu 1. 2 00:00:12,200 --> 00:00:15,520 Apa yang kami pikir kami akan lakukan hari ini adalah melihat kembali pada 3 00:00:15,520 --> 00:00:18,290 sesuatu yang banyak dari Anda mungkin berjalan melewati beberapa 4 00:00:18,290 --> 00:00:20,570 waktu sekarang dan mungkin terlihat sedikit akrab. 5 00:00:20,570 --> 00:00:23,720 Ini hal di sini, ini tentu saja adalah di - 6 00:00:23,720 --> 00:00:24,155 HADIRIN: Sains. 7 00:00:24,155 --> 00:00:26,030 DAVID Malan: Science center. 8 00:00:26,030 --> 00:00:28,940 Jadi ini sebenarnya adalah salah satu komputer awal 9 00:00:28,940 --> 00:00:30,220 kembali dari tahun 1940-an. 10 00:00:30,220 --> 00:00:33,790 Itu adalah salah satu komputer elektromekanis pertama 11 00:00:33,790 --> 00:00:35,730 yang mampu sangat panjang, 12 00:00:35,730 --> 00:00:38,450 mandiri perhitungan, dan apa yang sebenarnya kita lihat di 13 00:00:38,450 --> 00:00:41,580 pusat ilmu hanya sepotong kecil dari hal ini. 14 00:00:41,580 --> 00:00:44,170 Apa yang kami pikir kami akan lakukan adalah melihat kembali video 15 00:00:44,170 --> 00:00:46,670 yang dibuat beberapa waktu lalu, memperkenalkan ini 16 00:00:46,670 --> 00:00:47,520 hal kepada dunia. 17 00:00:47,520 --> 00:00:50,200 Dan Anda akan melihat dari musik dan suara yang memang mereka 18 00:00:50,200 --> 00:00:52,070 saat-saat yang sangat bahagia. 19 00:00:54,885 --> 00:00:59,700 >> [PEMUTARAN VIDEO] 20 00:00:59,700 --> 00:01:02,490 -Sebuah kemenangan keterampilan matematika dan mekanik ini 21 00:01:02,490 --> 00:01:06,340 besar kalkulator otomatis baru di Harvard University. 22 00:01:06,340 --> 00:01:08,620 Masalah rumit dalam matematika, dimasukkan melalui 23 00:01:08,620 --> 00:01:12,420 mesin dalam bentuk kode pada tape, secara akurat diselesaikan dalam 24 00:01:12,420 --> 00:01:15,200 fraksi menit dari waktu yang diperlukan bagi manusia 25 00:01:15,200 --> 00:01:16,450 perhitungan. 26 00:01:27,050 --> 00:01:30,600 Dirancang untuk mempercepat segala bentuk matematika dan ilmiah 27 00:01:30,600 --> 00:01:34,610 penelitian, otak mekanik raksasa akan bekerja untuk Amerika 28 00:01:34,610 --> 00:01:36,570 Serikat Navy sampai akhir perang. 29 00:01:50,280 --> 00:01:52,980 >> DAVID Malan: Jadi apa yang Anda mungkin tidak tahu adalah bahwa itu di 30 00:01:52,980 --> 00:01:56,310 ini perangkat yang sama bahwa istilah kita semua sekarang mengambil cukup banyak 31 00:01:56,310 --> 00:01:59,300 untuk diberikan diciptakan, bahwa dari bug. 32 00:01:59,300 --> 00:02:01,140 Jadi salah satu insinyur yang bekerja di komputer ini 33 00:02:01,140 --> 00:02:05,280 harfiah menemukan ngengat kecil di mesin yang mengakibatkan 34 00:02:05,280 --> 00:02:07,580 dalam beberapa perhitungan yang salah. 35 00:02:07,580 --> 00:02:10,410 Dan sebagai ceritanya ngengat yang ditempelkan ke log ini 36 00:02:10,410 --> 00:02:14,180 jurnal sini, kembali sejak tanggal 9 September tahun 1940-sesuatu, 37 00:02:14,180 --> 00:02:16,550 dan dengan demikian lahir bagi dunia yang "bug" panjang. 38 00:02:16,550 --> 00:02:19,880 Jadi selanjutnya kita mempertimbangkan bug akan ada semacam kesalahan dalam 39 00:02:19,880 --> 00:02:23,290 program, apakah buatan manusia atau, dalam hal ini, serangga. 40 00:02:23,290 --> 00:02:25,030 >> Jadi beberapa pengumuman, seperti yang kita lanjutkan. 41 00:02:25,030 --> 00:02:29,160 Jadi CS50 memiliki tradisi menawarkan makan siang macam pada 42 00:02:29,160 --> 00:02:31,600 sebagian Jumat selama semester, di mana kita mengambil 30 sampai 43 00:02:31,600 --> 00:02:34,650 40 siswa untuk Fire and Ice di alun-alun untuk santai 44 00:02:34,650 --> 00:02:36,390 basa-basi, berbicara tentang ilmu komputer, 45 00:02:36,390 --> 00:02:37,420 bicara tentang masa depan. 46 00:02:37,420 --> 00:02:40,000 Kami mengundang alumni dan teman-teman dari industri untuk chatting up 47 00:02:40,000 --> 00:02:40,690 siswa juga. 48 00:02:40,690 --> 00:02:44,020 Benar-benar menuju akhir membuat apa kelas cukup besar 49 00:02:44,020 --> 00:02:46,740 semua lebih intim, setidaknya sekali dalam sementara untuk 50 00:02:46,740 --> 00:02:47,710 subset dari siswa. 51 00:02:47,710 --> 00:02:50,940 Jadi jika Anda ingin bergabung dengan kami hari Jumat ini, PM 1:15, pergi ke 52 00:02:50,940 --> 00:02:53,340 CS50.net/lunch untuk RSVP. 53 00:02:53,340 --> 00:02:55,840 Dan kita akan melakukan ini recurringly, jadi tidak perlu khawatir jika Anda tidak 54 00:02:55,840 --> 00:02:57,930 antara 30 pertama atau minggu ini. 55 00:02:57,930 --> 00:02:59,070 >> Jadi catatan juru tulis. 56 00:02:59,070 --> 00:03:01,500 Sebuah kata pada sumber daya yang sekarang akan mulai menjadi tersedia 57 00:03:01,500 --> 00:03:03,040 kepada siswa di kelas. 58 00:03:03,040 --> 00:03:05,540 Sehingga kepala Anda tidak perlu turun selama kuliah 59 00:03:05,540 --> 00:03:08,560 menulis ke semua yang saya katakan dan sebagainya, apa yang kita lakukan 60 00:03:08,560 --> 00:03:10,765 malah menyediakan dari staf pengajar yang 61 00:03:10,765 --> 00:03:11,920 kanonik set catatan. 62 00:03:11,920 --> 00:03:14,850 Jadi kita memiliki salah satu dari rekan-rekan mengajar kami, Andrew Sellergren, 63 00:03:14,850 --> 00:03:17,830 yang duduk setiap minggu, ulasan video, dan kemudian 64 00:03:17,830 --> 00:03:19,730 menuliskan apa yang kita pikirkan adalah cukup 65 00:03:19,730 --> 00:03:21,840 otoritatif set catatan. 66 00:03:21,840 --> 00:03:24,180 Dan Andrew sayang, juga, menempatkan catatan kaki di snarky 67 00:03:24,180 --> 00:03:24,820 bagian bawah. 68 00:03:24,820 --> 00:03:27,300 Jadi mudah-mudahan Anda akan menikmati ini sebagai buku referensi untuk 69 00:03:27,300 --> 00:03:30,230 menyenangkan, dan juga, datang kuis waktu, sebagai kesempatan untuk meninjau 70 00:03:30,230 --> 00:03:31,830 apa yang terjadi di kuliah individu. 71 00:03:31,830 --> 00:03:33,580 Jadi mereka dihubungkan pada halaman kuliah. 72 00:03:33,580 --> 00:03:35,300 >> Soal set 0, sementara itu, keluar. 73 00:03:35,300 --> 00:03:37,470 Dan dalam hal sumber daya yang tersedia untuk Anda - 74 00:03:37,470 --> 00:03:38,020 walkthrough. 75 00:03:38,020 --> 00:03:39,730 Milo memimpin pertama pada hari Jumat. 76 00:03:39,730 --> 00:03:41,470 Itu difilmkan, dimasukkan online pada hari Sabtu. 77 00:03:41,470 --> 00:03:44,030 Dan begitu menyadari, jika Anda tidak benar-benar yakin di mana untuk memulai, 78 00:03:44,030 --> 00:03:47,280 untuk ini atau masa depan p-set, selalu giliran pertama untuk 79 00:03:47,280 --> 00:03:49,300 walkthrough atau daripadanya video. 80 00:03:49,300 --> 00:03:52,950 Sectioning sedang berlangsung, di cs50.net/section adalah di mana Anda 81 00:03:52,950 --> 00:03:54,540 harus mengirimkan preferensi Anda, jika Anda belum 82 00:03:54,540 --> 00:03:55,880 sudah, dengan hari ini. 83 00:03:55,880 --> 00:03:58,140 Karena bagian ini akan dimulai Minggu mendatang, Senin, 84 00:03:58,140 --> 00:03:58,760 dan Selasa. 85 00:03:58,760 --> 00:04:02,470 Kami melakukan bagian tiga hari, setiap minggu dari 86 00:04:02,470 --> 00:04:03,870 semester untuk sebagian besar. 87 00:04:03,870 --> 00:04:06,600 Dan kami juga memperkenalkan, sekali lagi, trek yang berbeda. 88 00:04:06,600 --> 00:04:08,270 Jadi, Anda akan diminta pada formulir sectioning, jika Anda 89 00:04:08,270 --> 00:04:10,350 belum melihat sudah, jika Anda berada di antara mereka yang kurang 90 00:04:10,350 --> 00:04:12,800 nyaman, lebih nyaman, atau di suatu tempat di antara. 91 00:04:12,800 --> 00:04:14,960 Dan jika Anda semacam di pagar, umumnya di suatu tempat di 92 00:04:14,960 --> 00:04:18,160 antara yang sebagian besar siswa akhirnya memeriksa. 93 00:04:18,160 --> 00:04:19,579 Jam kantor dimulai malam ini. 94 00:04:19,579 --> 00:04:23,020 >> Jadi Scratch adalah kunci cukup rendah, meskipun itu cukup alami 95 00:04:23,020 --> 00:04:25,300 untuk menjalankan ke berbagai bug, atau menjadi tidak yakin bagaimana untuk 96 00:04:25,300 --> 00:04:26,550 melaksanakan sesuatu. 97 00:04:26,550 --> 00:04:28,880 Jadi menyadari bahwa kita akan mulai jam kerja minggu ini. 98 00:04:28,880 --> 00:04:30,500 Mereka akan berada di Annenberg Senin, Selasa, Rabu, 99 00:04:30,500 --> 00:04:34,300 Kamis, 20:00-11:00 selama istirahat otak. 100 00:04:34,300 --> 00:04:38,160 Classmen atas dapat masuk, dan jika Anda pernah mengalami kesulitan mendapatkan 101 00:04:38,160 --> 00:04:40,720 di pintu, karena mereka akan menggesekkan, hanya bicara jalan 102 00:04:40,720 --> 00:04:42,560 dalam dan menjelaskan Anda dengan CS50. 103 00:04:42,560 --> 00:04:45,230 Biasanya 20 sampai 30 dari kita pada staf akan berada di sana untuk membantu 104 00:04:45,230 --> 00:04:46,190 Anda satu-satu. 105 00:04:46,190 --> 00:04:48,980 >> Setibanya ide adalah ini: Anda akan membawa laptop Anda, 106 00:04:48,980 --> 00:04:51,300 Anda akan memiliki charger Anda, kita akan memiliki kabel listrik tambahan, 107 00:04:51,300 --> 00:04:53,320 terutama di sepanjang dinding selatan dari Annenberg mana 108 00:04:53,320 --> 00:04:55,080 ada banyak outlet listrik. 109 00:04:55,080 --> 00:04:59,290 Dan titik masuk utama ke kantor jam Q & A adalah pergi ke 110 00:04:59,290 --> 00:05:01,690 cs50.net/discuss dan untuk mengirim 111 00:05:01,690 --> 00:05:02,580 pertanyaan Anda di sana. 112 00:05:02,580 --> 00:05:05,600 Dan untuk label dengan pset 0 atau 1 pset, apapun minggu 113 00:05:05,600 --> 00:05:06,810 mungkin akan terjadi. 114 00:05:06,810 --> 00:05:09,240 Dan kemudian apa yang akan kita lakukan adalah memiliki tabel fellows pengajaran 115 00:05:09,240 --> 00:05:12,040 dan tentu saja asisten, umumnya 8 atau 10 atau lebih dari kita, 116 00:05:12,040 --> 00:05:14,430 akan melalui, menjaga pengawasan yang ketat di papan tulis, dan 117 00:05:14,430 --> 00:05:16,810 memetik off pertanyaan benar-benar secepat kami bisa, 118 00:05:16,810 --> 00:05:19,600 Anda merujuk ke posting terkait jika Anda belum menemukan orang-orang 119 00:05:19,600 --> 00:05:22,220 dirimu, referensi online, yang sesuai. 120 00:05:22,220 --> 00:05:24,280 Dan kemudian jika ada masalah, karena ada pasti 121 00:05:24,280 --> 00:05:27,190 akan, atau hanya lebih masuk akal untuk duduk satu lawan satu, 122 00:05:27,190 --> 00:05:28,660 bekerja melalui masalah dengan seseorang. 123 00:05:28,660 --> 00:05:30,810 >> Atau Anda hanya datang ke kantor jam benar-benar 124 00:05:30,810 --> 00:05:31,640 membutuhkan pola pikir itu. 125 00:05:31,640 --> 00:05:33,400 Anda tidak ingin pergi melalui bentuk elektronik, Anda 126 00:05:33,400 --> 00:05:34,410 benar-benar ingin bertemu dengan seseorang. 127 00:05:34,410 --> 00:05:37,240 Berkomunikasi itu kepada kami, dan apa yang akan terjadi adalah ketika Anda 128 00:05:37,240 --> 00:05:40,620 Pertanyaan telah dilihat oleh anggota staf, dan kami 129 00:05:40,620 --> 00:05:43,660 menentukan, yup, ini harus dikirim ke salah satu dari 20 atau 130 00:05:43,660 --> 00:05:47,800 Anggota tim 30 di sini secara lokal, Anda akan melihat di bagian atas kiri ini 131 00:05:47,800 --> 00:05:51,590 Masukkan sedikit tombol Antrian mulai berkedip pada cs50.net / 132 00:05:51,590 --> 00:05:52,165 diskusikan. 133 00:05:52,165 --> 00:05:55,260 Dan ini memberitahu Anda bahwa Anda sekarang telah diundang, sehingga 134 00:05:55,260 --> 00:05:56,880 untuk berbicara, untuk masuk antrian. 135 00:05:56,880 --> 00:05:59,090 Dan dengan mengklik tombol itu, nama Anda akan muncul di 136 00:05:59,090 --> 00:06:02,660 iPad bahwa penyambut CS50, salah satu kepala kursus ini, akan 137 00:06:02,660 --> 00:06:05,250 akan memegang dekat pintu masuk Annenberg, yang kemudian akan 138 00:06:05,250 --> 00:06:08,630 lihat seperti yang digambarkan di sini, siswa yang memiliki pertanyaan tentang 139 00:06:08,630 --> 00:06:11,630 kiri, anggota staf yang hadir di sebelah kanan. 140 00:06:11,630 --> 00:06:14,830 Dan dengan klik kiri dan kanan, browser web Anda akan 141 00:06:14,830 --> 00:06:18,610 mulai berkedip secepat, misalnya, Profesor McGonnagal 142 00:06:18,610 --> 00:06:21,460 siap untuk melihat Anda di meja tertentu di Annenberg. 143 00:06:21,460 --> 00:06:23,340 >> Jadi kami melakukan beberapa tahun terakhir ini. 144 00:06:23,340 --> 00:06:25,430 Kami telah reboot jam kantor dan 145 00:06:25,430 --> 00:06:26,980 kembali dilaksanakan banyak perangkat lunak. 146 00:06:26,980 --> 00:06:29,940 Jadi menyadari bahwa ini akan menghangatkan minggu ini. 147 00:06:29,940 --> 00:06:32,970 Tetapi juga menyadari juga, dalam beberapa tahun terakhir, karena Anda mungkin telah mendengar 148 00:06:32,970 --> 00:06:35,710 dari teman, jam kantor harus memang untuk 50 149 00:06:35,710 --> 00:06:37,040 150 siswa sekaligus. 150 00:06:37,040 --> 00:06:39,300 Dan itu sama sekali tidak mungkin bagi kita untuk mengatasinya 151 00:06:39,300 --> 00:06:42,060 efektif, satu lawan satu, sepanjang malam. 152 00:06:42,060 --> 00:06:44,570 Dan jadi apa yang kita benar-benar akan mencoba untuk melakukannya tahun ini 153 00:06:44,570 --> 00:06:46,590 memanfaatkan fakta bahwa banyak pertanyaan yang 154 00:06:46,590 --> 00:06:49,050 sering diajukan dan sering dapat lebih baik dijawab 155 00:06:49,050 --> 00:06:50,030 asynchronously. 156 00:06:50,030 --> 00:06:52,140 Jadi Anda dapat semacam memikirkan respon staf, 157 00:06:52,140 --> 00:06:54,360 dan kita bisa berpikir melalui kode Anda, tanpa dipanaskan 158 00:06:54,360 --> 00:06:57,050 tekanan harus berjuang 159 00:06:57,050 --> 00:06:58,210 melalui itu berdampingan. 160 00:06:58,210 --> 00:07:00,980 Jadi kami memperkirakan bahwa sekitar sepertiga atau setengah dari pertanyaan 161 00:07:00,980 --> 00:07:03,500 akan dikirim secara langsung, dan kami akan mencoba memetik off 162 00:07:03,500 --> 00:07:05,530 sebanyak setengah atau lebih secara elektronik, 163 00:07:05,530 --> 00:07:06,710 selama jam kerja. 164 00:07:06,710 --> 00:07:08,070 Dan kita akan terus menggunakan Diskusikan 165 00:07:08,070 --> 00:07:09,990 sepanjang minggu juga. 166 00:07:09,990 --> 00:07:12,680 >> Dan terakhir, menyadari bahwa kursus ini bisa diambil lulus / gagal. 167 00:07:12,680 --> 00:07:16,230 Jadi jika Anda berada di pagar atau hanya berpikir bahwa Anda benar-benar 168 00:07:16,230 --> 00:07:18,650 tidak yakin apakah ini adalah dunia untuk Anda, atau ini benar-benar 169 00:07:18,650 --> 00:07:21,310 cukup asing bagi Anda, menyadari bahwa ini adalah cara yang indah 170 00:07:21,310 --> 00:07:24,840 untuk mendapatkan beberapa kepercayaan diri yang dapat digunakan untuk masuk ke 171 00:07:24,840 --> 00:07:26,780 kelas, seperti yang kulakukan terus terang, tahun lalu. 172 00:07:26,780 --> 00:07:28,630 Dan kemudian memiliki lima minggu untuk semacam angka keluar untuk 173 00:07:28,630 --> 00:07:30,850 sendiri jika Anda ingin tinggal lulus / gagal, beralih ke surat 174 00:07:30,850 --> 00:07:31,800 kelas, atau sejenisnya. 175 00:07:31,800 --> 00:07:34,050 Dan biasanya apa yang lulus / gagal tidak, saya pikir, bagi siswa adalah 176 00:07:34,050 --> 00:07:36,700 bahwa, jika Anda masukkan ke dalam bahwa 10 jam, 20 jam, apa pun 177 00:07:36,700 --> 00:07:38,830 mungkin pada beberapa masalah, dan Anda membenturkan kepala Anda 178 00:07:38,830 --> 00:07:39,690 dinding, 179 00:07:39,690 --> 00:07:41,750 dan Anda benar-benar tidak bisa mengejar sesuatu, dan Anda 180 00:07:41,750 --> 00:07:44,230 memiliki begitu banyak hal lain yang perlu Anda lakukan, jujur, apa yang saya 181 00:07:44,230 --> 00:07:46,070 berpikir lulus / gagal adalah, dibutuhkan tepi off 182 00:07:46,070 --> 00:07:47,250 situasi seperti itu. 183 00:07:47,250 --> 00:07:49,350 Di mana Anda telah mengambil hal 90% dari jalan. 184 00:07:49,350 --> 00:07:50,830 Kau tahu, itu tidak cukup sempurna. 185 00:07:50,830 --> 00:07:52,950 Tapi Anda mendapat banyak dari itu, tetap. 186 00:07:52,950 --> 00:07:55,440 Jadi pertimbangkan lulus / gagal sebagai memberikan Anda bahwa 187 00:07:55,440 --> 00:07:57,590 Model jiwa, mungkin. 188 00:07:57,590 --> 00:08:00,680 >> Sepanjang minggu, kanan sehingga lalu kami terjun ke Scratch, dan kami 189 00:08:00,680 --> 00:08:03,610 berbicara tentang pemrograman pada tingkat grafis yang cukup tinggi. 190 00:08:03,610 --> 00:08:05,340 Dan hari ini kita membuat transisi ke bahasa 191 00:08:05,340 --> 00:08:08,300 disebut C, tingkat yang lebih rendah bahasa pemrograman di atas 192 00:08:08,300 --> 00:08:11,260 yang bahasa modern sekarang banyak dibangun, termasuk beberapa 193 00:08:11,260 --> 00:08:13,010 dari orang-orang yang akan kita gunakan menjelang akhir masa itu. 194 00:08:13,010 --> 00:08:15,530 Dan sintaksis, apa yang mereka terlihat seperti 195 00:08:15,530 --> 00:08:17,330 adalah semua sangat mirip. 196 00:08:17,330 --> 00:08:19,080 Jadi mari kita mulai untuk membuat transisi ini di sini. 197 00:08:19,080 --> 00:08:21,730 Jadi ini adalah program minggu lalu yang paling sederhana 198 00:08:21,730 --> 00:08:22,910 halo program dunia. 199 00:08:22,910 --> 00:08:25,560 Ini hanya dicetak ke dunia layar halo, dengan 200 00:08:25,560 --> 00:08:27,650 gelembung pidato sedikit keluar dari kucing. 201 00:08:27,650 --> 00:08:30,590 Nah, jika kita mulai sekarang untuk menerjemahkan ini ke yang lain 202 00:08:30,590 --> 00:08:33,419 bahasa, menyadari bahwa ide-ide hari ini dan pada Rabu 203 00:08:33,419 --> 00:08:36,450 adalah identik, tetapi sintaks mulai berubah. 204 00:08:36,450 --> 00:08:39,370 Jadi sementara pekan lalu kita punya, saat bendera hijau diklik, katakanlah 205 00:08:39,370 --> 00:08:40,340 halo dunia. 206 00:08:40,340 --> 00:08:43,870 Hari ini kita akan memiliki int, utama, batal, printf, 207 00:08:43,870 --> 00:08:46,350 kembali, dengan beberapa sintaks lainnya di sana juga. 208 00:08:46,350 --> 00:08:49,200 Curly kawat gigi, dan tanda kurung, dan tanda kutip, dan yang lainnya. 209 00:08:49,200 --> 00:08:54,520 Tapi menyadari bahwa inti dari ide di sini adalah pencetakan, 210 00:08:54,520 --> 00:08:58,470 dan akhirnya kenyataan bahwa utama sekarang akan 211 00:08:58,470 --> 00:09:00,770 identik dengan awal program. 212 00:09:00,770 --> 00:09:04,250 Main akan menjadi mana bendera hijau kicks hal off. 213 00:09:04,250 --> 00:09:06,390 >> Jadi sekarang mari kita menggoda selain beberapa blok bangunan di sini 214 00:09:06,390 --> 00:09:08,650 sebelum kita menyelam ke beberapa contoh konkret. 215 00:09:08,650 --> 00:09:11,620 Jadi kita disebut minggu ini pernyataan terakhir, dimana itu hanya 216 00:09:11,620 --> 00:09:12,470 sebuah instruksi. 217 00:09:12,470 --> 00:09:15,660 Lakukan ini - dalam kasus ini, mengatakan bahwa dunia halo. 218 00:09:15,660 --> 00:09:18,400 Nah di C, jika kita melihat hanya baris tersebut, ini adalah bagaimana kita 219 00:09:18,400 --> 00:09:20,920 akan mulai menyatakan bahwa potongan puzzle tertentu: 220 00:09:20,920 --> 00:09:24,780 printf ("hello world");. 221 00:09:24,780 --> 00:09:27,330 Dan sekarang kita akan menggoda ini selain lebih dan lebih dari waktu ke waktu, 222 00:09:27,330 --> 00:09:29,330 tapi menyadari bahwa ada pola di sini. 223 00:09:29,330 --> 00:09:31,870 Jadi satu, kita memiliki hal ini disebut printf, yang 224 00:09:31,870 --> 00:09:34,310 dasarnya analog dengan kata Say. 225 00:09:34,310 --> 00:09:35,800 Itulah apa yang akan dilakukannya. 226 00:09:35,800 --> 00:09:37,870 Printf, dan f di sini berarti "diformat". 227 00:09:37,870 --> 00:09:39,270 Jadi itu hanya berarti Anda dapat menyisipkan 228 00:09:39,270 --> 00:09:41,600 rincian estetika berbagai. 229 00:09:41,600 --> 00:09:43,770 Jadi tanda kutip kutipan adalah awal dari apa yang akan kita 230 00:09:43,770 --> 00:09:45,340 untuk mulai memanggil string. 231 00:09:45,340 --> 00:09:47,110 Sebuah kata, frasa, kalimat. 232 00:09:47,110 --> 00:09:50,220 Sebuah string dalam bahasa pemrograman adalah urutan nol 233 00:09:50,220 --> 00:09:51,330 atau lebih karakter. 234 00:09:51,330 --> 00:09:54,390 Jadi h-e-l-l-o, koma, dan sebagainya adalah, 235 00:09:54,390 --> 00:09:56,290 kutipan tanda kutip, string. 236 00:09:56,290 --> 00:09:58,710 Dan sekarang backslash n, sintaksis agak aneh, tapi kami 237 00:09:58,710 --> 00:10:01,780 sudah didefinisikan bahwa pekan lalu sebagai makna apa? 238 00:10:01,780 --> 00:10:02,630 Ini hanya baris baru. 239 00:10:02,630 --> 00:10:05,000 Ini hanya cara menyampaikan ke komputer Anda ingin 240 00:10:05,000 --> 00:10:07,700 setara dengan memukul Masukkan sana, tetapi Anda tidak 241 00:10:07,700 --> 00:10:10,460 ingin benar-benar tekan Enter dan karena itu mengacaukan semua 242 00:10:10,460 --> 00:10:12,130 format dari program Anda yang sebenarnya. 243 00:10:12,130 --> 00:10:15,500 Sekarang kurung melampirkan string ini, terbuka paren dan 244 00:10:15,500 --> 00:10:18,130 paren dekat, dan dalam itu adalah string kita. 245 00:10:18,130 --> 00:10:22,600 Karena itulah karena di C, dan pemrograman lainnya 246 00:10:22,600 --> 00:10:27,510 bahasa, hal-hal seperti printf mengambil argumen, atau mengambil 247 00:10:27,510 --> 00:10:28,420 parameter. 248 00:10:28,420 --> 00:10:31,490 >> Jadi mulailah berpikir sekarang ini blok Say ungu sebagai 249 00:10:31,490 --> 00:10:34,890 fungsi, sebagai metode, sebagai prosedur. 250 00:10:34,890 --> 00:10:36,890 Anda benar-benar dapat menyebutnya apa pun yang Anda inginkan untuk saat ini, namun 251 00:10:36,890 --> 00:10:39,260 itu semacam program miniatur yang hanya melakukan satu 252 00:10:39,260 --> 00:10:41,480 hal, dalam satu baris, tidak kurang. 253 00:10:41,480 --> 00:10:43,620 Jadi printf juga apa yang kita akan mulai memanggil 254 00:10:43,620 --> 00:10:46,680 fungsi, dan fungsi melakukan sesuatu - dalam hal ini 255 00:10:46,680 --> 00:10:49,320 mencetak string diformat ke layar - 256 00:10:49,320 --> 00:10:53,220 tapi fungsi juga mengambil argumen atau parameter. 257 00:10:53,220 --> 00:10:55,880 Dan dengan argumen atau parameter, terima kasih, kami maksud 258 00:10:55,880 --> 00:11:01,220 bahwa perilaku mereka dapat dipengaruhi oleh apa yang Anda lulus dalam 259 00:11:01,220 --> 00:11:03,420 dalam tanda kurung. 260 00:11:03,420 --> 00:11:06,460 Jadi dalam hal ini, kebutuhan printf diberitahu apa yang harus dicetak, dan kami 261 00:11:06,460 --> 00:11:09,520 hanya lulus dalam, dalam tanda kutip ganda di sini, string yang kita 262 00:11:09,520 --> 00:11:11,270 sebenarnya ingin mencetak. 263 00:11:11,270 --> 00:11:14,060 Dan titik koma di akhir baris ini hanya 264 00:11:14,060 --> 00:11:18,020 gangguan sejarah dimana pada akhir baris paling kode, 265 00:11:18,020 --> 00:11:21,170 Anda menempatkan titik koma untuk membuat super jelas ke komputer 266 00:11:21,170 --> 00:11:23,020 bahwa baris kode berakhir di sini. 267 00:11:23,020 --> 00:11:25,600 Sekarang ini baik karena seperti yang kita akan lihat sebagai program mendapatkan lebih 268 00:11:25,600 --> 00:11:29,030 kompleks, titik koma akan membuat manusia jelas bagi kita super, 269 00:11:29,030 --> 00:11:32,280 dan juga komputer, di mana garis start kode dan akhir. 270 00:11:32,280 --> 00:11:34,360 Sadarilah bahwa beberapa bahasa tidak memiliki beberapa 271 00:11:34,360 --> 00:11:35,045 ini rincian yang sama. 272 00:11:35,045 --> 00:11:37,870 Dan pada kenyataannya, dalam JavaScript, Anda tidak selalu membutuhkan sesuatu 273 00:11:37,870 --> 00:11:38,670 seperti titik koma. 274 00:11:38,670 --> 00:11:40,210 Tetapi lebih pada untuk datang. 275 00:11:40,210 --> 00:11:41,170 >> Jadi loop. 276 00:11:41,170 --> 00:11:43,520 Kami memiliki sesuatu seperti ini, sangat intuitif, jelas, lakukan 277 00:11:43,520 --> 00:11:44,860 sesuatu lagi dan lagi dan lagi. 278 00:11:44,860 --> 00:11:47,720 Seperti mengenakan kaus kaki, atau menyapa, dalam kasus ini. 279 00:11:47,720 --> 00:11:51,090 Nah, mulai hari ini di C, kita bisa mengekspresikan Scratch ini 280 00:11:51,090 --> 00:11:54,970 blok sebagai sementara (benar) printf ("hello world"). 281 00:11:54,970 --> 00:11:57,630 Jadi perhatikan kita mulai membangun harfiah teka-teki 282 00:11:57,630 --> 00:11:58,480 sepotong dari sebelumnya. 283 00:11:58,480 --> 00:12:01,310 Kami memiliki blok yang sama ungu, tapi dalam hal ini 284 00:12:01,310 --> 00:12:04,880 tanda kurung Selamanya blok, dan cara terbaik untuk menerjemahkan 285 00:12:04,880 --> 00:12:06,480 ke C adalah sebagai berikut. 286 00:12:06,480 --> 00:12:08,130 Tidak ada kata kunci Selamanya. 287 00:12:08,130 --> 00:12:10,940 Anda tidak bisa hanya mengetik f-o-r-e-v-e-r di C. 288 00:12:10,940 --> 00:12:13,440 Jadi analog terdekat adalah sementara. 289 00:12:13,440 --> 00:12:17,050 >> Sekarang, sementara (benar) tampaknya sedikit bodoh karena tidak nilai 290 00:12:17,050 --> 00:12:18,700 perubahan pernah benar? 291 00:12:18,700 --> 00:12:19,810 Agaknya tidak. 292 00:12:19,810 --> 00:12:22,770 Ini seperti mengatakan sementara satu, sementara di, sementara benar. 293 00:12:22,770 --> 00:12:25,430 Ini semua hal yang sama, yang benar adalah selalu terjadi. 294 00:12:25,430 --> 00:12:29,860 Jadi loop ini sebenarnya merangsang jenis loop? 295 00:12:29,860 --> 00:12:31,210 Hanya loop tak terbatas, benar. 296 00:12:31,210 --> 00:12:32,930 Sebuah loop Selamanya atau seperti yang kita menyebutnya pekan lalu, 297 00:12:32,930 --> 00:12:33,870 hanya loop tak terbatas. 298 00:12:33,870 --> 00:12:35,250 Jadi kadang-kadang itu buruk. 299 00:12:35,250 --> 00:12:37,060 Kadang-kadang itu bug, kadang-kadang itu sebabnya Anda mendapatkan 300 00:12:37,060 --> 00:12:39,340 bola berputar pantai atau jam pasir atau sejenisnya. 301 00:12:39,340 --> 00:12:41,260 Tapi dalam kasus ini, kami sengaja, untuk apa pun 302 00:12:41,260 --> 00:12:43,040 Alasannya, ingin mencetak hal yang sama lagi 303 00:12:43,040 --> 00:12:43,970 dan lagi dan lagi. 304 00:12:43,970 --> 00:12:45,900 Atau dalam kasus seperti menonton, Anda ingin melakukan 305 00:12:45,900 --> 00:12:47,470 sesuatu lagi dan lagi dan lagi. 306 00:12:47,470 --> 00:12:49,070 Jadi loop tak terbatas mungkin masuk akal. 307 00:12:49,070 --> 00:12:53,560 Dan ini adalah bagaimana di C kita mungkin menerjemahkan Selamanya untuk kode. 308 00:12:53,560 --> 00:12:55,570 >> Jadi sekarang satu ini sedikit lebih spesifik. 309 00:12:55,570 --> 00:12:58,880 Kami telah ulangi 10 kali pernyataan berikut. 310 00:12:58,880 --> 00:13:02,490 Jadi sementara (benar) tidak cukup bekerja di sana, karena yang benar adalah 311 00:13:02,490 --> 00:13:03,590 selalu benar. 312 00:13:03,590 --> 00:13:07,060 Jadi jika kita malah melihat versi C, sekarang sintaks mendapat 313 00:13:07,060 --> 00:13:08,180 sedikit lebih samar. 314 00:13:08,180 --> 00:13:11,380 Tapi jujur ​​setelah Anda mulai melihat ini, semuanya akan 315 00:13:11,380 --> 00:13:12,600 cukup akrab dengan cepat. 316 00:13:12,600 --> 00:13:14,370 Jadi ini adalah apa yang disebut untuk loop. 317 00:13:14,370 --> 00:13:17,210 A untuk loop akan memberitahu komputer untuk melakukan sesuatu 318 00:13:17,210 --> 00:13:20,710 lagi dan lagi dan lagi selama 319 00:13:20,710 --> 00:13:21,850 hal ini benar. 320 00:13:21,850 --> 00:13:23,370 Sekarang apa yang kita maksud dengan itu? 321 00:13:23,370 --> 00:13:25,470 Nah, ada tiga bagian untuk loop, dan kita akan 322 00:13:25,470 --> 00:13:28,240 kembali ke ini dalam konteks yang sebenarnya 323 00:13:28,240 --> 00:13:29,100 contoh dalam sekejap. 324 00:13:29,100 --> 00:13:31,650 Jadi jangan khawatir jika tidak cukup tenggelam dalam sekaligus. 325 00:13:31,650 --> 00:13:35,400 Tapi int i = 0 adalah, singkat cerita, mengatakan beri saya 326 00:13:35,400 --> 00:13:38,290 variabel yang bertipe integer, jadi beri aku nomor 327 00:13:38,290 --> 00:13:40,890 disebut i, dan menginisialisasi ke 0. 328 00:13:40,890 --> 00:13:43,460 Itu memberi saya seperti variabel x dan aljabar 329 00:13:43,460 --> 00:13:44,580 menginisialisasi ke 0. 330 00:13:44,580 --> 00:13:46,250 Tapi dalam kasus ini kita menyebutnya i. 331 00:13:46,250 --> 00:13:49,120 Kemudian di tengah, ia mengatakan i adalah kurang dari 10. 332 00:13:49,120 --> 00:13:52,150 Itu memberitahu komputer melakukan hal-hal berikut ini begitu lama 333 00:13:52,150 --> 00:13:53,770 sebagai i adalah kurang dari 10. 334 00:13:53,770 --> 00:13:55,370 Dan jelas itu dimulai kurang dari 10 karena 335 00:13:55,370 --> 00:13:56,550 dimulai pada 0. 336 00:13:56,550 --> 00:13:59,150 Kemudian yang terakhir, Anda mungkin bisa menebak apa yang saya + + berarti. 337 00:13:59,150 --> 00:14:02,140 Ini sedikit sintaks yang hanya berarti kenaikan i. 338 00:14:02,140 --> 00:14:05,270 Jadi tambahkan 1 untuk saya, lagi dan lagi dan lagi. 339 00:14:05,270 --> 00:14:09,260 >> Dan sehingga kita akan melihat lingkaran ini, sintaks ini, bukan, mengimplementasikan 340 00:14:09,260 --> 00:14:12,160 justru hal yang sama yang, terus terang, di Scratch hanya begitu 341 00:14:12,160 --> 00:14:13,250 jauh lebih mudah untuk mengekspresikan. 342 00:14:13,250 --> 00:14:15,170 Ulangi 10, dan Anda sudah selesai. 343 00:14:15,170 --> 00:14:17,690 Dalam C, dan dalam kebanyakan bahasa pemrograman, kita harus menjadi 344 00:14:17,690 --> 00:14:20,190 sedikit lebih instruktif untuk komputer dan benar-benar 345 00:14:20,190 --> 00:14:21,630 menetapkan sesuatu seperti ini. 346 00:14:21,630 --> 00:14:23,730 Tapi kita akan kembali ke ini dan sintaks lainnya. 347 00:14:23,730 --> 00:14:24,780 >> Bagaimana dengan variabel? 348 00:14:24,780 --> 00:14:26,940 Dalam Scratch kami memiliki sesuatu seperti ini blok oranye, 349 00:14:26,940 --> 00:14:28,180 di mana saya bisa mendeklarasikan variabel. 350 00:14:28,180 --> 00:14:30,000 Mari kita sewenang-wenang menyebutnya kontra. 351 00:14:30,000 --> 00:14:31,880 Mari kita menginisialisasi ke 0, dan kemudian 352 00:14:31,880 --> 00:14:33,240 mari kita selamanya melakukan sesuatu. 353 00:14:33,240 --> 00:14:35,760 Dalam kasus ini dalam Scratch saya katakan meja, sehingga 354 00:14:35,760 --> 00:14:38,230 kucing akan memiliki gelembung pidato kecil yang berbicara 355 00:14:38,230 --> 00:14:40,010 jumlah yang ada di variabel ini. 356 00:14:40,010 --> 00:14:42,460 Dan kemudian kita memiliki counter perubahan dengan 1. 357 00:14:42,460 --> 00:14:45,760 Jadi semua ini dibungkus dalam sebuah kunci Selamanya. 358 00:14:45,760 --> 00:14:48,960 Jadi kita sudah sekarang memiliki blok bangunan di C dengan 359 00:14:48,960 --> 00:14:50,040 yang untuk menerjemahkan ini. 360 00:14:50,040 --> 00:14:51,650 >> Salah satu cara yang bisa kami lakukan yang ini. 361 00:14:51,650 --> 00:14:53,890 Beri aku integer, menyebutnya kontra. 362 00:14:53,890 --> 00:14:55,190 Menginisialisasi ke 0 363 00:14:55,190 --> 00:14:56,490 di baris pertama di sana. 364 00:14:56,490 --> 00:14:59,390 Sementara (benar), jadi aku mencuri gagasan bahwa dari hanya sesaat 365 00:14:59,390 --> 00:15:01,300 lalu, pergi ke depan dan lakukan hal berikut. 366 00:15:01,300 --> 00:15:04,880 Mencetak meja, dan kemudian kenaikan konter, 367 00:15:04,880 --> 00:15:06,930 lagi, dan lagi, dan lagi. 368 00:15:06,930 --> 00:15:09,380 Atau lagi, + + hanya berarti tambahkan 1 untuk sesuatu. 369 00:15:09,380 --> 00:15:11,030 Tapi ada sepotong baru sintaks sini. 370 00:15:11,030 --> 00:15:15,730 Apa yang melompat keluar sebagai bukan termasuk contoh kami sebelumnya? 371 00:15:15,730 --> 00:15:17,190 Ya, ini d%. 372 00:15:17,190 --> 00:15:19,810 Jadi Anda mungkin bisa menyimpulkan apa ini lakukan, terus terang, berdasarkan 373 00:15:19,810 --> 00:15:21,410 pada apa blok Scratch lakukan. 374 00:15:21,410 --> 00:15:24,510 Tapi sekali lagi di C, kita hanya harus sedikit lebih khusus 375 00:15:24,510 --> 00:15:25,990 ketika datang untuk mengekspresikan diri kita sendiri. 376 00:15:25,990 --> 00:15:30,560 >> Jadi printf ("% d \ n"). 377 00:15:30,560 --> 00:15:32,320 Nah sebagian besar yang kita dapat membuang begitu akrab. 378 00:15:32,320 --> 00:15:34,910 Kutipan hanya berarti itu string, backslash n 379 00:15:34,910 --> 00:15:35,970 hanya baris baru. 380 00:15:35,970 --> 00:15:38,860 Jadi hal yang baru hanya di sini adalah% d. 381 00:15:38,860 --> 00:15:40,390 Dan semua yang merupakan placeholder. 382 00:15:40,390 --> 00:15:43,510 D% akan menunjukkan angka desimal. 383 00:15:43,510 --> 00:15:47,820 Dan% komputer berarti d, menempatkan angka desimal di sini. 384 00:15:47,820 --> 00:15:49,450 Nah, apa nomor yang Anda ingin diletakkan di sana? 385 00:15:49,450 --> 00:15:52,400 Nah, karena Anda mungkin dapat menyimpulkan, setelah koma kita katakan 386 00:15:52,400 --> 00:15:55,480 counter, itulah nama variabel yang kita dinyatakan atau 387 00:15:55,480 --> 00:15:57,260 menciptakan beberapa baris sebelumnya. 388 00:15:57,260 --> 00:16:02,420 Jadi ini hanya cara C dari memasukkan variabel ke dalam 389 00:16:02,420 --> 00:16:04,480 string yang dinamis. 390 00:16:04,480 --> 00:16:07,350 Karena sebaliknya, jika saya bukan melakukan sesuatu seperti 391 00:16:07,350 --> 00:16:12,470 ini, printf ("counter"), apa yang akan ini 392 00:16:12,470 --> 00:16:15,220 program bukan lakukan, mungkin? 393 00:16:15,220 --> 00:16:17,260 Secara harfiah akan mencetak "kontra". 394 00:16:17,260 --> 00:16:18,750 Yang bukan efek yang saya inginkan. 395 00:16:18,750 --> 00:16:20,920 Saya harus mengganti di beberapa nilai numerik. 396 00:16:20,920 --> 00:16:24,340 Jadi kita akan melihat bahwa fungsi kemudian, seperti printf, tidak dapat mengambil 397 00:16:24,340 --> 00:16:26,930 hanya satu argumen, seperti 398 00:16:26,930 --> 00:16:28,150 "Halo dunia". 399 00:16:28,150 --> 00:16:32,050 Mereka dapat mengambil koma kutipan tanda kutip, dan kemudian beberapa variabel 400 00:16:32,050 --> 00:16:35,830 yang akan mendapatkan terhubung ke, karena kami akan melihat string sebelumnya 401 00:16:35,830 --> 00:16:38,280 melalui penampung ini tanda%. 402 00:16:38,280 --> 00:16:39,660 >> Nah bagaimana ekspresi Boolean? 403 00:16:39,660 --> 00:16:42,200 Ekspresi Boolean adalah nilai-nilai, benar atau salah. 404 00:16:42,200 --> 00:16:42,830 Ya atau tidak. 405 00:16:42,830 --> 00:16:44,020 1 atau 0. 406 00:16:44,020 --> 00:16:45,190 Hidup atau mati. 407 00:16:45,190 --> 00:16:47,570 Jadi dalam Scratch mereka terlihat seperti ini, dan perhatikan bahwa 408 00:16:47,570 --> 00:16:50,170 bawah blok sini sebenarnya kata sambung 409 00:16:50,170 --> 00:16:51,500 dari dua blok yang lebih kecil. 410 00:16:51,500 --> 00:16:53,610 Jadi aku agak menyeret dan menjatuhkan tiga potong puzzle 411 00:16:53,610 --> 00:16:56,450 bersama-sama untuk membuat potongan puzzle lagi ada sehingga saya 412 00:16:56,450 --> 00:17:00,420 bisa menyampaikan gagasan bahwa saya ingin menjadi x kurang dari y dan 413 00:17:00,420 --> 00:17:02,540 y menjadi kurang dari z. 414 00:17:02,540 --> 00:17:05,790 Dan jadi saya bisa menerjemahkan dua baris yang terpisah sebagai berikut. 415 00:17:05,790 --> 00:17:08,650 Yang paling atas bisa sangat sepele diterjemahkan ke C, 416 00:17:08,650 --> 00:17:10,069 hanya dengan x 00:17:11,990 Mungkin dengan beberapa tanda kurung untuk mengukur baik. 418 00:17:11,990 --> 00:17:15,520 Dan kemudian di C, Anda tidak menulis dan untuk menunjukkan 419 00:17:15,520 --> 00:17:16,819 gabungan dari sesuatu. 420 00:17:16,819 --> 00:17:19,585 Anda malah menulis &&. 421 00:17:19,585 --> 00:17:22,849 Dan seperti yang kita akhirnya akan melihat, sebuah ampersand tunggal terjadi pada 422 00:17:22,849 --> 00:17:23,880 berarti sesuatu yang berbeda. 423 00:17:23,880 --> 00:17:27,530 Jadi && hanya menunjukkan gagasan DAN. 424 00:17:27,530 --> 00:17:30,040 >> Jadi sekali lagi, meskipun ini mulai terlihat agak rumit, 425 00:17:30,040 --> 00:17:32,560 salah satu tujuan memperkenalkan Scratch, selain 426 00:17:32,560 --> 00:17:34,810 hanya memiliki semacam senang di-jalan di mana Anda dapat melakukan 427 00:17:34,810 --> 00:17:36,590 sesuatu yang sangat grafis, dan animasi, dan 428 00:17:36,590 --> 00:17:39,000 dapat dibagikan dan sejenisnya, juga untuk menyampaikan gagasan bahwa 429 00:17:39,000 --> 00:17:42,010 semua ide kita mulai menyelam ke hari ini dan seterusnya 430 00:17:42,010 --> 00:17:44,300 telah diwujudkan dalam bahkan yang sederhana 431 00:17:44,300 --> 00:17:46,850 antarmuka sejak hari pertama. 432 00:17:46,850 --> 00:17:47,790 Bagaimana dengan yang satu ini di sini? 433 00:17:47,790 --> 00:17:48,860 >> Jadi kondisi. 434 00:17:48,860 --> 00:17:50,590 Jadi blok Gores di sebelah kiri ada terlihat 435 00:17:50,590 --> 00:17:51,610 sedikit lebih kompleks. 436 00:17:51,610 --> 00:17:52,650 Tapi itu hanya beberapa menyeret dan 437 00:17:52,650 --> 00:17:54,140 menjatuhkan potongan familiar. 438 00:17:54,140 --> 00:17:56,690 Jika x kurang dari y, katakan demikian. 439 00:17:56,690 --> 00:17:59,900 Lain jika x lebih besar dari y, katakan demikian. 440 00:17:59,900 --> 00:18:02,460 Lain, kita secara logis dapat menganggap itu disimpulkan bahwa 441 00:18:02,460 --> 00:18:03,580 mereka harus sama. 442 00:18:03,580 --> 00:18:05,220 Jadi mengatakan bahwa mereka adalah sama. 443 00:18:05,220 --> 00:18:07,690 Sekarang di C pada hal, yang benar persis sama. 444 00:18:07,690 --> 00:18:09,730 Dan perhatikan bahwa kurung kurawal akan menjadi 445 00:18:09,730 --> 00:18:12,190 fitur C dan bahasa lain yang melakukan hal semacam ini 446 00:18:12,190 --> 00:18:13,210 enkapsulasi. 447 00:18:13,210 --> 00:18:15,470 Sama seperti jika blok ini hal kuning itu semacam 448 00:18:15,470 --> 00:18:17,770 meraih blok ungu di dalamnya. 449 00:18:17,770 --> 00:18:19,480 Demikian pula orang-kawat gigi - 450 00:18:19,480 --> 00:18:20,870 ini keriting kawat gigi - 451 00:18:20,870 --> 00:18:24,710 dimaksudkan untuk menyulap ide yang sama merangkul satu atau lebih 452 00:18:24,710 --> 00:18:27,680 baris kode yang menjorok dalam diri mereka. 453 00:18:27,680 --> 00:18:31,270 Jadi di sisi kanan-tangan di sini, jika x kurang dari y, printf 454 00:18:31,270 --> 00:18:32,270 ("X adalah kurang dari y"). 455 00:18:32,270 --> 00:18:34,980 Lain jika x lebih besar dari y, mencetak sama. 456 00:18:34,980 --> 00:18:38,360 Lain mencetak bahwa mereka adalah sama. 457 00:18:38,360 --> 00:18:41,750 >> Jadi singkatnya, ada pemetaan yang cukup langsung atau terjemahan 458 00:18:41,750 --> 00:18:44,720 bahasa kita lihat sejauh ini, termasuk untuk beberapa 459 00:18:44,720 --> 00:18:45,940 dari fitur yang lebih canggih. 460 00:18:45,940 --> 00:18:48,680 Jadi Anda tidak mungkin menggunakan ini untuk proyek Anda, atau mungkin tidak 461 00:18:48,680 --> 00:18:51,150 akan menggunakan ini untuk proyek Anda minggu ini. 462 00:18:51,150 --> 00:18:54,650 Tapi kita hal-hal yang disebut array di C. Dalam Scratch, 463 00:18:54,650 --> 00:18:55,680 mereka disebut daftar. 464 00:18:55,680 --> 00:18:59,370 Dan kita melihat ini dengan RPG Fruitcraft pekan lalu. 465 00:18:59,370 --> 00:19:01,320 Orang biru kecil yang sedang berjalan-jalan, mengambil 466 00:19:01,320 --> 00:19:03,010 ceri dan jeruk dan sejenisnya. 467 00:19:03,010 --> 00:19:05,110 Nah di Scratch, yang diimplementasikan dengan oranye 468 00:19:05,110 --> 00:19:09,000 blok yang berisi kata-kata, dalam hal ini, kita benar-benar 469 00:19:09,000 --> 00:19:10,800 menambahkan "oranye" ke 470 00:19:10,800 --> 00:19:12,460 variabel yang disebut persediaan. 471 00:19:12,460 --> 00:19:14,910 Jadi dalam C, sintaks ini akan mendapatkan sedikit lebih samar. 472 00:19:14,910 --> 00:19:17,250 Dan kita akan kembali ke ini minggu depan dan melakukan lebih 473 00:19:17,250 --> 00:19:21,060 hal menarik dalam dunia kriptografi dengan itu. 474 00:19:21,060 --> 00:19:23,990 Tapi di bagian bawah sini, dua baris pada dasarnya 475 00:19:23,990 --> 00:19:27,550 menerjemahkan apa yang kita lakukan dalam satu blok Scratch sana. 476 00:19:27,550 --> 00:19:30,120 Tetapi lebih pada untuk datang. 477 00:19:30,120 --> 00:19:34,120 >> Jadi menempatkan bersama-sama, di sini adalah sebuah program di C. Jadi mari kita 478 00:19:34,120 --> 00:19:36,590 cepat menggoda selain beberapa potongan sintaks di sini, tapi 479 00:19:36,590 --> 00:19:40,300 kemudian mari kita benar-benar mulai menulis beberapa kode, membiasakan 480 00:19:40,300 --> 00:19:42,440 Anda dengan beberapa alat kita akan menggunakan, dan melihat apakah kita 481 00:19:42,440 --> 00:19:45,400 dapat membangun sekarang beberapa blok bangunan dasar dari 482 00:19:45,400 --> 00:19:49,150 pekan lalu, kini sintaktis di C. Jadi di bagian atas di sini, ini 483 00:19:49,150 --> 00:19:51,380 mungkin salah satu program yang paling membosankan Anda bisa 484 00:19:51,380 --> 00:19:53,130 menulis dalam hampir semua bahasa pemrograman. 485 00:19:53,130 --> 00:19:55,010 Tapi itu semacam memiliki arti khusus karena itu adalah 486 00:19:55,010 --> 00:19:58,120 kanonik program yang setiap ilmuwan komputer saat menulis 487 00:19:58,120 --> 00:19:59,620 mengajar seseorang bahasa pemrograman - 488 00:19:59,620 --> 00:20:01,230 program hello world. 489 00:20:01,230 --> 00:20:05,120 >> Jadi di bagian paling atas, kita melihat pengertian # include 490 00:20:05,120 --> 00:20:08,180 dan kemudian, dalam kurung siku, stdio.h. 491 00:20:08,180 --> 00:20:10,580 Kita akan kembali ke itu, tapi benar-benar apa yang 492 00:20:10,580 --> 00:20:13,770 berarti bahwa ada file di dunia ini disebut standar 493 00:20:13,770 --> 00:20:17,670 I / O, stdio dot h, dan itu hanya sebuah file teks yang 494 00:20:17,670 --> 00:20:19,240 seseorang menulis tahun lalu. 495 00:20:19,240 --> 00:20:22,550 Dan dalam file teks adalah sejumlah besar 496 00:20:22,550 --> 00:20:25,840 fungsi, atau metode, atau prosedur, bahwa orang lain 497 00:20:25,840 --> 00:20:28,970 menulis bahwa kita adalah penerima manfaat dari karena kita 498 00:20:28,970 --> 00:20:31,420 sekarang dapat menggunakan kode orang itu. 499 00:20:31,420 --> 00:20:33,070 Fungsi ia menulis. 500 00:20:33,070 --> 00:20:36,320 Dalam kasus ini, printf bukanlah sesuatu yang saya tulis, itu 501 00:20:36,320 --> 00:20:37,500 bukan sesuatu yang CS50 menulis. 502 00:20:37,500 --> 00:20:40,290 Ini adalah sesuatu yang seseorang menulis tahun yang lalu dan dimasukkan ke dalam 503 00:20:40,290 --> 00:20:43,450 file bernama stdio.h dan kemudian, sebagai samping, menempatkan 504 00:20:43,450 --> 00:20:45,830 bagian lain dari fungsi dalam file lain. 505 00:20:45,830 --> 00:20:46,940 Tapi kita akan sampai di sana. 506 00:20:46,940 --> 00:20:50,070 >> Jadi # include hanyalah cara kami mengatakan, di 507 00:20:50,070 --> 00:20:53,110 C, memberikan akses ke fungsi yang orang lain menulis. 508 00:20:53,110 --> 00:20:55,490 Dan dalam hal ini saya peduli karena saya ingin printf. 509 00:20:55,490 --> 00:20:57,530 Sekarang kita mendapatkan int main (void). 510 00:20:57,530 --> 00:21:00,160 Jadi ini adalah salah satu dari hal-hal ini, terus terang, bahwa pada hari 0, 511 00:21:00,160 --> 00:21:02,400 cukup banyak saya sudah untuk jenis keluar zona, karena itu hanya 512 00:21:02,400 --> 00:21:03,260 tidak menarik 513 00:21:03,260 --> 00:21:04,780 intelektual, beberapa sintaks. 514 00:21:04,780 --> 00:21:07,940 Tapi untuk sekarang tahu bahwa fungsi, atau dikenal sebagai 515 00:21:07,940 --> 00:21:11,660 prosedur, atau metode, umumnya menghasilkan beberapa nilai. 516 00:21:11,660 --> 00:21:12,520 Mereka melakukan sesuatu. 517 00:21:12,520 --> 00:21:13,810 Mereka datang dengan jawaban. 518 00:21:13,810 --> 00:21:15,020 Mereka menghasilkan output. 519 00:21:15,020 --> 00:21:18,780 Jadi int sebelah utama hanya singkatan cara kami mengatakan 520 00:21:18,780 --> 00:21:21,380 bahwa fungsi ini, prosedur ini, pada akhirnya akan 521 00:21:21,380 --> 00:21:22,650 untuk memberikan kembali nomor. 522 00:21:22,650 --> 00:21:24,370 Dan mengapa itu, kita akan kembali ke. 523 00:21:24,370 --> 00:21:27,810 Utama hanya dunia bawaan standar untuk default 524 00:21:27,810 --> 00:21:30,990 fungsi yang akan dieksekusi dalam program C ketika 525 00:21:30,990 --> 00:21:31,860 Anda menjalankannya. 526 00:21:31,860 --> 00:21:34,160 Void hanya berarti hal ini, utama, tidak mengambil 527 00:21:34,160 --> 00:21:35,270 argumen, dalam kasus ini. 528 00:21:35,270 --> 00:21:36,400 Jadi saya menjadi super eksplisit. 529 00:21:36,400 --> 00:21:38,160 Tidak ada string di sana, tidak ada koma. 530 00:21:38,160 --> 00:21:40,690 Void berarti tidak ada argumen untuk utama. 531 00:21:40,690 --> 00:21:44,350 >> Sekarang terakhir, untungnya, dua baris terakhir yang akrab. 532 00:21:44,350 --> 00:21:46,160 Di dalam kurung kurawal kita memiliki printf 533 00:21:46,160 --> 00:21:47,620 dan kami memiliki keuntungan. 534 00:21:47,620 --> 00:21:50,450 Dan kembalinya adalah jenis disayangkan bahwa kita harus 535 00:21:50,450 --> 00:21:53,510 menaruhnya di sana, karena dalam kasus ini itu tidak melakukan semua yang 536 00:21:53,510 --> 00:21:54,600 banyak kepentingan. 537 00:21:54,600 --> 00:21:58,790 Namun dalam program komputer, ketika fungsi mengembalikan 0, 538 00:21:58,790 --> 00:22:00,610 itu berarti semuanya baik-baik. 539 00:22:00,610 --> 00:22:01,820 Tidak ada yang tidak beres. 540 00:22:01,820 --> 00:22:06,170 Sebaliknya, jika fungsi mengembalikan 1, atau 1 negatif, atau 541 00:22:06,170 --> 00:22:11,670 negatif 1.337, atau beberapa nomor acak seperti itu, bahwa 542 00:22:11,670 --> 00:22:14,020 umumnya berarti bahwa kesalahan sebenarnya telah terjadi. 543 00:22:14,020 --> 00:22:16,150 Jadi jika Anda pada Mac atau PC Anda, jika Anda pernah melihat 544 00:22:16,150 --> 00:22:18,590 beberapa pesan menjengkelkan karena komputer Anda rusak atau 545 00:22:18,590 --> 00:22:20,660 dibekukan, dan ada pesan kesalahan yang rumit, 546 00:22:20,660 --> 00:22:23,320 dan kemudian beberapa kode, seperti sistem kode 547 00:22:23,320 --> 00:22:25,110 1,2,3,4, beberapa nomor, 548 00:22:25,110 --> 00:22:29,270 yang umumnya adalah detail yang tidak perlu untuk memberitahu 549 00:22:29,270 --> 00:22:32,110 sebagian besar dari kita manusia, tapi itulah beberapa fungsi atau beberapa 550 00:22:32,110 --> 00:22:34,890 Program ini benar-benar kembali, nilai non-nol. 551 00:22:34,890 --> 00:22:38,540 Dan manfaat dari ini adalah bahwa 0 berarti semua juga, dan 552 00:22:38,540 --> 00:22:40,470 maka Anda pada dasarnya memiliki jumlah tak terbatas hal-hal yang 553 00:22:40,470 --> 00:22:41,130 bisa salah. 554 00:22:41,130 --> 00:22:44,700 Itulah sebabnya mereka memilih 0 untuk kebaikan dan nilai non-nol untuk 555 00:22:44,700 --> 00:22:46,450 buruk, seperti yang akan kita lihat. 556 00:22:46,450 --> 00:22:47,870 >> Jadi mari kita pergi ke depan dan menulis ini. 557 00:22:47,870 --> 00:22:51,610 Jadi ingat bahwa hari saya menggunakan Mac saya untuk membuka 558 00:22:51,610 --> 00:22:53,970 jendela terminal, dan kemudian saya membuka program teks, seperti 559 00:22:53,970 --> 00:22:55,900 TextEdit, dan aku mulai menulis beberapa kode. 560 00:22:55,900 --> 00:22:56,580 Nah itu baik-baik saja. 561 00:22:56,580 --> 00:22:58,636 Tapi pengalaman Anda akan berbeda pada Mac, atau 562 00:22:58,636 --> 00:23:01,220 pada komputer Solaris, Linux komputer, apapun operasi 563 00:23:01,220 --> 00:23:02,810 sistem Anda kebetulan menggunakan. 564 00:23:02,810 --> 00:23:04,970 Dan sehingga dalam kursus, apa yang kita malah menggunakan sesuatu 565 00:23:04,970 --> 00:23:07,010 disebut Appliance CS50. 566 00:23:07,010 --> 00:23:10,420 Jadi Appliance CS50 adalah bagian dari perangkat lunak download 567 00:23:10,420 --> 00:23:13,640 yang memungkinkan Anda untuk menjalankan sistem operasi Linux yang disebut, 568 00:23:13,640 --> 00:23:16,810 khusus Fedora Linux, pada Mac atau PC sendiri. 569 00:23:16,810 --> 00:23:20,810 Dan Anda melakukan ini dengan men-download sesuatu yang disebut hypervisor. 570 00:23:20,810 --> 00:23:23,100 Jadi semua ini akan didokumentasikan dalam sejumlah masalah 1. 571 00:23:23,100 --> 00:23:25,240 Dan Anda akan dipandu ke arah apa yang Anda butuhkan untuk men-download. 572 00:23:25,240 --> 00:23:27,510 Tapi hasil akhirnya, apakah Anda memiliki Mac atau PC, adalah Anda 573 00:23:27,510 --> 00:23:29,080 men-download beberapa perangkat lunak bebas. 574 00:23:29,080 --> 00:23:32,340 Anda kemudian men-download Appliance CS50, dan Anda mengatakan bahwa 575 00:23:32,340 --> 00:23:33,960 perangkat lunak bebas - hypervisor - 576 00:23:33,960 --> 00:23:38,080 untuk menjalankan Appliance CS50 di jendela pada komputer Anda. 577 00:23:38,080 --> 00:23:39,490 Dan apa yang terjadi adalah ini. 578 00:23:39,490 --> 00:23:43,660 >> Saya sekarang, perhatikan di sini, apa yang tampaknya menjadi desktop 579 00:23:43,660 --> 00:23:44,130 lingkungan. 580 00:23:44,130 --> 00:23:46,150 Dan biarkan aku benar-benar mengecilkan jendela ini tunggal. 581 00:23:46,150 --> 00:23:49,640 Jadi sekarang ini adalah Mac saya, dengan sebuah jendela kecil di sini, dan di dalam 582 00:23:49,640 --> 00:23:51,300 dari jendela ini terjadi menjadi benar-benar 583 00:23:51,300 --> 00:23:52,380 sistem operasi yang berbeda. 584 00:23:52,380 --> 00:23:55,250 Memang ada ini start menu di sini, mengingatkan 585 00:23:55,250 --> 00:23:57,990 Jendela, yang memiliki sejumlah besar sub menu, termasuk 586 00:23:57,990 --> 00:24:00,720 link ke manual CS50, Dropbox, dan sejenisnya. 587 00:24:00,720 --> 00:24:03,480 Dan apa lingkungan ini sekarang adalah lingkungan yang standar 588 00:24:03,480 --> 00:24:06,280 bahwa kita semua sekarang dapat menggunakan, sehingga tidak peduli apa yang Anda 589 00:24:06,280 --> 00:24:08,960 komputer, apa yang telah diinstal di atasnya, apa versi 590 00:24:08,960 --> 00:24:11,430 Mac OS atau Windows Anda menjalankan, kita semua sekarang memiliki 591 00:24:11,430 --> 00:24:12,800 sama lingkungan. 592 00:24:12,800 --> 00:24:15,850 Dan sekarang dalam lingkungan ini kita dapat mulai menulis beberapa kode. 593 00:24:15,850 --> 00:24:18,480 >> Jadi aku akan pergi ke depan dan membuka sebuah program yang disebut gedit. 594 00:24:18,480 --> 00:24:21,500 Hal ini sebanding dengan notepad.exe, atau 595 00:24:21,500 --> 00:24:22,790 TextEdit pada Mac. 596 00:24:22,790 --> 00:24:25,390 Dan ini hanya super teks program editing sederhana 597 00:24:25,390 --> 00:24:27,500 yang terlihat seperti ini pada pandangan pertama. 598 00:24:27,500 --> 00:24:30,640 Sekarang di bagian paling atas, saya memiliki palet putih, di bagian bawah saya 599 00:24:30,640 --> 00:24:33,860 memiliki jendela hitam yang mengatakan jharvard alat @. 600 00:24:33,860 --> 00:24:36,440 Dan itu karena account pengguna yang kami pra-dibuat 601 00:24:36,440 --> 00:24:38,430 untuk semua orang yang disebut John Harvard. 602 00:24:38,430 --> 00:24:41,490 Dia memiliki folder dimana semua file-nya akan pergi, dan 603 00:24:41,490 --> 00:24:43,500 di sinilah kita bisa mulai menulis beberapa kode. 604 00:24:43,500 --> 00:24:45,810 Jadi biarkan aku pergi ke depan di sini dan memperbesar hanya sedikit, dan aku 605 00:24:45,810 --> 00:24:51,550 akan melakukan # include, int main (void), dan 606 00:24:51,550 --> 00:24:57,470 maka aku akan melakukan printf ("halo dunia") 607 00:24:57,470 --> 00:24:59,490 , Kembali 0. 608 00:24:59,490 --> 00:25:01,400 Sekarang ini semua cukup hitam dan putih. 609 00:25:01,400 --> 00:25:03,830 >> Biarkan aku pergi ke depan dan melakukan satu hal untuk mengajarkan apa yang saya gedit 610 00:25:03,830 --> 00:25:04,510 benar-benar melakukannya. 611 00:25:04,510 --> 00:25:06,140 Biarkan aku pergi ke Save As. 612 00:25:06,140 --> 00:25:08,560 Aku akan memilih di sisi kiri di sini jharvard. 613 00:25:08,560 --> 00:25:11,010 Jadi sekali lagi, bahkan jika Anda belum pernah menggunakan Linux sebelumnya, terus terang 614 00:25:11,010 --> 00:25:13,680 hari ini, semuanya pelimpahan ke dasarnya 615 00:25:13,680 --> 00:25:14,590 sama jenis antarmuka - 616 00:25:14,590 --> 00:25:16,030 Mac OS, Windows, dan Linux. 617 00:25:16,030 --> 00:25:18,680 Jadi saya memilih folder rumah jharvard di sini. 618 00:25:18,680 --> 00:25:21,120 Dan aku akan menyimpan file ini sebagai hello.c. 619 00:25:21,120 --> 00:25:24,260 Jadi di bagian paling atas, saya mengetik hello.c, penamaan C 620 00:25:24,260 --> 00:25:26,520 Program dengan ekstensi c. adalah 621 00:25:26,520 --> 00:25:27,570 apa praktek umum. 622 00:25:27,570 --> 00:25:28,650 Dan aku memukul Simpan. 623 00:25:28,650 --> 00:25:32,510 Dan sekarang apa yang baik adalah bahwa saya telah efektif diajarkan gedit, 624 00:25:32,510 --> 00:25:33,690 bahwa ini adalah program C. 625 00:25:33,690 --> 00:25:36,470 Perhatikan bahwa teks saya hitam dan putih kini kode warna, atau 626 00:25:36,470 --> 00:25:39,330 sintaks disorot, yang hanya menarik perhatian saya ke 627 00:25:39,330 --> 00:25:41,540 berbeda semantik bagian dari program. 628 00:25:41,540 --> 00:25:44,260 Di bagian atas kiri di sana, sebagai program saya mendapatkan lebih kompleks, saya 629 00:25:44,260 --> 00:25:47,060 akan memiliki ringkasan dari semua hal yang telah saya tulis. 630 00:25:47,060 --> 00:25:48,050 Jadi itu saja di sana. 631 00:25:48,050 --> 00:25:52,350 Jadi biarkan saya sekarang tampilannya keluar dan pergi ke jendela terminal ini. 632 00:25:52,350 --> 00:25:54,570 >> Jadi ini mungkin baru bagi banyak orang. 633 00:25:54,570 --> 00:25:57,260 Jika Anda belum pernah menggunakan lingkungan baris perintah, Anda sudah pernah 634 00:25:57,260 --> 00:26:00,020 digunakan DOS, atau Anda belum pernah menggunakan Linux, atau Anda belum pernah dibuka 635 00:26:00,020 --> 00:26:02,550 Anda Mac OS jendela terminal, ada banyak hal yang Anda 636 00:26:02,550 --> 00:26:04,820 bisa lakukan dengan GUI, seperti menunjuk, dan mengklik, dan 637 00:26:04,820 --> 00:26:07,080 menyeret, dan menjatuhkan, dan sejenisnya, tetapi umumnya - 638 00:26:07,080 --> 00:26:09,360 tentu dalam dunia ilmu komputer - 639 00:26:09,360 --> 00:26:11,580 menggunakan baris perintah, di mana Anda tidak memiliki mouse Anda 640 00:26:11,580 --> 00:26:14,220 pada umumnya, Anda hanya memiliki keyboard Anda, sebenarnya banyak 641 00:26:14,220 --> 00:26:17,260 lebih kuat daripada antarmuka, setelah Anda mendapatkan terbiasa dengan 642 00:26:17,260 --> 00:26:18,580 berbagai perintah. 643 00:26:18,580 --> 00:26:20,940 Dan Anda semacam membebaskan diri dari perlu untuk titik dan klik 644 00:26:20,940 --> 00:26:21,690 dalam segala hal. 645 00:26:21,690 --> 00:26:23,890 Jadi di gedit kita akan semacam memiliki yang terbaik dari kedua dunia. 646 00:26:23,890 --> 00:26:25,600 Kita dapat drag dan drop teks, kita bisa melihatnya 647 00:26:25,600 --> 00:26:26,840 bagus dan kode warna. 648 00:26:26,840 --> 00:26:29,630 Tapi ketika tiba saatnya untuk menjalankan program kami, terkadang kami akan 649 00:26:29,630 --> 00:26:31,750 hanya menggunakan jendela kecil di sini. 650 00:26:31,750 --> 00:26:33,460 >> Jadi aku akan pergi ke depan dan melakukan hal ini. 651 00:26:33,460 --> 00:26:36,420 Pada jendela hitam dan putih bawah, aku akan pergi ke depan 652 00:26:36,420 --> 00:26:37,890 dan menulis dentang. 653 00:26:37,890 --> 00:26:40,130 Dan dentang adalah nama kompilator. 654 00:26:40,130 --> 00:26:43,310 Ini adalah program yang mengkonversi kode sumber saya 655 00:26:43,310 --> 00:26:48,770 ke dalam, jadi, kode obyek. 656 00:26:48,770 --> 00:26:51,270 0s dan 1s, bahwa kita melihat sebentar minggu lalu. 657 00:26:51,270 --> 00:26:53,700 Ingat dari minggu lalu, kami berjanji bahwa kami akan 658 00:26:53,700 --> 00:26:55,920 pergi dari sesuatu seperti ini - kita harus 659 00:26:55,920 --> 00:26:57,010 sesuatu seperti ini - 660 00:26:57,010 --> 00:26:58,700 dan ini tentunya bukan sesuatu yang manusia akan 661 00:26:58,700 --> 00:26:59,690 dilakukan secara manual. 662 00:26:59,690 --> 00:27:01,980 Jadi, bukannya kita akan menggunakan sebuah program, dan program 663 00:27:01,980 --> 00:27:03,430 Kasus ini disebut dentang. 664 00:27:03,430 --> 00:27:06,020 Dan nama dari program saya hello.c. 665 00:27:06,020 --> 00:27:09,670 Jadi untuk mengkompilasi hello.c dari kode sumber ke dalam 666 00:27:09,670 --> 00:27:12,930 kode objek, atau 0s dan 1s, itu harus cukup untuk hanya melakukan 667 00:27:12,930 --> 00:27:14,820 ini dan tekan Enter. 668 00:27:14,820 --> 00:27:16,850 >> Oke, tidak ada yang tampaknya telah terjadi. 669 00:27:16,850 --> 00:27:20,450 Tapi aku tahu sekarang, atau dari pekan lalu, bahwa nama default 670 00:27:20,450 --> 00:27:24,920 sebuah program, ketika ditulis dalam C, yang disebut bodoh a.out. 671 00:27:24,920 --> 00:27:26,610 Nama yang paling tidak menarik Anda bisa datang dengan. 672 00:27:26,610 --> 00:27:28,790 A adalah huruf pertama dari alfabet, keluar adalah apa yang 673 00:27:28,790 --> 00:27:29,960 outputted, tapi begitu baik. 674 00:27:29,960 --> 00:27:33,570 Ini adalah program saya, dan sekarang dot slash, seperti yang akan kita lihat, adalah 675 00:27:33,570 --> 00:27:36,170 sebenarnya hanya semacam fitur keamanan, karena 676 00:27:36,170 --> 00:27:38,250 a.out adalah program yang saya tulis. 677 00:27:38,250 --> 00:27:39,650 Itu tidak datang dengan komputer saya, itu 678 00:27:39,650 --> 00:27:40,790 tidak dalam Program Files. 679 00:27:40,790 --> 00:27:42,910 Ini bukan dalam folder Aplikasi Mac OS. 680 00:27:42,910 --> 00:27:45,740 Saya perlu eksplisit super dengan komputer, dan mengatakan 681 00:27:45,740 --> 00:27:49,030 program ini, a.out, adalah dalam folder saat ini, 682 00:27:49,030 --> 00:27:50,260 saat ini direktori. 683 00:27:50,260 --> 00:27:53,160 Dan cara Anda mewakili di lingkungan seperti ini 684 00:27:53,160 --> 00:27:57,070 adalah titik mewakili apapun folder Anda sedang masuk 685 00:27:57,070 --> 00:27:59,420 Dan sebagainya. / A.out hanya berarti menjalankan 686 00:27:59,420 --> 00:28:00,530 dalam folder saat ini. 687 00:28:00,530 --> 00:28:04,830 Dan saya menjalankan ini dengan Enter, dan voila, program saya yang pertama. 688 00:28:04,830 --> 00:28:05,990 >> Sekarang biarkan aku mengambil langkah mundur. 689 00:28:05,990 --> 00:28:08,280 Jendela ini agak kecil, dan menyadari bahwa bagian bawah 690 00:28:08,280 --> 00:28:10,340 kiri alat di sini adalah ikon lain. 691 00:28:10,340 --> 00:28:12,660 Salah satunya adalah Chrome, yang harus cukup akrab, hanya web 692 00:28:12,660 --> 00:28:14,350 Browser dalam alat. 693 00:28:14,350 --> 00:28:16,340 Dan ini icon hitam dan putih hanya 694 00:28:16,340 --> 00:28:17,720 besar jendela terminal. 695 00:28:17,720 --> 00:28:19,830 Jadi jika mendapat sedikit mengganggu untuk semacam baru saja 696 00:28:19,830 --> 00:28:22,270 ini sepotong kecil kecil jendela yang dapat digunakan untuk berinteraksi 697 00:28:22,270 --> 00:28:24,370 dengan program, kita malah bisa melakukan hal ini. 698 00:28:24,370 --> 00:28:26,640 Dan sekarang biarkan aku mulai mengetik segera beberapa 699 00:28:26,640 --> 00:28:27,980 menjadi perintah akrab. 700 00:28:27,980 --> 00:28:28,900 ls. 701 00:28:28,900 --> 00:28:31,410 Jadi ls adalah perintah untuk listing. 702 00:28:31,410 --> 00:28:33,900 Jadi dalam OS Mac atau Windows, biasanya Anda akan mengklik dua kali 703 00:28:33,900 --> 00:28:36,510 folder dan kemudian, voila, Anda melihat semua berbagai file 704 00:28:36,510 --> 00:28:37,210 dan folder. 705 00:28:37,210 --> 00:28:39,650 Dalam lingkungan baris perintah, di mana Anda hanya bisa mengetik 706 00:28:39,650 --> 00:28:42,390 perintah atau teks, ls adalah setara. 707 00:28:42,390 --> 00:28:44,380 Jadi menunjukkan apa yang ada di direktori ini. 708 00:28:44,380 --> 00:28:46,540 >> Sekarang ada banyak hal di sini yang baik sedikit 709 00:28:46,540 --> 00:28:48,190 akrab dan asing sedikit. 710 00:28:48,190 --> 00:28:50,740 Tetapi perhatikan bahwa sama seperti Windows dan Mac OS, jharvard 711 00:28:50,740 --> 00:28:52,190 memiliki folder desktop. 712 00:28:52,190 --> 00:28:54,520 Jadi setiap ikon yang ada di desktop saya terjadi 713 00:28:54,520 --> 00:28:55,650 berada di folder itu. 714 00:28:55,650 --> 00:28:57,250 Ada folder download, hal-hal yang 715 00:28:57,250 --> 00:28:58,890 Chrome mungkin diletakkan di sana. 716 00:28:58,890 --> 00:28:59,250 Dropbox. 717 00:28:59,250 --> 00:29:01,820 Jadi alat dilengkapi dengan built-in mendukung untuk Dropbox 718 00:29:01,820 --> 00:29:04,500 sehingga lebih semester, Anda dapat sinkron dengan Anda Dropbox 719 00:29:04,500 --> 00:29:06,420 akun sehingga semua program-program anda didukung. 720 00:29:06,420 --> 00:29:08,050 Mereka dapat diakses di komputer lain. 721 00:29:08,050 --> 00:29:09,780 Jika sesuatu yang tidak beres dengan alat, Anda dapat 722 00:29:09,780 --> 00:29:11,340 sangat mudah pulih dari Dropbox. 723 00:29:11,340 --> 00:29:12,940 Jadi folder yang ada untuk itu. 724 00:29:12,940 --> 00:29:14,660 Ada dua file yang saya buat - hello.c 725 00:29:14,660 --> 00:29:16,540 dan a.out. 726 00:29:16,540 --> 00:29:18,530 Dan kemudian ke kanan ada beberapa folder lain yang kita akan 727 00:29:18,530 --> 00:29:20,710 sampai menjelang akhir semester, dengan web 728 00:29:20,710 --> 00:29:21,540 pemrograman. 729 00:29:21,540 --> 00:29:26,160 Jadi ketika saya melakukan /,. A.out, Enter, itu mengatakan pergi 730 00:29:26,160 --> 00:29:29,460 dalam direktori aku di, direktori saat ini, dan menjalankan 731 00:29:29,460 --> 00:29:32,465 program yang disebut a.out di sana. 732 00:29:32,465 --> 00:29:35,810 >> Baiklah, jadi itu bagus dan baik, tapi tidak semua yang 733 00:29:35,810 --> 00:29:38,550 menarik untuk menulis sebuah program yang disebut membantu a.out. 734 00:29:38,550 --> 00:29:40,790 Jadi kita benar-benar bisa melakukan ini sedikit berbeda. 735 00:29:40,790 --> 00:29:43,980 Jadi bukan hanya dentang berjalan, hello.c, mari kita tambahkan 736 00:29:43,980 --> 00:29:46,850 apa yang disebut argumen baris perintah. 737 00:29:46,850 --> 00:29:50,730 Jadi argumen baris perintah, atau switch dalam kasus ini, hanya 738 00:29:50,730 --> 00:29:54,930 kata lain atau frase yang Anda ketik pada prompt setelah 739 00:29:54,930 --> 00:29:56,290 program yang ingin Anda jalankan. 740 00:29:56,290 --> 00:29:59,970 Jadi dalam hal ini, dentang adalah program yang saya ingin jalankan,-o 741 00:29:59,970 --> 00:30:03,480 berarti output file yang sudah tidak lagi disebut a.out. 742 00:30:03,480 --> 00:30:07,510 Output file bernama halo, dan melakukannya dengan mengumpulkan 743 00:30:07,510 --> 00:30:10,200 kata terakhir di telepon, hello.c. 744 00:30:10,200 --> 00:30:13,200 Jadi singkatnya, ini adalah perbaikan yang sangat marjinal, dimana 745 00:30:13,200 --> 00:30:15,850 bukannya memiliki ini a.out berkas bodoh bernama, 746 00:30:15,850 --> 00:30:21,430 Saya sekarang bisa melakukan dentang-o halo, maka hello.c, dan 747 00:30:21,430 --> 00:30:22,530 kemudian tekan Enter. 748 00:30:22,530 --> 00:30:25,510 Tidak ada yang tampaknya terjadi, tapi sekali lagi sangat mirip dengan 0 - saat 749 00:30:25,510 --> 00:30:28,510 sepertinya tidak ada yang terjadi itu berarti ada yang salah terjadi - 750 00:30:28,510 --> 00:30:31,460 jadi mari kita lakukan sekarang ls, Enter, dan memang saya sekarang 751 00:30:31,460 --> 00:30:32,780 memiliki program halo. 752 00:30:32,780 --> 00:30:38,510 Jadi jika saya ketik halo sekarang, perintah tidak ditemukan. 753 00:30:38,510 --> 00:30:39,440 OK, /.. 754 00:30:39,440 --> 00:30:40,220 Jadi tepat. 755 00:30:40,220 --> 00:30:43,170 Jadi karena program ini saya menulis, dan itu tidak datang dengan 756 00:30:43,170 --> 00:30:45,810 komputer, / hello., Enter, berarti 757 00:30:45,810 --> 00:30:47,350 Sekarang saya menggunakan halo. 758 00:30:47,350 --> 00:30:48,440 >> Jadi begitu ada. 759 00:30:48,440 --> 00:30:51,070 Sekarang apa yang kita akhirnya akan sampai ke baris perintah lebih dan lebih 760 00:30:51,070 --> 00:30:54,110 argumen yang memungkinkan kita untuk melakukan lebih, tapi hanya untuk orang-orang untuk 761 00:30:54,110 --> 00:30:57,760 siapa ini mungkin topi tua, biarkan aku benar-benar pergi ke 762 00:30:57,760 --> 00:31:01,910 direktori di sini dan hanya memberikan teaser dari bagaimana lagi kita 763 00:31:01,910 --> 00:31:05,770 bisa pergi tentang pelaksanaan halo dunia. 764 00:31:05,770 --> 00:31:10,730 Biarkan aku pergi ke sini, dan aku akan membukanya. 765 00:31:10,730 --> 00:31:13,090 Jadi sebenarnya, aku akan menjelaskan apa yang saya lakukan, sehingga 766 00:31:13,090 --> 00:31:15,610 ini berguna. 767 00:31:15,610 --> 00:31:17,410 Biarkan aku kembali. 768 00:31:17,410 --> 00:31:19,620 >> Jadi saya sudah melakukan ini sejak lama. 769 00:31:19,620 --> 00:31:23,030 Jadi perhatikan atas di sebelah kanan terdapat beberapa 770 00:31:23,030 --> 00:31:26,940 direktori yang bernama aneh source1m dan source1w. 771 00:31:26,940 --> 00:31:28,830 Ini hanyalah konvensi konyol kita gunakan. 772 00:31:28,830 --> 00:31:31,825 Sumber hanya berarti source code, 1 berarti ini adalah satu minggu, dan 773 00:31:31,825 --> 00:31:34,000 m berarti itu hari Senin, dan w berarti itu Rabu. 774 00:31:34,000 --> 00:31:34,900 Jadi samar ada apa-apa. 775 00:31:34,900 --> 00:31:37,830 Ini hanya notasi steno. 776 00:31:37,830 --> 00:31:39,860 Hal-hal biru adalah folder, atau dikenal sebagai 777 00:31:39,860 --> 00:31:40,630 direktori. 778 00:31:40,630 --> 00:31:43,870 Saya ingin pergi ke folder yang sekarang, dan pada komputer normal 779 00:31:43,870 --> 00:31:45,710 Aku hanya bisa klik dua kali pada icon folder dan 780 00:31:45,710 --> 00:31:46,810 ada semua file saya. 781 00:31:46,810 --> 00:31:49,270 Tetapi dalam lingkungan baris perintah, saya tidak bisa melakukan cukup 782 00:31:49,270 --> 00:31:52,640 itu, jadi sebagai gantinya, saya harus mengubah direktori secara manual. 783 00:31:52,640 --> 00:31:57,900 Jadi jika saya ketik cd dan kemudian source1m, Enter, perhatikan bahwa 784 00:31:57,900 --> 00:32:01,180 prompt saya, hal putih di sebelah kiri, hanya berubah. 785 00:32:01,180 --> 00:32:03,690 Dan begitu memang, saat itu hanya mengatakan kurung dan kemudian 786 00:32:03,690 --> 00:32:06,450 sedikit coretan, simbol tilde, yang hanya berarti saya 787 00:32:06,450 --> 00:32:08,800 di direktori home John Harvard, My Documents nya, 788 00:32:08,800 --> 00:32:10,390 nya file pribadi. 789 00:32:10,390 --> 00:32:14,000 Tetapi sekarang di dalam kurung itu mengatakan ~ / source1m. 790 00:32:14,000 --> 00:32:17,090 Ini hanya berarti saya dalam folder bernama source1m 791 00:32:17,090 --> 00:32:19,160 yang ada di direktori home John Harvard. 792 00:32:19,160 --> 00:32:22,030 Jadi jika sekarang saya ingin daftar file dalam folder ini, mudah 793 00:32:22,030 --> 00:32:25,300 pertanyaan, saya ketik saja ls. 794 00:32:25,300 --> 00:32:28,860 Dan sekarang saya melihat semua file yang saya pra-dibuat untuk hari ini 795 00:32:28,860 --> 00:32:31,020 kuliah, yang semuanya, atau sebagian besar, terjadi 796 00:32:31,020 --> 00:32:32,740 berakhir pada bulan. c. 797 00:32:32,740 --> 00:32:36,210 >> Jadi biarkan aku pergi ke depan sekarang dan menjalankan gedit dari sebuah program yang disebut 798 00:32:36,210 --> 00:32:39,140 holloway.c, yang ditulis oleh beberapa hacker acak 799 00:32:39,140 --> 00:32:42,920 di Internet, yang terlihat sedikit seperti ini. 800 00:32:42,920 --> 00:32:44,880 Dan kami tidak akan pergi melalui satu ini dalam setiap 801 00:32:44,880 --> 00:32:48,530 rinci, tetapi bagi mereka lebih nyaman, khususnya, jika 802 00:32:48,530 --> 00:32:50,935 Anda ingin mengambil menebak seperti apa program ini tidak di sini. 803 00:32:57,950 --> 00:32:59,990 Yakinlah, apakah Anda kurang atau lebih nyaman, 804 00:32:59,990 --> 00:33:01,655 kita bahkan tidak sampai ke hal semacam ini pada akhir 805 00:33:01,655 --> 00:33:02,160 semester ini. 806 00:33:02,160 --> 00:33:05,390 Inilah sebuah contoh dari sebuah kontes C dikaburkan, yang 807 00:33:05,390 --> 00:33:08,390 berarti menulis program mencari yang paling samar Anda mungkin 808 00:33:08,390 --> 00:33:10,820 bisa untuk mengalahkan orang pintar lainnya, yang sama-sama 809 00:33:10,820 --> 00:33:13,010 mencoba untuk menulis hal-hal dan pamer bahwa mereka dapat menulis 810 00:33:13,010 --> 00:33:14,280 lebih samar hal dari Anda. 811 00:33:14,280 --> 00:33:17,290 Jadi ini bukan contoh program yang ditulis dengan baik dari 812 00:33:17,290 --> 00:33:21,260 perspektif gaya, ini adalah contoh dari sebuah program yang 813 00:33:21,260 --> 00:33:22,860 menang kontes, bagi orang yang mencoba untuk 814 00:33:22,860 --> 00:33:24,090 samar-samar dan abstrak. 815 00:33:24,090 --> 00:33:27,670 >> Jadi jika kita menjalankan hal ini, biarkan aku pergi ke jendela terminal saya, 816 00:33:27,670 --> 00:33:28,110 sehingga untuk berbicara. 817 00:33:28,110 --> 00:33:29,650 Jadi lingkungan hitam dan putih disebut 818 00:33:29,650 --> 00:33:31,160 jendela terminal pada umumnya. 819 00:33:31,160 --> 00:33:32,600 Biarkan aku pergi ke depan dan kompilasi. 820 00:33:32,600 --> 00:33:34,440 Aku tidak akan menggunakan dentang, karena program ini adalah 821 00:33:34,440 --> 00:33:36,340 sedikit samar dan membutuhkan berbeda 822 00:33:36,340 --> 00:33:38,190 compiler, yang disebut GCC. 823 00:33:38,190 --> 00:33:39,200 Tapi itu melakukan hal yang sama. 824 00:33:39,200 --> 00:33:41,130 Dibutuhkan kode sumber untuk kode obyek. 825 00:33:41,130 --> 00:33:43,940 Dan sekarang jika saya menjalankan a.out, bahwa program Anda 826 00:33:43,940 --> 00:33:46,065 hanya melihat hal ini. 827 00:33:49,220 --> 00:33:51,170 Jadi orang bahwa tahun memenangkan kontes itu. 828 00:33:51,170 --> 00:33:54,020 Bagaimanapun, kita tidak akan ke arah itu, per se. 829 00:33:54,020 --> 00:33:57,400 >> Jadi mari kita benar-benar mencoba untuk sekarang menggoda selain apa yang bisa kita lakukan 830 00:33:57,400 --> 00:33:59,540 dengan blok bangunan dasar untuk membuat lebih banyak dan lebih 831 00:33:59,540 --> 00:34:00,590 menarik program. 832 00:34:00,590 --> 00:34:02,800 Jadi kami telah menulis sebuah program, kami telah menjalankan program. 833 00:34:02,800 --> 00:34:05,780 Sekarang kita benar-benar dapat menyederhanakan dan tidak lagi harus menulis 834 00:34:05,780 --> 00:34:07,210 dentang kata saat diminta. 835 00:34:07,210 --> 00:34:10,710 Ternyata sebagai program kami mendapatkan lebih samar, kita bisa, atau 836 00:34:10,710 --> 00:34:14,699 lebih kompleks lebih, kita benar-benar dapat menjalankan perintah ini. 837 00:34:14,699 --> 00:34:17,610 Jadi biarkan aku kembali ke direktori rumah saya, sehingga untuk berbicara, biarkan aku 838 00:34:17,610 --> 00:34:20,750 menghapus - rm adalah perintah menghapus - saya akan menghapus 839 00:34:20,750 --> 00:34:23,060 file yang bernama a.out dan Halo. 840 00:34:23,060 --> 00:34:25,489 Dan sekarang perhatikan dalam lingkungan baris perintah, seperti dalam 841 00:34:25,489 --> 00:34:27,800 GUI, Anda mendapatkan diminta. Saya tidak dapat mengklik tombol meskipun, aku 842 00:34:27,800 --> 00:34:31,040 harus mengetikkan y untuk ya, y untuk ya. 843 00:34:31,040 --> 00:34:33,460 Dan sekarang jika saya ketik ls lagi, perhatikan bahwa mereka hijau 844 00:34:33,460 --> 00:34:35,469 program - a.out dan hello - 845 00:34:35,469 --> 00:34:35,734 hilang. 846 00:34:35,734 --> 00:34:37,340 Waspadalah rm. 847 00:34:37,340 --> 00:34:39,739 Hal ini dapat melakukan hal-hal yang buruk, seperti Anda dapat dengan menyeret 848 00:34:39,739 --> 00:34:40,810 hal yang sampah Anda. 849 00:34:40,810 --> 00:34:43,989 >> Jadi sekarang mari kita pergi ke depan - dan saya bisa melakukan ini - dentang-o 850 00:34:43,989 --> 00:34:45,139 halo, halo - 851 00:34:45,139 --> 00:34:46,884 Saya sudah bosan mengetik perintah itu. 852 00:34:46,884 --> 00:34:48,080 Meskipun saya mengetik itu sedikit cepat. 853 00:34:48,080 --> 00:34:51,870 Jadi kita malah bisa lakukan membuat halo. 854 00:34:51,870 --> 00:34:53,880 Jadi membuat tidak kompilator. 855 00:34:53,880 --> 00:34:57,720 Ini hanya sebuah program ramah yang datang dengan Linux, dalam hal ini 856 00:34:57,720 --> 00:34:59,070 Kasus - sistem operasi - 857 00:34:59,070 --> 00:35:02,480 yang mengotomatisasi proses kompilasi program. 858 00:35:02,480 --> 00:35:05,555 Jadi, bukannya mengingat dentang-o nama file dan 859 00:35:05,555 --> 00:35:08,190 kemudian sebagainya, terutama setelah baris tersebut semakin panjang dan 860 00:35:08,190 --> 00:35:10,110 lagi, saya hanya bisa menulis membuat. 861 00:35:10,110 --> 00:35:12,030 Dan ini akan meludahkan sejumlah besar hal-hal yang 862 00:35:12,030 --> 00:35:13,940 kita akhirnya akan melihat semester ini. 863 00:35:13,940 --> 00:35:17,500 Tapi perhatikan sekarang jika saya ketik ls, halo kembali dalam direktori saya. 864 00:35:17,500 --> 00:35:19,850 Dan memang saya bisa menjalankannya dengan / hello.. 865 00:35:19,850 --> 00:35:23,330 Jadi membuat hanya mengotomatiskan proses menjalankan apa, 866 00:35:23,330 --> 00:35:26,910 dalam hal ini, lebih lama perintah, lebih kompleks. 867 00:35:26,910 --> 00:35:29,060 Jadi kita akan mulai menggunakan make, hanya karena itu banyak 868 00:35:29,060 --> 00:35:30,530 lebih ramah pengguna. 869 00:35:30,530 --> 00:35:32,770 >> Tapi sekarang mari kita lakukan program yang lebih menarik 870 00:35:32,770 --> 00:35:34,650 dari sekedar say hello. 871 00:35:34,650 --> 00:35:38,680 Jadi dalam program yang kami telah menulis sejauh ini ada utama. 872 00:35:38,680 --> 00:35:40,890 Itu hanya hal standar yang kicks off segalanya. 873 00:35:40,890 --> 00:35:43,340 Tetapi ada fungsi lain di luar sana juga, dan 874 00:35:43,340 --> 00:35:45,890 stdio.h adalah hal yang kita lihat di atas kami 875 00:35:45,890 --> 00:35:48,480 file sebelum, dan itulah apa yang dikenal sebagai perpustakaan standar. 876 00:35:48,480 --> 00:35:51,300 Di dalam perpustakaan standar sejumlah besar fungsi 877 00:35:51,300 --> 00:35:53,850 bahwa orang lain menulis, dan kita bisa mulai menggunakan ini 878 00:35:53,850 --> 00:35:55,050 fungsi untuk menulis lebih 879 00:35:55,050 --> 00:35:56,760 menarik program sendiri. 880 00:35:56,760 --> 00:35:58,370 >> Jadi biarkan aku kembali ke alat. 881 00:35:58,370 --> 00:35:59,820 Aku akan menutup jendela terminal. 882 00:35:59,820 --> 00:36:02,630 Aku akan menutup hal yang kita tulis sebelumnya, dan hanya pergi 883 00:36:02,630 --> 00:36:07,350 ke hello.c, dan perhatikan sekarang saya bisa melakukan hal berikut. 884 00:36:07,350 --> 00:36:09,730 Halo dunia tidak semua yang menarik, saya ingin 885 00:36:09,730 --> 00:36:11,770 personalisasi program ini untuk diriku sendiri. 886 00:36:11,770 --> 00:36:13,440 Jadi, bukannya mengatakan dunia, aku akan 887 00:36:13,440 --> 00:36:14,830 pergi ke depan dan berkata - 888 00:36:14,830 --> 00:36:16,880 Saya bisa mengetik David - tapi ini benar-benar semacam 889 00:36:16,880 --> 00:36:18,050 dasarnya sama. 890 00:36:18,050 --> 00:36:19,970 Tapi mari kita coba keluar ide placeholder. 891 00:36:19,970 --> 00:36:24,460 Ingat bahwa di C, bukan di printf, kami punya ini 892 00:36:24,460 --> 00:36:28,110 penampung, dan ada lebih dari sekedar d%. 893 00:36:28,110 --> 00:36:31,150 Jadi% d adalah, cek kewarasan cepat. 894 00:36:31,150 --> 00:36:32,310 Oke, angka desimal, itu saja. 895 00:36:32,310 --> 00:36:33,860 Desimal digit, itu saja. 896 00:36:33,860 --> 00:36:37,755 Jadi c%, seperti yang akan kita hadapi, akan menjadi karakter. 897 00:36:37,755 --> 00:36:40,530 Masukan karakter di sini, surat melalui z, 898 00:36:40,530 --> 00:36:41,600 atau tanda baca simbol. 899 00:36:41,600 --> 00:36:45,590 Sebuah karakter tunggal, f%, ada yang tahu dari bahasa lain? 900 00:36:45,590 --> 00:36:47,020 Jadi nilai floating point. 901 00:36:47,020 --> 00:36:47,880 Sejumlah nyata. 902 00:36:47,880 --> 00:36:51,550 Jadi bukan angka desimal - ini sebenarnya adalah sebuah bilangan real dengan 903 00:36:51,550 --> 00:36:54,130 titik desimal, dan beberapa jumlah digit ke kiri 904 00:36:54,130 --> 00:36:55,520 dan hak itu. 905 00:36:55,520 --> 00:36:58,060 % S, string. 906 00:36:58,060 --> 00:36:59,530 Itu yang kita akan melihat cukup sering. 907 00:36:59,530 --> 00:37:02,140 Sebuah string, sekali lagi, hanyalah sebuah kata, frase, urutan 908 00:37:02,140 --> 00:37:03,330 individu karakter. 909 00:37:03,330 --> 00:37:06,730 Dan terakhir, lld? 910 00:37:06,730 --> 00:37:08,210 Jadi ini lebih merupakan kasus sudut. 911 00:37:08,210 --> 00:37:09,850 Panjang desimal, panjang. 912 00:37:09,850 --> 00:37:12,035 Jadi jika Anda ingin tidak hanya nomor yang sebesar ini, Anda 913 00:37:12,035 --> 00:37:14,160 ingin nomor yang lebih besar, Anda akan harus menentukan untuk 914 00:37:14,160 --> 00:37:16,400 komputer bahwa itu dari ukuran tertentu. 915 00:37:16,400 --> 00:37:17,610 >> Jadi mari kita tweak ini agak sedikit. 916 00:37:17,610 --> 00:37:20,610 Daripada hanya kode keras di David, biar sedikit 917 00:37:20,610 --> 00:37:22,460 dinamis katakan s%. 918 00:37:22,460 --> 00:37:25,790 Jadi menempatkan s% di sini, yang merupakan tempat untuk string. 919 00:37:25,790 --> 00:37:30,500 Kemudian biarkan aku melakukan koma, dan kemudian "David" di sini. 920 00:37:30,500 --> 00:37:32,770 Sekarang ini tidak semua yang menarik secara intelektual, 921 00:37:32,770 --> 00:37:35,060 karena semua saya lakukan sekarang adalah benar-benar menciptakan lebih banyak pekerjaan bagi 922 00:37:35,060 --> 00:37:35,790 komputer. 923 00:37:35,790 --> 00:37:39,660 Daripada memberitahu komputer melakukan hal ini sekaligus, aku sekarang 924 00:37:39,660 --> 00:37:43,760 mengatakan melakukan ini dan memasukkan string di sini pada akhirnya, koma, 925 00:37:43,760 --> 00:37:44,950 di sini adalah string yang. 926 00:37:44,950 --> 00:37:47,220 Jadi ini bukan perbaikan yang lebih baik, tapi setidaknya 927 00:37:47,220 --> 00:37:49,010 langkah menuju program yang lebih menarik. 928 00:37:49,010 --> 00:37:51,240 Karena sekarang, biarkan aku pergi ke depan dan membuat jendela ini sedikit 929 00:37:51,240 --> 00:37:56,850 lebih besar, biarkan aku pergi ke depan dan menjalankan make halo. 930 00:37:56,850 --> 00:38:01,340 Dan sekarang, / a.out. Tidak bekerja, mengapa? 931 00:38:03,880 --> 00:38:05,570 Baiklah, sekarang itu disebut halo. 932 00:38:05,570 --> 00:38:09,400 Jadi sekali lagi membuat, dan juga berdentang dengan-o, berganti nama menjadi 933 00:38:09,400 --> 00:38:11,120 program untuk menjadi sesuatu yang lebih menarik. 934 00:38:11,120 --> 00:38:13,060 Dan voila: sekarang mengatakan Halo David. 935 00:38:13,060 --> 00:38:14,590 >> Baiklah, masih merupakan program bodoh. 936 00:38:14,590 --> 00:38:18,070 Jadi sekarang mari kita benar-benar pergi kembali ke sini dan memperkenalkan gagasan 937 00:38:18,070 --> 00:38:18,810 dari variabel. 938 00:38:18,810 --> 00:38:21,600 Bukankah akan lebih baik jika aku bisa mendeklarasikan variabel 939 00:38:21,600 --> 00:38:23,150 yang jenis string? 940 00:38:23,150 --> 00:38:26,720 Dan nilai variabel sebenarnya berasal dari pengguna 941 00:38:26,720 --> 00:38:27,810 dirinya sendiri. 942 00:38:27,810 --> 00:38:30,240 Jadi sewenang-wenang, aku akan menelepon s variabel saya, yang 943 00:38:30,240 --> 00:38:32,410 hanyalah sebuah konvensi umum ketika Anda memiliki satu variabel yang disebut 944 00:38:32,410 --> 00:38:33,250 string. 945 00:38:33,250 --> 00:38:35,670 Aku akan melakukan tanda yang sama, dan kemudian aku akan memanggil 946 00:38:35,670 --> 00:38:38,030 fungsi yang disebut GetString. 947 00:38:38,030 --> 00:38:40,830 Jadi GetString bukanlah sesuatu yang datang dibangun ke C. Ini 948 00:38:40,830 --> 00:38:43,330 fungsi yang staf CS50 menulis, benar-benar hanya untuk 949 00:38:43,330 --> 00:38:45,670 ini beberapa minggu pertama, untuk menyederhanakan proses 950 00:38:45,670 --> 00:38:49,450 mendapatkan masukan pengguna dan mendapatkan input pengguna dalam bentuk 951 00:38:49,450 --> 00:38:51,960 string, atau angka, dan semacamnya. 952 00:38:51,960 --> 00:38:55,520 Jadi GetString seperti printf, tapi jelas bukan 953 00:38:55,520 --> 00:38:58,700 mencetaknya akan melakukan apa yang namanya mengatakan, mendapatkan string. 954 00:38:58,700 --> 00:39:00,970 Tetapi untuk menggunakan GetString, kita akan harus membuat perubahan 955 00:39:00,970 --> 00:39:03,180 di sini, di luar ini. 956 00:39:03,180 --> 00:39:07,170 Jadi intuitif, program ini, mudah-mudahan, akan entah bagaimana 957 00:39:07,170 --> 00:39:09,700 mendapatkan string dari user, dan kemudian apa yang akan dilakukannya 958 00:39:09,700 --> 00:39:11,460 dengan string yang, disebut s? 959 00:39:15,060 --> 00:39:16,470 Ini hanya akan mencetaknya, kan? 960 00:39:16,470 --> 00:39:18,870 Masih bukan program merangsang karena semua itu akan 961 00:39:18,870 --> 00:39:22,160 lakukan adalah plug nilai itu ke mana% s 962 00:39:22,160 --> 00:39:23,750 mengatakan harus pergi. 963 00:39:23,750 --> 00:39:25,290 >> Jadi mari kita setidaknya melihat ini dalam tindakan. 964 00:39:25,290 --> 00:39:27,040 Biarkan saya menyimpan dan zoom out. 965 00:39:27,040 --> 00:39:30,280 Sekarang di jendela terminal saya di sini, potongan kecil dari satu, 966 00:39:30,280 --> 00:39:32,760 biarkan aku lakukan lagi membuat halo. 967 00:39:32,760 --> 00:39:35,160 Oke, dan ah, sialan, aku mendapat sejumlah besar kesalahan. 968 00:39:35,160 --> 00:39:38,020 Biarkan saya gulir ke atas, dan kami melihat pertama kami - 969 00:39:38,020 --> 00:39:40,430 jadi mari kita benar-benar melakukan hal ini dalam sebuah jendela yang lebih besar sehingga Anda 970 00:39:40,430 --> 00:39:42,110 dapat melihat betapa aku kacau - 971 00:39:42,110 --> 00:39:44,460 sehingga membuat halo. 972 00:39:44,460 --> 00:39:46,540 Oke, itu bencana, kan? 973 00:39:46,540 --> 00:39:48,740 Saya telah menulis tiga baris kode, dan 974 00:39:48,740 --> 00:39:50,070 itu memberi saya 12 kesalahan. 975 00:39:50,070 --> 00:39:51,980 Lalu mengapa ini? 976 00:39:51,980 --> 00:39:55,720 Jadi untungnya, seringkali ketika Anda melihat banyak, banyak kesalahan 977 00:39:55,720 --> 00:39:57,730 meludah keluar sekaligus, itu benar-benar hanya karena Anda sudah 978 00:39:57,730 --> 00:39:59,760 bingung komputer di sini. 979 00:39:59,760 --> 00:40:02,330 Dan masih bingung pada saat itu akan ke sini. 980 00:40:02,330 --> 00:40:04,400 Dan sehingga hanya mulai tersandung, dan tersandung, dan 981 00:40:04,400 --> 00:40:07,310 menyemburkan lebih banyak barang menakutkan daripada benar-benar berlaku. 982 00:40:07,310 --> 00:40:10,120 Jadi secara umum, selalu dimulai dengan satu atas. 983 00:40:10,120 --> 00:40:13,320 >> Jadi contoh yang paling paling atas merah, 984 00:40:13,320 --> 00:40:14,740 pesan kesalahan ini. 985 00:40:14,740 --> 00:40:17,750 Gunakan string undeclared identifier, aku 986 00:40:17,750 --> 00:40:19,160 berarti standar di? 987 00:40:19,160 --> 00:40:19,900 Aku tidak. 988 00:40:19,900 --> 00:40:24,180 Aku berarti string, tapi ini karena, juga, string kata 989 00:40:24,180 --> 00:40:26,020 bahwa saya tetap menggunakan lisan sebenarnya 990 00:40:26,020 --> 00:40:27,240 tidak ada di C baik. 991 00:40:27,240 --> 00:40:29,470 Ini sesuatu yang kita akan menggunakan hanya untuk minggu pertama atau dua 992 00:40:29,470 --> 00:40:34,500 di sini, tapi ada dalam sebuah file yang bernama cs50.h. 993 00:40:34,500 --> 00:40:37,110 Jadi untuk saat ini, tahu bahwa ada perpustakaan ini lain bahwa 994 00:40:37,110 --> 00:40:39,330 Staf menulis, sehingga sudah menulis lebih baru daripada 995 00:40:39,330 --> 00:40:40,510 stdio.h. 996 00:40:40,510 --> 00:40:45,020 Tapi dalam cs50.h adalah definisi, sinonim dari 997 00:40:45,020 --> 00:40:48,310 macam, yang menciptakan string kata. 998 00:40:48,310 --> 00:40:50,890 >> Jadi sekarang biarkan aku kembali ke jendela terminal saya. 999 00:40:50,890 --> 00:40:53,200 Aku akan membersihkan kekacauan ini dengan Ctrl-L. Kami hanya akan 1000 00:40:53,200 --> 00:40:55,700 menghapus semuanya bersih, dan aku akan pergi ke depan dan membuat 1001 00:40:55,700 --> 00:40:57,860 halo lagi, Enter. 1002 00:40:57,860 --> 00:40:59,440 Jadi apa yang terjadi sekarang? 1003 00:40:59,440 --> 00:41:01,150 Sekarang semua kesalahan-kesalahan pergi. 1004 00:41:01,150 --> 00:41:02,230 Jadi apa yang telah saya benar-benar melakukan? 1005 00:41:02,230 --> 00:41:05,920 Aku baru saja mengajarkan komputer string ada, dan itu 1006 00:41:05,920 --> 00:41:07,890 dalam file bernama cs50.h. 1007 00:41:07,890 --> 00:41:10,930 Jadi berhenti mengeluh, karena sekarang Anda tahu di mana untuk menemukan 1008 00:41:10,930 --> 00:41:13,220 deklarasi yang fungsinya sehingga untuk berbicara. 1009 00:41:13,220 --> 00:41:15,200 Dimana itu ada di dunia. 1010 00:41:15,200 --> 00:41:18,820 >> Jadi sekarang aku akan pergi ke depan dan menjalankan halo. 1011 00:41:18,820 --> 00:41:22,300 Saya tampaknya memiliki infinite loop, terjadi apa-apa. 1012 00:41:25,530 --> 00:41:26,870 Jadi saya perlu mengetikkan sesuatu di sini, benar. 1013 00:41:26,870 --> 00:41:29,650 Baris pertama dari kode dalam program saya GetString. 1014 00:41:29,650 --> 00:41:31,750 Jadi itu benar-benar menunggu saya untuk mendapatkan string. 1015 00:41:31,750 --> 00:41:33,680 Jadi dalam arti bahwa ya, itu adalah infinite loop. 1016 00:41:33,680 --> 00:41:36,520 Rupanya di GetString adalah perilaku default yang kita 1017 00:41:36,520 --> 00:41:37,510 menulis - staf - 1018 00:41:37,510 --> 00:41:39,550 yang hanya mengatakan menunggu dan menunggu dan menunggu dan menunggu dan menunggu, 1019 00:41:39,550 --> 00:41:42,550 sampai pengguna memberikan string dengan mengetikkan sesuatu masuk 1020 00:41:42,550 --> 00:41:46,000 Jadi biarkan aku pergi ke depan dan ketik D-a-v - i-d, Enter. 1021 00:41:46,000 --> 00:41:47,420 Dan ada itu, halo David. 1022 00:41:47,420 --> 00:41:50,430 >> Sekarang hal ini tampak seperti itu hanya sandiwara? 1023 00:41:50,430 --> 00:41:52,810 Biarkan aku pergi ke depan dan ketik Tommy. 1024 00:41:52,810 --> 00:41:54,740 Masukkan, oke, tampaknya bekerja. 1025 00:41:54,740 --> 00:41:59,130 Bekerja untuk Rob, bekerja untuk Zamyla, bekerja untuk - oke. 1026 00:41:59,130 --> 00:42:01,000 Jadi itu akan bekerja, kemungkinan besar. 1027 00:42:01,000 --> 00:42:05,030 Jadi harus mencetak apa pun yang kita benar-benar memberikannya, 1028 00:42:05,030 --> 00:42:07,830 dan kita bisa menjadi sedikit sulit di sini. 1029 00:42:07,830 --> 00:42:12,130 Mari kita lihat jika kita melakukan sesuatu seperti halo. 1030 00:42:12,130 --> 00:42:18,000 Bisa pergi ke sini, mari kita lihat, copy, paste. 1031 00:42:18,000 --> 00:42:19,950 Aku tidak akan bisa paste yang berkali-kali di sini. 1032 00:42:19,950 --> 00:42:24,410 Tempel, oke, Shift + Ctrl + V. Jadi apa yang bisa 1033 00:42:24,410 --> 00:42:26,970 terjadi itu buruk di sini? 1034 00:42:26,970 --> 00:42:27,770 >> Oke, jadi, segfaults. 1035 00:42:27,770 --> 00:42:29,710 Jadi beberapa dari Anda dengan latar belakang sebelumnya akan tahu bahwa 1036 00:42:29,710 --> 00:42:32,710 pada umumnya, memberikan komputer banyak masukan saat mereka 1037 00:42:32,710 --> 00:42:36,140 mungkin tidak dimaksudkan untuk menerima nama yang panjang seperti ini - buruk 1038 00:42:36,140 --> 00:42:36,740 hal-hal terjadi. 1039 00:42:36,740 --> 00:42:39,230 Memang, dalam dunia web, juga, ini terjadi cukup sedikit, 1040 00:42:39,230 --> 00:42:41,000 dimana ketika Anda sedang merancang sebuah website, ketika Anda 1041 00:42:41,000 --> 00:42:43,850 merancang Facebook, Anda harus membuat keputusan sewenang-wenang up 1042 00:42:43,850 --> 00:42:45,370 depan, seperti berapa lama seseorang akan s 1043 00:42:45,370 --> 00:42:46,360 Facebook nama pengguna akan? 1044 00:42:46,360 --> 00:42:48,050 Atau berapa lama akan nama seseorang bisa? 1045 00:42:48,050 --> 00:42:50,110 Berapa lama akan nomor telepon seseorang menjadi dan sejenisnya. 1046 00:42:50,110 --> 00:42:53,580 Dan jika programmer membuat asumsi yang buruk, program istirahat 1047 00:42:53,580 --> 00:42:56,640 karena Anda mencoba memberi mereka lebih banyak output, input lebih 1048 00:42:56,640 --> 00:42:58,330 bukan, daripada mereka memiliki memori. 1049 00:42:58,330 --> 00:43:01,860 Atau RAM yang dialokasikan untuk itu, dan jadi jika sekarang saya tekan Enter, 1050 00:43:01,860 --> 00:43:04,640 program yang benar-benar bekerja, karena kami berada di perpustakaan 1051 00:43:04,640 --> 00:43:06,790 dan kita benar-benar diantisipasi kasus ini. 1052 00:43:06,790 --> 00:43:10,900 Tapi tidak diragukan lagi semester ini, Anda akan menulis setidaknya satu 1053 00:43:10,900 --> 00:43:13,280 program yang akan mengucapkan kata-kata. 1054 00:43:13,280 --> 00:43:16,520 Ingat ini minggu dari sekarang, mungkin dua hari dari sekarang. 1055 00:43:16,520 --> 00:43:18,760 Kesalahan segmentasi adalah hal yang buruk. 1056 00:43:18,760 --> 00:43:21,920 Ini akan merujuk pada sesuatu yang Anda lakukan bahwa komputer 1057 00:43:21,920 --> 00:43:23,310 tidak mengantisipasi. 1058 00:43:23,310 --> 00:43:25,810 Dan dalam hal ini, Anda, programmer, tidak mengantisipasi. 1059 00:43:25,810 --> 00:43:27,720 Banyak seperti apa ini tumpukan kaus kaki, ada berbagai 1060 00:43:27,720 --> 00:43:29,520 kasus sudut kita bisa temui. 1061 00:43:29,520 --> 00:43:32,340 Demikian pula dalam program jika Anda tidak mengantisipasi berapa lama 1062 00:43:32,340 --> 00:43:33,310 Nama seseorang akan. 1063 00:43:33,310 --> 00:43:35,890 Atau bagaimana jika saya memiliki pengguna berbahaya, dan nya nama 1064 00:43:35,890 --> 00:43:37,230 sebenarnya cukup singkat, tapi mereka hanya mencoba 1065 00:43:37,230 --> 00:43:37,960 main-main dengan saya? 1066 00:43:37,960 --> 00:43:40,490 Apa yang akan menjadi perilaku program saya? 1067 00:43:40,490 --> 00:43:43,930 Nah, dalam hal ini, sesuatu yang mungkin benar-benar kecelakaan. 1068 00:43:43,930 --> 00:43:44,750 >> Jadi mari kita lakukan ini. 1069 00:43:44,750 --> 00:43:46,860 Dalam 90 menit, ini adalah waktu yang lama sekali 1070 00:43:46,860 --> 00:43:47,780 untuk melakukan ilmu komputer. 1071 00:43:47,780 --> 00:43:49,550 Mengapa kita tidak masuk ke dalam kebiasaan mengambil lima menit 1072 00:43:49,550 --> 00:43:51,520 istirahat di sini, dan ketika kita kembali, kita akan menyelam ke dalam beberapa 1073 00:43:51,520 --> 00:43:53,430 program yang lebih kompleks dan menarik? 1074 00:43:53,430 --> 00:43:54,680 Lima menit. 1075 00:43:56,910 --> 00:43:58,160 >> Baiklah. 1076 00:44:01,138 --> 00:44:02,780 Jadi komentar yang cepat. 1077 00:44:02,780 --> 00:44:05,590 Saya diberitahu bahwa meskipun ini adalah pada layar sebelumnya, apa yang 1078 00:44:05,590 --> 00:44:08,880 keluar dari mulutku cs50.net/rsvp. 1079 00:44:08,880 --> 00:44:11,670 Ini benar. cs50.net/lunch. 1080 00:44:11,670 --> 00:44:16,030 Jadi sekarang Anda dapat mencoba untuk RSVPing ini di / makan siang. 1081 00:44:16,030 --> 00:44:16,980 Tapi mari kita lakukan ini sekarang. 1082 00:44:16,980 --> 00:44:20,150 Jadi ini telah super cepat, super baru untuk banyak orang. 1083 00:44:20,150 --> 00:44:21,560 Old topi untuk beberapa orang. 1084 00:44:21,560 --> 00:44:24,930 Jadi mari kita mundur untuk sesaat, dan melihat bagaimana kita harus 1085 00:44:24,930 --> 00:44:29,350 output ini hello world beberapa saat yang lalu. 1086 00:44:29,350 --> 00:44:31,780 >> Jadi pertama, ada ini Appliance CS50. 1087 00:44:31,780 --> 00:44:34,270 Sekali lagi, software, masalah set 1 akan memberitahu 1088 00:44:34,270 --> 00:44:36,610 Anda bagaimana untuk men-download, di mana untuk men-download, apa yang harus mengklik 1089 00:44:36,610 --> 00:44:37,430 dan sebagainya. 1090 00:44:37,430 --> 00:44:39,670 Dan kemudian setelah Anda mengikuti instruksi tersebut, Anda akan dapat 1091 00:44:39,670 --> 00:44:42,840 untuk memaksimalkan jendela Anda, dan Anda Mac atau PC akan terlihat 1092 00:44:42,840 --> 00:44:43,910 sedikit sesuatu seperti ini. 1093 00:44:43,910 --> 00:44:47,170 Sebuah latar belakang hitam, folder rumah di bagian atas di mana semua 1094 00:44:47,170 --> 00:44:49,850 file Anda pergi, tempat sampah di bagian kiri atas, 1095 00:44:49,850 --> 00:44:51,130 menu di bagian bawah. 1096 00:44:51,130 --> 00:44:54,010 Jadi sekali lagi, cukup memiliki semangat yang sama Mac OS atau Windows, 1097 00:44:54,010 --> 00:44:56,040 meskipun terjadi menjadi Linux. 1098 00:44:56,040 --> 00:44:58,120 Jadi apa yang kita lakukan selanjutnya? 1099 00:44:58,120 --> 00:44:59,580 Nah, kami mulai menulis program. 1100 00:44:59,580 --> 00:45:02,260 Dan ingat dari minggu lalu bahwa semua yang diperlukan untuk menulis 1101 00:45:02,260 --> 00:45:04,970 Program adalah editor teks sederhana, 1102 00:45:04,970 --> 00:45:06,550 seperti Notepad atau TextEdit. 1103 00:45:06,550 --> 00:45:08,360 Terus terang, Anda bahkan dapat menggunakan Microsoft Word. 1104 00:45:08,360 --> 00:45:11,170 Tapi hal-hal yang buruk pada akhirnya akan terjadi, karena itu sangat 1105 00:45:11,170 --> 00:45:13,930 berat tangan solusi untuk menulis sebuah program, itu akan ditambah 1106 00:45:13,930 --> 00:45:15,400 menyimpannya dalam format file yang salah. 1107 00:45:15,400 --> 00:45:18,150 Tapi itu hanya editor teks, pengolah kata, adalah semua itu 1108 00:45:18,150 --> 00:45:19,390 diperlukan untuk menulis program. 1109 00:45:19,390 --> 00:45:23,420 >> Jadi dalam Appliance CS50, kita bisa melakukan hal ini dalam satu cara yang sederhana. 1110 00:45:23,420 --> 00:45:25,580 Kami hanya bisa klik pada ikon ini di sebelah kiri bawah. 1111 00:45:25,580 --> 00:45:28,790 Dan lagi, masalah set 1 akan memberitahu Anda tentang hal ini, dan voila - 1112 00:45:28,790 --> 00:45:31,210 Anda mendapatkan antarmuka hitam dan putih di mana kita dapat mulai 1113 00:45:31,210 --> 00:45:32,160 menulis kode. 1114 00:45:32,160 --> 00:45:34,960 Jadi mari kita mulai menulis sebuah program super sederhana lagi. 1115 00:45:34,960 --> 00:45:38,890 Aku akan pergi ke File, Save, dan aku akan menelepon 1116 00:45:38,890 --> 00:45:42,870 ini, katakanlah, hello2.c. 1117 00:45:42,870 --> 00:45:45,410 Dan aku hanya mengatakan dengan mengklik jharvard, menaruhnya 1118 00:45:45,410 --> 00:45:46,750 di direktori home-nya, saya tidak benar-benar peduli 1119 00:45:46,750 --> 00:45:47,980 tempat yang satu ini pergi. 1120 00:45:47,980 --> 00:45:49,090 Dan kemudian Simpan. 1121 00:45:49,090 --> 00:45:50,880 Dan sekarang aku bisa mulai menulis program saya. 1122 00:45:50,880 --> 00:45:53,560 Dan saya ingat dari sebelumnya bahwa saya harus menulis int 1123 00:45:53,560 --> 00:45:55,400 main (void). 1124 00:45:55,400 --> 00:45:57,000 Zoom in pada kiri atas. 1125 00:45:57,000 --> 00:46:02,670 Dan kemudian saya ingin mengatakan printf, mengambil dua. 1126 00:46:02,670 --> 00:46:05,690 Dan sekarang kutipan, baris baru dekat, tutup 1127 00:46:05,690 --> 00:46:07,820 kurung, koma. 1128 00:46:07,820 --> 00:46:10,560 Dan kemudian saya pergi ke sini untuk jendela terminal saya itu 1129 00:46:10,560 --> 00:46:12,840 tertanam di gedit, hanya untuk kenyamanan. 1130 00:46:12,840 --> 00:46:15,200 Dan aku akan pergi ke depan dan menulis membuat halo, tapi tidak 1131 00:46:15,200 --> 00:46:17,500 halo saja, hello2. 1132 00:46:17,500 --> 00:46:20,490 >> Jadi file saya disebut hello2.c. Oleh karena itu saya file 1133 00:46:20,490 --> 00:46:23,510 harus disebut hello2, dalam kasus ini. 1134 00:46:23,510 --> 00:46:26,490 Sialan, apa yang saya lakukan salah? 1135 00:46:26,490 --> 00:46:29,490 Baiklah, jadi aku jelas dihilangkan baris, jika Anda ingat apa 1136 00:46:29,490 --> 00:46:31,020 program sebelumnya terlihat seperti. 1137 00:46:31,020 --> 00:46:32,480 Tapi mari kita lihat apakah kita tidak bisa menggoda ini terpisah. 1138 00:46:32,480 --> 00:46:35,310 Sayangnya, kebanyakan orang yang menulis program dengan mana 1139 00:46:35,310 --> 00:46:38,820 kita menulis program tidak menyederhanakan hal semua yang baik. 1140 00:46:38,820 --> 00:46:41,520 Jadi kita harus jenis skim atas apa yang tidak cukup membuat 1141 00:46:41,520 --> 00:46:44,050 merasakan di sini dan melihat apakah kita bisa mencari tahu apa yang salah. 1142 00:46:44,050 --> 00:46:46,700 Baris pertama ada mengatakan secara implisit menyatakan C 1143 00:46:46,700 --> 00:46:49,310 perpustakaan printf dengan int tipe fungsi. 1144 00:46:49,310 --> 00:46:51,210 OK, saya mengerti bagian dari itu. 1145 00:46:51,210 --> 00:46:54,570 Tapi tampaknya menyinggung fakta bahwa saya menggunakan printf 1146 00:46:54,570 --> 00:46:55,700 salah, entah bagaimana. 1147 00:46:55,700 --> 00:46:56,930 Dan arti apa itu salah? 1148 00:46:56,930 --> 00:46:59,970 Aku hanya tidak mengajarkan komputer bahwa itu dalam sebuah file 1149 00:46:59,970 --> 00:47:01,420 disebut stdio.h. 1150 00:47:01,420 --> 00:47:04,120 Sekarang aku hanya perlu hanya menghafal sekarang bahwa printf adalah 1151 00:47:04,120 --> 00:47:06,540 di stdio.h, dan memang akan ada lainnya 1152 00:47:06,540 --> 00:47:08,900 fungsi dalam file yang sama bahwa kita akan terbiasa. 1153 00:47:08,900 --> 00:47:12,490 >> Jadi sekarang biarkan aku pergi ke depan dan tekan Ctrl-L untuk hanya jelas bahwa 1154 00:47:12,490 --> 00:47:16,050 pergi, jalankan kembali membuat hello2, dan voila. 1155 00:47:16,050 --> 00:47:19,490 Dan perintah ini lagi, lebih kompleks daripada yang kita akan menjelaskan untuk 1156 00:47:19,490 --> 00:47:20,520 saat ini tujuan. 1157 00:47:20,520 --> 00:47:23,570 Tapi itu dijalankan dentang, dan dentang mengambil kode sumber dan 1158 00:47:23,570 --> 00:47:24,870 meludah keluar 0s dan 1s. 1159 00:47:24,870 --> 00:47:28,610 Dan orang-orang 0s dan 1s dalam hal ini disebut apa? 1160 00:47:28,610 --> 00:47:29,470 Oke, obyek kode. 1161 00:47:29,470 --> 00:47:32,210 Dan file yang mereka berada di disebut, sehingga, 1162 00:47:32,210 --> 00:47:33,820 hello2, dalam kasus ini. 1163 00:47:33,820 --> 00:47:37,040 Karena file teks saya hello2.c, Enter. 1164 00:47:37,040 --> 00:47:39,820 Dan sekarang aku telah mengambil dua tanda seru, tanda seru 1165 00:47:39,820 --> 00:47:41,880 titik, tanda seru. 1166 00:47:41,880 --> 00:47:45,430 Baiklah, jadi kita miliki sekarang kemampuan untuk mendapatkan string, 1167 00:47:45,430 --> 00:47:46,280 rupanya. 1168 00:47:46,280 --> 00:47:48,190 Nah, apa lagi yang bisa kita dapatkan dari pengguna? 1169 00:47:48,190 --> 00:47:51,010 >> Nah di perpustakaan CS50, ada fungsi lain yang 1170 00:47:51,010 --> 00:47:53,300 akan menyederhanakan hidup kita dalam beberapa hari pertama. 1171 00:47:53,300 --> 00:47:56,350 Getchar, GetDouble, GetFloat, GetInt, 1172 00:47:56,350 --> 00:47:57,290 GetLongLong, GetString. 1173 00:47:57,290 --> 00:47:59,550 Nah, mari kita memetik off termudah pertama ini. 1174 00:47:59,550 --> 00:48:01,430 GetString harfiah melakukan itu. 1175 00:48:01,430 --> 00:48:04,210 Ini hanya duduk di sana, menunggu pengguna untuk mengetik sesuatu di, 1176 00:48:04,210 --> 00:48:07,170 dan segera setelah aku mengetik sesuatu di dalam dan tekan Enter, maka 1177 00:48:07,170 --> 00:48:08,860 melakukan sesuatu dengan nilai tersebut. 1178 00:48:08,860 --> 00:48:11,700 Jadi mari kita kembali ke contoh itu untuk melihat apa 1179 00:48:11,700 --> 00:48:12,950 GetString lakukan. 1180 00:48:12,950 --> 00:48:17,445 Biarkan aku pergi ke depan dan terbuka di gedit, hello.c, dan mengingat 1181 00:48:17,445 --> 00:48:20,590 yang tepat sebelum istirahat, ini adalah di mana kita tinggalkan. 1182 00:48:20,590 --> 00:48:23,240 >> Jadi mari kita sekarang ini menggoda terpisah dalam sedikit lebih detail. 1183 00:48:23,240 --> 00:48:27,190 Jadi on line 6, ada dua hal 1184 00:48:27,190 --> 00:48:28,450 terjadi saat ini. 1185 00:48:28,450 --> 00:48:32,630 Tanda sama yang memisahkan babak pertama dan babak kedua. 1186 00:48:32,630 --> 00:48:34,670 Jadi di sisi kiri tanda sama, kita 1187 00:48:34,670 --> 00:48:35,580 mengatakan string s. 1188 00:48:35,580 --> 00:48:37,580 Dan kemudian, istilah awam saja, apa string s 1189 00:48:37,580 --> 00:48:41,040 lakukan, menurut Anda? 1190 00:48:41,040 --> 00:48:42,990 Ini menciptakan apa? 1191 00:48:42,990 --> 00:48:44,930 Jadi itu membuat string disebut s. 1192 00:48:44,930 --> 00:48:46,370 Sekarang apa yang benar-benar berarti? 1193 00:48:46,370 --> 00:48:51,540 Nah, itu memesan ruang untuk string yang disebut s. 1194 00:48:51,540 --> 00:48:52,490 Itu tidak benar. 1195 00:48:52,490 --> 00:48:53,120 Apa ini lakukan? 1196 00:48:53,120 --> 00:48:55,400 Komputer Nah, seperti yang Anda tahu, memiliki hard drive, yang mana 1197 00:48:55,400 --> 00:48:56,300 file Anda disimpan. 1198 00:48:56,300 --> 00:48:59,100 Komputer memiliki RAM, dan di sanalah program yang dimuat 1199 00:48:59,100 --> 00:49:00,240 saat mereka berjalan. 1200 00:49:00,240 --> 00:49:02,470 Jadi, ketika Anda mengklik dua kali ikon Microsoft Word dan membuka 1201 00:49:02,470 --> 00:49:06,380 up, Microsoft Word sedang berjalan, sehingga untuk berbicara, dalam RAM, yang 1202 00:49:06,380 --> 00:49:08,160 bagian elektronik dari komputer Anda. 1203 00:49:08,160 --> 00:49:10,660 Bukan fisik bagian, mekanik yang berputar, di mana 1204 00:49:10,660 --> 00:49:12,640 Data umumnya disimpan jangka panjang. 1205 00:49:12,640 --> 00:49:15,810 Jadi string s cukup banyak memberitahu komputer memberi saya 1206 00:49:15,810 --> 00:49:18,150 cukup RAM sesuai string. 1207 00:49:18,150 --> 00:49:20,450 Nah, itu sedikit penyederhanaan, karena 1208 00:49:20,450 --> 00:49:22,300 seberapa besar adalah string akan? 1209 00:49:22,300 --> 00:49:24,410 Nah kita benar-benar belum tahu, sehingga dalam minggu-minggu yang akan datang 1210 00:49:24,410 --> 00:49:27,290 kita benar-benar akan menarik kembali lapisan yang string dan 1211 00:49:27,290 --> 00:49:28,510 kami akan memberitahu Anda apa sebenarnya. 1212 00:49:28,510 --> 00:49:31,050 String, untuk saat ini, hanya penyederhanaan baik dari dunia kita. 1213 00:49:31,050 --> 00:49:35,700 Tapi string s menyatakan string disebut s, untuk saat ini. 1214 00:49:35,700 --> 00:49:36,520 Mendeklarasikan string. 1215 00:49:36,520 --> 00:49:39,310 Ini cadangan beberapa ruang di RAM untuk string pengguna 1216 00:49:39,310 --> 00:49:40,150 sekitar untuk mengetik. 1217 00:49:40,150 --> 00:49:41,840 >> Sekarang mari kita lihat di sebelah kanan tanda sama. 1218 00:49:41,840 --> 00:49:44,110 Jadi dikatakan GetString (). 1219 00:49:44,110 --> 00:49:45,070 Dan kewarasan sedikit memeriksa. 1220 00:49:45,070 --> 00:49:47,940 Fakta bahwa tidak ada dalam tanda kurung 1221 00:49:47,940 --> 00:49:50,810 menyiratkan bagaimana GetString? 1222 00:49:50,810 --> 00:49:52,180 Dibutuhkan tanpa argumen. 1223 00:49:52,180 --> 00:49:55,290 Artinya, Anda tidak bisa mempengaruhi perilaku dengan cara apapun. 1224 00:49:55,290 --> 00:49:58,940 Setiap kali Anda menggunakannya, maka akan mendapatkan string dan hanya itu. 1225 00:49:58,940 --> 00:50:02,210 Sebaliknya, printf, semoga perilakunya tidak 1226 00:50:02,210 --> 00:50:03,010 berubah setiap waktu. 1227 00:50:03,010 --> 00:50:05,230 Jika tidak, itu adalah fungsi pencetakan cukup berguna jika 1228 00:50:05,230 --> 00:50:06,480 itu melakukan hal yang sama. 1229 00:50:06,480 --> 00:50:07,970 Jika selalu mencetak David atau sesuatu 1230 00:50:07,970 --> 00:50:09,500 sewenang-wenang sepanjang waktu. 1231 00:50:09,500 --> 00:50:11,540 Jadi printf masuk akal untuk memiliki argumen. 1232 00:50:11,540 --> 00:50:14,240 GetString tidak benar-benar membutuhkan sebuah argumen, karena saya ingin 1233 00:50:14,240 --> 00:50:16,700 untuk mendapatkan string dari user dan itu adalah pengguna yang akan 1234 00:50:16,700 --> 00:50:19,580 untuk memasok dinamika dengan mengetik dalam huruf yang berbeda 1235 00:50:19,580 --> 00:50:20,850 setiap kali di keyboard. 1236 00:50:20,850 --> 00:50:23,140 >> Jadi apa yang GetString pada akhirnya? 1237 00:50:23,140 --> 00:50:25,080 Menganggapnya sebagai kotak hitam kecil. 1238 00:50:25,080 --> 00:50:29,340 Dan kotak hitam ini mengambil input tidak ada, tetapi ketika Anda menggedor 1239 00:50:29,340 --> 00:50:33,240 itu, meludah keluar string yang pengguna telah diketik masuk 1240 00:50:33,240 --> 00:50:36,660 Dan fakta bahwa ada tanda yang sama ada berarti mengambil 1241 00:50:36,660 --> 00:50:39,890 apa yang dimuntahkan di sebelah kanan dan menyimpannya di dalam 1242 00:50:39,890 --> 00:50:41,390 apa yang ada di sebelah kiri. 1243 00:50:41,390 --> 00:50:43,470 Jadi tanda sama di sini, itu benar-benar tidak berarti 1244 00:50:43,470 --> 00:50:46,490 kesetaraan, agak teknis berarti tugas. 1245 00:50:46,490 --> 00:50:49,330 Mengambil nilai di sebelah kanan, dan meletakkannya di 1246 00:50:49,330 --> 00:50:51,050 variabel di sebelah kiri. 1247 00:50:51,050 --> 00:50:52,820 Jadi itu saja yang terjadi di sana. 1248 00:50:52,820 --> 00:50:55,640 >> Sekarang di baris 7, kita memanggil printf. 1249 00:50:55,640 --> 00:50:58,170 Jadi printf diharapkan semakin sedikit membosankan sekarang. 1250 00:50:58,170 --> 00:50:59,530 Jadi mencetak string diformat. 1251 00:50:59,530 --> 00:51:00,440 Apa string? 1252 00:51:00,440 --> 00:51:05,460 Print out, "h-e-l-l-o,% s 1253 00:51:05,460 --> 00:51:07,840 \ N! ". 1254 00:51:07,840 --> 00:51:10,470 Baiklah, jadi apa yang saya ingin plug-in untuk% s? 1255 00:51:10,470 --> 00:51:12,960 Secara harfiah, apa pun yang disimpan dalam s. 1256 00:51:12,960 --> 00:51:15,570 Jadi dalam hal ini, cek kewarasan sedikit, berapa banyak argumen tidak 1257 00:51:15,570 --> 00:51:16,820 printf ambil? 1258 00:51:19,860 --> 00:51:21,110 Oke, saya mendengar satu. 1259 00:51:23,840 --> 00:51:26,330 Aku mendengar satu lagi. 1260 00:51:26,330 --> 00:51:27,730 Dua, saya mendengar dua. 1261 00:51:27,730 --> 00:51:29,920 Dan bagaimana tiga? 1262 00:51:29,920 --> 00:51:30,450 Oke, tiga? 1263 00:51:30,450 --> 00:51:30,930 Sangat baik. 1264 00:51:30,930 --> 00:51:33,170 Tiga kemungkinan jawaban, hanya salah satu dari mereka adalah benar. 1265 00:51:33,170 --> 00:51:36,390 Jadi argumen lagi mempengaruhi perilaku fungsi. 1266 00:51:36,390 --> 00:51:39,380 Di masa lalu, printf tidak hanya mengambil satu argumen. 1267 00:51:39,380 --> 00:51:42,260 "Halo dunia" adalah argumen tunggal. 1268 00:51:42,260 --> 00:51:45,190 Namun, sekarang, perhatikan di mana koma ini. 1269 00:51:45,190 --> 00:51:49,600 Koma ini berada di luar kutipan / tanda kutip, yang berarti 1270 00:51:49,600 --> 00:51:52,170 hey printf, inilah argumen kedua. 1271 00:51:52,170 --> 00:51:54,240 >> Jadi koma dalam bahasa pemrograman yang paling 1272 00:51:54,240 --> 00:51:57,300 terpisah beberapa argumen. 1273 00:51:57,300 --> 00:51:59,600 Jadi jawabannya di sini pasti tidak salah satu, karena 1274 00:51:59,600 --> 00:52:00,390 ada koma ini. 1275 00:52:00,390 --> 00:52:03,680 Jadi minimal, printf rupanya mengambil dua 1276 00:52:03,680 --> 00:52:04,940 argumen saat ini. 1277 00:52:04,940 --> 00:52:07,050 Tapi kesempatan untuk pertanyaan trik di sini adalah apa yang 1278 00:52:07,050 --> 00:52:07,990 tentang koma ini? 1279 00:52:07,990 --> 00:52:11,260 Apakah ini menyiratkan bahwa sebenarnya ada tiga argumen? 1280 00:52:11,260 --> 00:52:13,820 Hal ini, ini, dan ini. 1281 00:52:13,820 --> 00:52:18,820 Jadi tidak ada, karena koma yang dalam tanda kutip, yang 1282 00:52:18,820 --> 00:52:20,890 berarti itu benar-benar hanya sebuah estetika bahasa Inggris. 1283 00:52:20,890 --> 00:52:23,180 Ini tidak ada hubungannya dengan jumlah 1284 00:52:23,180 --> 00:52:24,890 argumen dalam program ini. 1285 00:52:24,890 --> 00:52:27,670 Jadi koma ini berada di luar tanda kutip ganda. 1286 00:52:27,670 --> 00:52:28,850 Dan kemudian kembali 0. 1287 00:52:28,850 --> 00:52:30,980 Hanya semacam Untuk sekarang mari kita dari mengambil satu ini pada iman untuk 1288 00:52:30,980 --> 00:52:34,460 hari, dan hanya tahu bahwa ketika fungsi selesai mengeksekusi 1289 00:52:34,460 --> 00:52:37,950 baris kode, mereka umumnya harus mengembalikan beberapa nilai. 1290 00:52:37,950 --> 00:52:42,010 Dalam kasus ini, hanya karena main harus mengembalikan int, 1291 00:52:42,010 --> 00:52:44,320 itu hanya cara bahasa C bekerja. 1292 00:52:44,320 --> 00:52:47,040 >> Jadi karena ada yang tidak beres, terasa seperti program ini 1293 00:52:47,040 --> 00:52:49,960 baik, saya hanya sulit dikodekan dalam return 0. 1294 00:52:49,960 --> 00:52:52,980 Tapi sebaliknya, dan aku akan menulis ini dalam kode pseudo 1295 00:52:52,980 --> 00:52:55,020 sekarang, seperti Yusuf lakukan ketika kita melakukan kaus kaki 1296 00:52:55,020 --> 00:52:56,220 Misalnya pekan lalu. 1297 00:52:56,220 --> 00:53:00,440 Jika ada sesuatu yang tidak beres - ini bukan kode aktual - pergi 1298 00:53:00,440 --> 00:53:06,570 salah, kemudian kembali, katakanlah, 1. 1299 00:53:06,570 --> 00:53:08,770 Lain kembali 0. 1300 00:53:08,770 --> 00:53:10,070 Jadi ini adalah di mana kita akan dengan ini. 1301 00:53:10,070 --> 00:53:12,090 Hal ini tidak aktual kode C, hanya pseudocode. 1302 00:53:12,090 --> 00:53:14,010 Tapi ini adalah bagaimana Anda bisa kembali 1303 00:53:14,010 --> 00:53:15,580 berbeda yang mungkin nilai-nilai. 1304 00:53:15,580 --> 00:53:19,520 Tapi untuk sekarang aku hanya akan pergi ke depan dan kembali 0. 1305 00:53:19,520 --> 00:53:24,410 Baiklah, pertanyaan sejauh pada sintaks, fungsi, 1306 00:53:24,410 --> 00:53:25,000 atau sejenisnya? 1307 00:53:25,000 --> 00:53:26,280 Ya, di belakang. 1308 00:53:26,280 --> 00:53:27,530 >> HADIRIN: [Tak terdengar] 1309 00:53:30,510 --> 00:53:32,210 DAVID Malan: Bisakah Anda berbicara sedikit lebih keras? 1310 00:53:32,210 --> 00:53:34,325 Mengapa ini 0 kembali program, dan? 1311 00:53:34,325 --> 00:53:35,575 HADIRIN: [Tak terdengar] 1312 00:53:39,910 --> 00:53:43,450 DAVID Malan: Oh, itu karena aku malas, maaf. 1313 00:53:43,450 --> 00:53:48,290 Tidak ada respon akademik yang baik, kembali 0. 1314 00:53:48,290 --> 00:53:52,690 Saya bisa seperti ini menyelamatkan, dengan mengatakan secara teknis C, jika utama 1315 00:53:52,690 --> 00:53:55,900 tidak secara eksplisit mengembalikan nilai, 0 akan dikembalikan 1316 00:53:55,900 --> 00:53:57,730 secara otomatis untuk Anda. 1317 00:53:57,730 --> 00:54:00,290 Mana yang benar, saya tidak hanya menutupi. 1318 00:54:00,290 --> 00:54:03,270 Tapi, saya harus melakukannya dengan cara ini. 1319 00:54:03,270 --> 00:54:05,250 Tidak ada takeaway menarik daripada yang lain selain kesalahan saya. 1320 00:54:05,250 --> 00:54:06,170 Ya? 1321 00:54:06,170 --> 00:54:08,470 >> HADIRIN: Biasanya ketika anda mengetik dalam kekosongan, itu berarti Anda 1322 00:54:08,470 --> 00:54:10,770 tidak kembali sesuatu. 1323 00:54:10,770 --> 00:54:11,420 DAVID Malan: Benar. 1324 00:54:11,420 --> 00:54:15,800 Jika sebaliknya, Anda tentukan sebelum nama fungsi, untuk 1325 00:54:15,800 --> 00:54:18,590 Misalnya di sini, batal, maka fungsi 1326 00:54:18,590 --> 00:54:20,480 tidak kembali apa-apa. 1327 00:54:20,480 --> 00:54:25,210 Dan karena itu saya hanya akan mengatakan, pengembalian atau tidak sama sekali, 1328 00:54:25,210 --> 00:54:26,730 dan itu akan konsisten. 1329 00:54:26,730 --> 00:54:27,750 Dan kami akan kembali untuk itu. 1330 00:54:27,750 --> 00:54:31,030 Dan hanya FYI, salah satu tangkapan dengan belajar 1331 00:54:31,030 --> 00:54:33,450 pemrograman di dunia yang memiliki ratusan buku dan 1332 00:54:33,450 --> 00:54:36,180 ratusan website di luar sana adalah Anda selalu akan 1333 00:54:36,180 --> 00:54:38,220 melihat sintaks yang berbeda dalam buku-buku yang berbeda 1334 00:54:38,220 --> 00:54:40,220 oleh orang yang berbeda. 1335 00:54:40,220 --> 00:54:42,100 Menyadari bahwa kita akan melakukan yang terbaik dalam bagian dan kuliah untuk menjadi 1336 00:54:42,100 --> 00:54:42,960 konsisten. 1337 00:54:42,960 --> 00:54:46,660 Tapi kadang-kadang Anda akan melihat sintaks bertentangan. 1338 00:54:46,660 --> 00:54:48,540 Jadi setiap kali ragu, tanyakan saja. 1339 00:54:48,540 --> 00:54:51,100 Dan secara umum, kami akan berhati-hati dalam ceramah dan bagian untuk 1340 00:54:51,100 --> 00:54:53,710 hampir selalu hadir dalam cara yang benar. 1341 00:54:53,710 --> 00:54:56,070 Dan saya katakan hampir selalu, karena kasus di titik. 1342 00:54:56,070 --> 00:54:56,860 Pertanyaan lain? 1343 00:54:56,860 --> 00:55:01,590 >> HADIRIN: Apakah% s ada di luar alat? 1344 00:55:01,590 --> 00:55:03,710 DAVID Malan: Apakah% s ada di luar alat? 1345 00:55:03,710 --> 00:55:04,180 Ya. 1346 00:55:04,180 --> 00:55:07,760 Jadi% s hubungannya dengan C. Fakta bahwa kita menggunakannya dalam 1347 00:55:07,760 --> 00:55:10,290 alat fundamental tidak ada hubungannya dengan 1348 00:55:10,290 --> 00:55:12,080 fitur bahasa yang kita gunakan. 1349 00:55:12,080 --> 00:55:15,990 Memang, pekan lalu ketika kami menggunakan Mac saya, saya menulis 1350 00:55:15,990 --> 00:55:17,160 C kode pada Mac saya. 1351 00:55:17,160 --> 00:55:20,020 Saya bisa menggunakan s% pada Mac saya, dan Anda bisa menggunakannya pada 1352 00:55:20,020 --> 00:55:22,400 Anda komputer Windows jika Anda menginstal compiler, seperti 1353 00:55:22,400 --> 00:55:24,070 Visual Studio dari Microsoft. 1354 00:55:24,070 --> 00:55:24,990 Jadi% s. 1355 00:55:24,990 --> 00:55:27,860 Segala sesuatu yang kita lakukan dalam jendela ini saat ini harus 1356 00:55:27,860 --> 00:55:31,140 lakukan dengan apa-apa C. Dan secara fundamental harus dilakukan dengan 1357 00:55:31,140 --> 00:55:33,450 sistem operasi yang bersangkutan. 1358 00:55:33,450 --> 00:55:35,900 Sebaliknya, hitam dan putih jendela terminal - ketika 1359 00:55:35,900 --> 00:55:40,160 Aku mengetik hal-hal seperti ls, dan rm, dan cd - 1360 00:55:40,160 --> 00:55:42,020 yang ada hubungannya dengan sistem operasi dan 1361 00:55:42,020 --> 00:55:43,562 menavigasi di sekitar. 1362 00:55:43,562 --> 00:55:44,546 Ya. 1363 00:55:44,546 --> 00:55:46,520 HADIRIN: Aku berarti perpustakaan, perpustakaan CS50. 1364 00:55:46,520 --> 00:55:49,960 DAVID Malan: Oke, jadi jika Anda berarti string kata kunci, bahwa 1365 00:55:49,960 --> 00:55:52,460 hanya ada di perpustakaan CS50, benar. 1366 00:55:52,460 --> 00:55:55,350 Itu tidak ada di C itu sendiri, dan memang di beberapa 1367 00:55:55,350 --> 00:55:58,220 dari minggu kami akan membuang perpustakaan CS50 dan mulai 1368 00:55:58,220 --> 00:56:02,290 melakukan hal-hal dari awal sendiri, sehingga untuk berbicara. 1369 00:56:02,290 --> 00:56:02,940 Pertanyaan lain? 1370 00:56:02,940 --> 00:56:04,577 Ya. 1371 00:56:04,577 --> 00:56:05,827 >> HADIRIN: [Tak terdengar] 1372 00:56:09,470 --> 00:56:10,160 DAVID Malan: Pertanyaan yang bagus. 1373 00:56:10,160 --> 00:56:11,720 Apakah kasus perintah sensitif? 1374 00:56:11,720 --> 00:56:13,710 Dan biarkan aku membuat perbedaan di sini. 1375 00:56:13,710 --> 00:56:15,840 Jadi perintah umumnya hal yang kita akan menulis di 1376 00:56:15,840 --> 00:56:17,940 bawah jendela, di jendela terminal. 1377 00:56:17,940 --> 00:56:21,770 Apa pun di sini akan pernyataan atau kode C. 1378 00:56:21,770 --> 00:56:24,490 Tapi dalam kedua kasus, jawabannya adalah sama, ya. 1379 00:56:24,490 --> 00:56:27,800 Kedua lingkungan, C kode di bagian atas dan 1380 00:56:27,800 --> 00:56:29,910 sistem operasi baris perintah di 1381 00:56:29,910 --> 00:56:31,440 bawah, bersifat case sensitif. 1382 00:56:31,440 --> 00:56:33,830 Jadi, Anda harus memanfaatkan GetString dengan modal G, 1383 00:56:33,830 --> 00:56:37,050 modal S. Anda harus menulis printf dalam huruf kecil semua. 1384 00:56:37,050 --> 00:56:39,520 Anda harus mengetikkan ls dalam huruf kecil semua. 1385 00:56:39,520 --> 00:56:43,260 Jadi di hampir setiap situasi semester ini, kasus akan, 1386 00:56:43,260 --> 00:56:44,820 Bahkan, hal. 1387 00:56:44,820 --> 00:56:46,148 Ya. 1388 00:56:46,148 --> 00:56:47,398 >> HADIRIN: [Tak terdengar] 1389 00:56:54,770 --> 00:56:56,480 DAVID Malan: Ah, jadi apa-apa, bagaimana jika kita memiliki file 1390 00:56:56,480 --> 00:56:57,840 disebut hello.d. 1391 00:56:57,840 --> 00:57:00,090 Jadi ternyata D adalah bahasa pemrograman. 1392 00:57:00,090 --> 00:57:02,790 Dan sehingga dalam beberapa kasus, kita benar-benar bisa menulis sebuah program dalam 1393 00:57:02,790 --> 00:57:06,190 file itu dan telah dikompilasi dengan cara itu. 1394 00:57:06,190 --> 00:57:09,090 Kita bisa, dan benar-benar, jawaban singkatnya adalah, saya tidak tahu. 1395 00:57:09,090 --> 00:57:10,440 Jadi kita akan melakukan hal ini. 1396 00:57:10,440 --> 00:57:13,040 Biarkan aku pergi ke depan dan membuat file baru. 1397 00:57:13,040 --> 00:57:15,580 Dan spin di sini, jujur ​​pada umumnya, adalah setiap kali keraguan 1398 00:57:15,580 --> 00:57:18,130 semester ini, dan Anda memiliki alat atau komputer 1399 00:57:18,130 --> 00:57:20,030 buka, pergi ke depan dan mencoba sesuatu. 1400 00:57:20,030 --> 00:57:23,740 Jadi aku akan menyimpan file bernama hello.d. 1401 00:57:23,740 --> 00:57:25,010 Simpan ini. 1402 00:57:25,010 --> 00:57:29,070 Dan aku akan jalankan make halo Enter. 1403 00:57:29,070 --> 00:57:31,660 Tampaknya untuk menyimpulkan bahwa c adalah lebih mungkin 1404 00:57:31,660 --> 00:57:35,920 dibandingkan d, dalam kasus ini. 1405 00:57:35,920 --> 00:57:38,046 Pertanyaan lain. 1406 00:57:38,046 --> 00:57:40,456 Ya. 1407 00:57:40,456 --> 00:57:41,706 >> HADIRIN: [Tak terdengar] 1408 00:57:48,170 --> 00:57:49,837 DAVID Malan: Oke, mengatakan bahwa sekali lagi. 1409 00:57:49,837 --> 00:57:51,087 HADIRIN: [Tak terdengar] 1410 00:58:04,250 --> 00:58:05,780 DAVID Malan: Bagaimana Anda pergi tentang mendiagnosis itu atau 1411 00:58:05,780 --> 00:58:06,380 pemecahan masalah itu? 1412 00:58:06,380 --> 00:58:08,800 Jadi kemungkinan besar, karena mereka bahasa yang berbeda, 1413 00:58:08,800 --> 00:58:10,280 kemungkinan besar Anda akan mendapatkan benar-benar 1414 00:58:10,280 --> 00:58:11,580 program yang berbeda outputted. 1415 00:58:11,580 --> 00:58:14,140 Anda akan mendapatkan pesan error yang sama sekali berbeda. 1416 00:58:14,140 --> 00:58:16,750 Dan juga hanya dalam hal desain, bisa dibilang akan menjadi 1417 00:58:16,750 --> 00:58:19,140 desain miskin keputusan untuk menulis dua yang berbeda 1418 00:58:19,140 --> 00:58:21,510 bahasa dengan file hampir identik bernama, di 1419 00:58:21,510 --> 00:58:23,000 direktori yang sama persis, menggunakan 1420 00:58:23,000 --> 00:58:24,550 otomatis alat seperti membuat. 1421 00:58:24,550 --> 00:58:27,750 Jadi saya juga dapat mendorong kembali dan mengatakan dalam 15 tahun melakukan hal ini, 1422 00:58:27,750 --> 00:58:29,190 tidak pernah melakukan kesalahan itu. 1423 00:58:29,190 --> 00:58:30,030 Bisa terjadi. 1424 00:58:30,030 --> 00:58:31,190 Tapi ada hanya berbagai, saya pikir, 1425 00:58:31,190 --> 00:58:33,180 logistik pertahanan di tempat. 1426 00:58:33,180 --> 00:58:35,440 Ditambah pesan kesalahan yang akan terjadi, yang akan 1427 00:58:35,440 --> 00:58:37,260 akhirnya mengungkapkan apa masalah ini. 1428 00:58:37,260 --> 00:58:39,120 Tapi kasus sudut mungkin. 1429 00:58:39,120 --> 00:58:41,730 >> Baiklah, jadi mari kita memperkenalkan hanya beberapa lainnya 1430 00:58:41,730 --> 00:58:45,600 fitur di sini sekarang, jadi kita bisa mulai membangun menjadi lebih 1431 00:58:45,600 --> 00:58:47,140 dan program yang lebih kompleks. 1432 00:58:47,140 --> 00:58:49,000 Jadi pertama-tama, matematika. 1433 00:58:49,000 --> 00:58:51,520 Jadi contoh matematika hanya agak mudah dalam minggu pertama. 1434 00:58:51,520 --> 00:58:53,560 Ini bukan untuk mengatakan bahwa semua program adalah tentang 1435 00:58:53,560 --> 00:58:54,390 matematika. 1436 00:58:54,390 --> 00:58:57,890 Tentu saja, memahami berbagai fitur 1437 00:58:57,890 --> 00:58:59,610 matematika, aljabar pada khususnya, adalah 1438 00:58:59,610 --> 00:59:00,330 cukup relevan di sini. 1439 00:59:00,330 --> 00:59:03,010 Dalam tingkat yang lebih tinggi kelas CS, aljabar linear, 1440 00:59:03,010 --> 00:59:03,920 kalkulus, dan sejenisnya. 1441 00:59:03,920 --> 00:59:06,500 Tapi menyadari sebagian besar dari apa yang akan kita lakukan semester ini mengurangi tidak 1442 00:59:06,500 --> 00:59:09,230 untuk matematika, dan tentunya tidak untuk aritmatika, per se, tapi benar-benar 1443 00:59:09,230 --> 00:59:11,570 hanya logika dan pemikiran yang cermat. 1444 00:59:11,570 --> 00:59:14,310 Dan sehingga hubungan ini bahwa ilmu komputer telah lama memiliki, 1445 00:59:14,310 --> 00:59:16,570 terutama di tingkat sekolah tinggi, dengan matematika, adalah 1446 00:59:16,570 --> 00:59:17,370 sedikit menyesatkan. 1447 00:59:17,370 --> 00:59:20,090 Karena sebagian besar program yang kita akan menulis, benar-benar, adalah 1448 00:59:20,090 --> 00:59:23,290 semacam tingkat yang lebih tinggi dan fokus pada pemecahan masalah yang, 1449 00:59:23,290 --> 00:59:26,410 yakin, mungkin menggunakan beberapa penambahan, pengurangan, dan berbagai 1450 00:59:26,410 --> 00:59:28,650 matematika formula atau sejenisnya, 1451 00:59:28,650 --> 00:59:30,860 tapi pada akhir hari, ini tentang berpikir dan tidak 1452 00:59:30,860 --> 00:59:33,240 hanya menerapkan apa yang Anda mungkin telah dilakukan pada seperti TI 1453 00:59:33,240 --> 00:59:35,050 Kalkulator di SMA. 1454 00:59:35,050 --> 00:59:38,410 >> Jadi dengan mengatakan bahwa, mari kita melakukan sesuatu dengan 1455 00:59:38,410 --> 00:59:40,980 matematika operator yang ada sehingga kita dapat perjalanan 1456 00:59:40,980 --> 00:59:43,950 atas beberapa aspek yang mendasari pemrograman, atau dalam 1457 00:59:43,950 --> 00:59:48,930 kasus ini C. Jadi ada, seperti perpustakaan CS50 disarankan, 1458 00:59:48,930 --> 00:59:51,520 dan hari ini kita hanya menggunakan GetString - dan dalam sekejap 1459 00:59:51,520 --> 00:59:52,940 mungkin fungsi yang lain - 1460 00:59:52,940 --> 00:59:55,380 tetapi ada data yang berbeda jenis dalam komputer. 1461 00:59:55,380 --> 00:59:58,550 Pada akhir hari, komputer hanya tahu 0s dan 1s. 1462 00:59:58,550 --> 01:00:01,880 Tapi ingat bahwa minggu lalu kami berbicara tentang sistem biner 1463 01:00:01,880 --> 01:00:05,000 dalam mewakili angka, seperti angka 0, dan 1, dan 2, 1464 01:00:05,000 --> 01:00:07,480 semua jalan pada hingga 8, seperti dalam video Nate. 1465 01:00:07,480 --> 01:00:08,840 Dan kemudian kita dapat menghitung jauh lebih tinggi seperti yang kita 1466 01:00:08,840 --> 01:00:10,000 lakukan di atas panggung di sini. 1467 01:00:10,000 --> 01:00:15,660 Tetapi jika Anda ingin untuk mewakili tidak hanya jumlah tetapi huruf, 1468 01:00:15,660 --> 01:00:18,240 kita, manusia, harus datang dengan beberapa sewenang-wenang 1469 01:00:18,240 --> 01:00:21,180 konvensi, dimana jika pada akhir hari semua komputer saya 1470 01:00:21,180 --> 01:00:24,260 telah adalah kemampuan untuk mengekspresikan 0s dan 1s, baik kita akan lebih baik 1471 01:00:24,260 --> 01:00:27,990 mulai standardisasi pola 0s dan 1s yang mewakili 1472 01:00:27,990 --> 01:00:28,800 hal yang berbeda. 1473 01:00:28,800 --> 01:00:32,370 Sebuah pola 0s dan 1s yang mewakili surat. 1474 01:00:32,370 --> 01:00:34,840 Pola 0s dan 1s yang mewakili huruf z. 1475 01:00:34,840 --> 01:00:37,600 Pola 0s dan 1s yang mewakili warna biru, atau 1476 01:00:37,600 --> 01:00:38,600 merah, atau sejenisnya. 1477 01:00:38,600 --> 01:00:42,360 Kita harus menggunakan semua 0s dan 1s untuk mengekspresikan diri 1478 01:00:42,360 --> 01:00:45,140 yang berbeda konteks, dengan cara yang berbeda yang tidak 1479 01:00:45,140 --> 01:00:46,470 tentu numerik. 1480 01:00:46,470 --> 01:00:51,150 >> Jadi dalam hal representasi, C memiliki tipe data yang berbeda, 1481 01:00:51,150 --> 01:00:52,550 dan kami telah melihat salah satu sejauh ini. 1482 01:00:52,550 --> 01:00:54,940 Kami melihat int, dan perhatikan apa yang tidak di layar 1483 01:00:54,940 --> 01:00:56,140 sekarang adalah string. 1484 01:00:56,140 --> 01:00:58,550 String tidak, pada kenyataannya, ada di C. Sekali lagi, itu adalah 1485 01:00:58,550 --> 01:01:00,610 penyederhanaan kami menyajikan untuk pertama 1486 01:01:00,610 --> 01:01:01,570 beberapa minggu. 1487 01:01:01,570 --> 01:01:03,770 Sebuah char adalah karakter individu. 1488 01:01:03,770 --> 01:01:07,050 Sebuah float adalah bilangan real, dengan titik desimal dan angka untuk 1489 01:01:07,050 --> 01:01:09,066 kiri dan kanan itu. 1490 01:01:09,066 --> 01:01:16,040 Ganda adalah apa, bagi mereka dengan latar belakang kembali sebelum? 1491 01:01:16,040 --> 01:01:19,720 Jadi ganda adalah dua kali sesuatu. 1492 01:01:19,720 --> 01:01:21,240 Menambahkan dua kali presisi banyak. 1493 01:01:21,240 --> 01:01:22,440 Jadi apa artinya ini? 1494 01:01:22,440 --> 01:01:26,090 Jadi dalam masing-masing kasus, dunia memiliki semacam standar 1495 01:01:26,090 --> 01:01:27,960 berapa banyak bit yang digunakan untuk mewakili 1496 01:01:27,960 --> 01:01:29,160 masing-masing hal. 1497 01:01:29,160 --> 01:01:31,590 Jadi jika Anda sudah menonton video ASCII Nate sudah untuk bagian 1498 01:01:31,590 --> 01:01:36,170 pset dari 0, atau akhir pekan ini Anda akan, Anda mungkin akan tahu 1499 01:01:36,170 --> 01:01:37,450 bahwa ASCII - 1500 01:01:37,450 --> 01:01:38,610 karakter representasi - 1501 01:01:38,610 --> 01:01:40,670 menggunakan berapa banyak bit? 1502 01:01:40,670 --> 01:01:43,410 Dan Anda bahkan mungkin ingat dari demo kami minggu lalu tentang bagaimana 1503 01:01:43,410 --> 01:01:45,500 banyak orang di atas panggung. 1504 01:01:45,500 --> 01:01:46,840 Jadi 7 atau 8, biasanya. 1505 01:01:46,840 --> 01:01:49,230 Jadi umumnya 8, dan ada sesuatu yang disebut sebagai diperpanjang 1506 01:01:49,230 --> 01:01:51,240 ASCII yang menggunakan semua 8 bit, bukan 7. 1507 01:01:51,240 --> 01:01:54,710 Tapi secara umum, kita berbicara dalam kekuatan dari 2, sehingga dalam kasus ini, 8. 1508 01:01:54,710 --> 01:01:58,900 Jadi char dalam bahasa pemrograman biasanya 8 bit. 1509 01:01:58,900 --> 01:02:02,550 Jadi int umumnya 32 bit. 1510 01:02:02,550 --> 01:02:04,810 Sebuah float umumnya 32 bit. 1511 01:02:04,810 --> 01:02:08,060 Sebuah ganda umumnya 64 bit. 1512 01:02:08,060 --> 01:02:08,870 Dan apa artinya itu? 1513 01:02:08,870 --> 01:02:11,500 Ini berarti Anda dapat mewakili angka yang lebih besar, atau dalam kasus 1514 01:02:11,500 --> 01:02:15,490 bilangan real, Anda dapat memiliki nomor lebih banyak setelah 1515 01:02:15,490 --> 01:02:16,240 desimal tempat. 1516 01:02:16,240 --> 01:02:18,980 Banyak yang lebih presisi, dalam kasus itu. 1517 01:02:18,980 --> 01:02:21,780 Sekarang lama sayangnya bernama. 1518 01:02:21,780 --> 01:02:24,340 Jadi ada sebuah int yang 32 bit. 1519 01:02:24,340 --> 01:02:29,800 Ada yang panjang, nggak, 32 bit. 1520 01:02:29,800 --> 01:02:32,610 Dan lama yang adalah 64 bit. 1521 01:02:32,610 --> 01:02:34,830 Namun beberapa dari mereka adalah konteks sensitif, itu tergantung 1522 01:02:34,830 --> 01:02:36,190 apa jenis komputer yang Anda miliki. 1523 01:02:36,190 --> 01:02:40,510 Jadi secara umum, kami akan tetapkan dalam pekerjaan atau dalam kuis ketika 1524 01:02:40,510 --> 01:02:41,180 itu benar-benar penting. 1525 01:02:41,180 --> 01:02:43,080 Tapi intinya adalah ada semua ini berbeda 1526 01:02:43,080 --> 01:02:44,250 representasi sini. 1527 01:02:44,250 --> 01:02:45,950 >> Jadi mari kita benar-benar menyelam ke dalam program. 1528 01:02:45,950 --> 01:02:48,300 Daripada menulis satu ini dari awal, biarkan aku pergi ke depan 1529 01:02:48,300 --> 01:02:50,940 dan membuka kode sumber dari hari ini - yang semuanya 1530 01:02:50,940 --> 01:02:54,980 online - jika Anda ingin bermain-main sekitar online, atau pengembalian 1531 01:02:54,980 --> 01:02:57,120 Rabu dengan alat pada komputer Anda, petunjuk 1532 01:02:57,120 --> 01:02:59,160 yang akan menghubungkan pada homepage kursus itu. 1533 01:02:59,160 --> 01:03:00,830 Berikut adalah program super sederhana. 1534 01:03:00,830 --> 01:03:02,520 Tapi punya sedikit sesuatu yang baru di bagian atas yang 1535 01:03:02,520 --> 01:03:03,650 kita tidak memiliki sebelumnya. 1536 01:03:03,650 --> 01:03:05,800 Banyak seluruh garis biru teks. 1537 01:03:05,800 --> 01:03:08,410 Jadi garis-garis biru mewakili komentar. 1538 01:03:08,410 --> 01:03:10,620 Jadi sangat berguna dalam program untuk dapat menulis 1539 01:03:10,620 --> 01:03:13,160 beberapa komentar kepada diri sendiri, atau rekan kerja, atau teman-teman, atau 1540 01:03:13,160 --> 01:03:15,700 fellows mengajar, semacam bahwa menggambarkan apa yang terjadi di 1541 01:03:15,700 --> 01:03:18,500 file ini, tapi tidak ada hubungannya dengan kode C itu sendiri. 1542 01:03:18,500 --> 01:03:20,860 Tidak ada hubungannya dengan program fungsional, itu hanya 1543 01:03:20,860 --> 01:03:21,760 estetika. 1544 01:03:21,760 --> 01:03:24,580 Jadi cara Anda melakukan ini dalam C adalah Anda umumnya mulai Anda 1545 01:03:24,580 --> 01:03:29,860 komentar dengan / *, dan Anda berakhir dengan komentar Anda 1546 01:03:29,860 --> 01:03:31,270 * /. 1547 01:03:31,270 --> 01:03:34,140 Dan jika Anda benar-benar anal dan seperti untuk menarik semacam gambar, 1548 01:03:34,140 --> 01:03:35,870 maka Anda akan menempatkan seluruh banyak bintang, Anda akan membuat 1549 01:03:35,870 --> 01:03:36,970 sedikit kotak seperti ini. 1550 01:03:36,970 --> 01:03:37,990 Tapi tak satu pun dari yang penting. 1551 01:03:37,990 --> 01:03:40,230 Satu-satunya hal yang penting adalah pertama 1552 01:03:40,230 --> 01:03:41,620 dan yang terakhir. 1553 01:03:41,620 --> 01:03:43,820 Ini adalah apa yang disebut komentar multi-line. 1554 01:03:43,820 --> 01:03:46,610 Dan itu hanya konvensi manusia untuk sering melakukan bintang dan kotak 1555 01:03:46,610 --> 01:03:48,420 hal dalam seperti ini jika Anda memiliki banyak waktu luang. 1556 01:03:48,420 --> 01:03:51,550 >> Jadi setelah Anda telah menulis di beberapa komentar, secara umum, datang 1557 01:03:51,550 --> 01:03:53,160 sebenarnya nyali program. 1558 01:03:53,160 --> 01:03:55,630 Berikut familiar kami # include. 1559 01:03:55,630 --> 01:04:00,410 Dan hanya cepat, hal ini perlu atau tidak perlu? 1560 01:04:00,410 --> 01:04:02,860 HADIRIN: Diperlukan. 1561 01:04:02,860 --> 01:04:04,390 DAVID Malan: Jadi itu sebenarnya tidak perlu. 1562 01:04:04,390 --> 01:04:07,070 Jadi mengapa, meskipun, itu tidak perlu? 1563 01:04:07,070 --> 01:04:08,170 Jadi tidak ada printf. 1564 01:04:08,170 --> 01:04:08,510 Memang. 1565 01:04:08,510 --> 01:04:10,470 Semua yang kita lakukan dalam program ini adalah matematika. 1566 01:04:10,470 --> 01:04:11,640 Jadi saya benar-benar dapat menghapus. 1567 01:04:11,640 --> 01:04:14,330 Jadi Anda tidak selalu harus memasukkan apa pun di 1568 01:04:14,330 --> 01:04:15,420 bagian atas dari sebuah program. 1569 01:04:15,420 --> 01:04:17,020 >> Jadi mari kita menyederhanakan ini sedikit. 1570 01:04:17,020 --> 01:04:18,650 Dan sekarang perhatikan apa program ini tidak. 1571 01:04:18,650 --> 01:04:19,920 Tidak banyak kepentingan. 1572 01:04:19,920 --> 01:04:21,410 int x = 1. 1573 01:04:21,410 --> 01:04:22,550 Nah, apa ini lakukan? 1574 01:04:22,550 --> 01:04:25,130 Nah, berpikir kembali ke model mental dari sebelumnya. 1575 01:04:25,130 --> 01:04:27,500 Sisi kiri dari ungkapan ini melakukan apa? 1576 01:04:31,440 --> 01:04:32,830 Buat ruang untuk integer. 1577 01:04:32,830 --> 01:04:33,930 Jadi berapa banyak ruang? 1578 01:04:33,930 --> 01:04:36,980 Nah, kita kebetulan tahu sekarang bahwa itu 32 bit. 1579 01:04:36,980 --> 01:04:40,070 Sebelumnya, string secara teknis 32 bit, tetapi lebih 1580 01:04:40,070 --> 01:04:40,950 pada bahwa di masa depan. 1581 01:04:40,950 --> 01:04:42,240 Tapi int adalah 32 bit. 1582 01:04:42,240 --> 01:04:45,590 Jadi ungkapan ini di sebelah kiri di sini, int x hanya mengatakan hey 1583 01:04:45,590 --> 01:04:48,490 sistem operasi, memberi saya 32 bit RAM - 1584 01:04:48,490 --> 01:04:50,450 atau dikenal sebagai 4 byte RAM - 1585 01:04:50,450 --> 01:04:53,930 sehingga saya dapat menempatkan integer di ruang tersebut. 1586 01:04:53,930 --> 01:04:55,330 Apa yang bulat kau ingin menempatkan? 1587 01:04:55,330 --> 01:04:56,640 Nah, hanya nomor 1. 1588 01:04:56,640 --> 01:04:59,530 int y mendapat 2, melakukan hal yang sama persis meskipun 1589 01:04:59,530 --> 01:05:02,160 jumlah lebih besar, dalam hal besarnya. 1590 01:05:02,160 --> 01:05:04,790 Jumlah itu sendiri masih hanya 32 bit. 1591 01:05:04,790 --> 01:05:06,520 Hanya saja pola bit berbeda dengan 1592 01:05:06,520 --> 01:05:08,260 mewakili 1 vs 2. 1593 01:05:08,260 --> 01:05:11,980 int z sekarang mengatakan memberi saya lagi bit 32, sebut saja z, dan menempatkan 1594 01:05:11,980 --> 01:05:14,210 penjumlahan dari 1 dan 2 di sana. 1595 01:05:14,210 --> 01:05:18,050 Sehingga sekarang z diduga menyimpan nilai 3, 1596 01:05:18,050 --> 01:05:19,360 dan kemudian kembali 0. 1597 01:05:19,360 --> 01:05:23,020 >> Sekarang program ini, apakah itu melakukan sesuatu yang menarik? 1598 01:05:23,020 --> 01:05:26,170 Jadi sebenarnya tidak melakukan sesuatu yang menarik, dalam setiap 1599 01:05:26,170 --> 01:05:28,450 akal, karena mengapa? Ini melakukan beberapa matematika. 1600 01:05:28,450 --> 01:05:30,590 Tapi itu tidak kembali jawabannya, benar. 1601 01:05:30,590 --> 01:05:31,790 Ini kembali 0. 1602 01:05:31,790 --> 01:05:33,440 Ini tidak mencetak jawabannya. 1603 01:05:33,440 --> 01:05:35,760 Jadi program ini pada dasarnya tidak berharga, karena 1604 01:05:35,760 --> 01:05:36,350 berdiri sekarang. 1605 01:05:36,350 --> 01:05:37,220 Ini melakukan beberapa pekerjaan. 1606 01:05:37,220 --> 01:05:39,530 Ini akan mengambil beberapa jumlah detik, atau mikrodetik, untuk 1607 01:05:39,530 --> 01:05:41,510 lari, tapi itu tidak benar-benar melakukan apa-apa 1608 01:05:41,510 --> 01:05:42,770 berguna bagi manusia. 1609 01:05:42,770 --> 01:05:46,810 >> Jadi mari kita benar-benar sekarang buka math2, di mana sekarang aku benar-benar 1610 01:05:46,810 --> 01:05:48,250 mencetak hasilnya. 1611 01:05:48,250 --> 01:05:51,260 Jadi ini juga dapat disimpulkan dari contoh sebelumnya. 1612 01:05:51,260 --> 01:05:54,320 Jika saya ingin melakukan beberapa matematika sederhana, int x = 1, y 1613 01:05:54,320 --> 01:05:56,820 = 2. z adalah 1 ditambah 2 sekarang. 1614 01:05:56,820 --> 01:05:59,240 Apa ini akan mencetak jelas? 1615 01:05:59,240 --> 01:06:00,120 Hanya 3. 1616 01:06:00,120 --> 01:06:01,590 Jadi kewarasan cepat memeriksa. 1617 01:06:01,590 --> 01:06:03,830 Biarkan saya pindah ke direktori ini. 1618 01:06:03,830 --> 01:06:06,480 Jadi cd source1m. 1619 01:06:06,480 --> 01:06:09,370 Biarkan aku pergi ke depan dan mengetikkan make math2. 1620 01:06:09,370 --> 01:06:11,510 Tidak ada pesan error keluar, jadi biar berjalan - 1621 01:06:11,510 --> 01:06:14,800 tidak a.out--biarkan aku jalankan math2. Enter. 1622 01:06:14,800 --> 01:06:16,750 Dan memang, dicetak 3. 1623 01:06:16,750 --> 01:06:18,460 Nah mari kita lihat varian ini. 1624 01:06:18,460 --> 01:06:23,870 Dalam math3.c, kita sekarang memiliki contoh ini di sini. 1625 01:06:23,870 --> 01:06:26,540 >> Jadi satu ini agak menarik. 1626 01:06:26,540 --> 01:06:32,000 Jadi dalam hal ini satu di sini, jawabannya akan mendapatkan 1 dibagi dengan 10, 1627 01:06:32,000 --> 01:06:33,910 dan perhatikan saya sudah menyatakan sebagai pelampung. 1628 01:06:33,910 --> 01:06:35,200 Mengapa saya ingin menjadi pelampung? 1629 01:06:35,200 --> 01:06:36,110 Yah, itu sebagian kecil. 1630 01:06:36,110 --> 01:06:37,140 Ini akan menjadi bilangan real. 1631 01:06:37,140 --> 01:06:40,970 Jadi itu akan menjadi 0,1, mudah-mudahan - 10%, dalam kasus ini. 1632 01:06:40,970 --> 01:06:42,610 Dan apa yang saya kemudian ingin mencetak? 1633 01:06:42,610 --> 01:06:43,440 Nah, jawaban ini. 1634 01:06:43,440 --> 01:06:44,760 Nah, mari kita menggoda ini selain pertama. 1635 01:06:44,760 --> 01:06:47,020 Jadi di sisi kiri, menyatakan 1636 01:06:47,020 --> 01:06:49,410 mengapung, menyebutnya menjawab. 1637 01:06:49,410 --> 01:06:52,280 Di sisi kanan, jangan 1 dibagi oleh 10 dan menempatkan bahwa 1638 01:06:52,280 --> 01:06:54,370 menjawab dalam variabel. 1639 01:06:54,370 --> 01:06:56,410 Sekarang, baris ini terlihat sedikit lebih samar. 1640 01:06:56,410 --> 01:06:59,440 Tapi perhatikan beberapa fitur akrab. % Berarti di sini datang 1641 01:06:59,440 --> 01:07:00,490 placeholder. 1642 01:07:00,490 --> 01:07:03,230 f berarti di sini adalah nilai floating point, hanya nyata 1643 01:07:03,230 --> 01:07:05,490 nomor, sesuatu dengan titik desimal. 1644 01:07:05,490 --> 01:07:07,330 0,2 berarti apa? 1645 01:07:07,330 --> 01:07:10,740 Siapapun tahu dari pengalaman sebelumnya? 1646 01:07:10,740 --> 01:07:12,010 Dua tempat desimal. 1647 01:07:12,010 --> 01:07:14,050 Jadi kita belum melihat ini sebelumnya, tapi itu hanya cara 1648 01:07:14,050 --> 01:07:16,360 berolahraga kontrol yang lebih sedikit di atas printf dan 1649 01:07:16,360 --> 01:07:20,840 Pepatah tidak memberi saya 30 poin setelah titik desimal, 1650 01:07:20,840 --> 01:07:22,490 bukannya memberi saya hanya 2. 1651 01:07:22,490 --> 01:07:23,960 >> Dan kemudian mari kita pergi ke depan dan menjalankan ini. 1652 01:07:23,960 --> 01:07:30,160 Jadi membuat matematika 3, dan sekarang biarkan aku jalankan matematika 3, Enter. 1653 01:07:30,160 --> 01:07:34,630 Dan itu tidak benar. 1654 01:07:34,630 --> 01:07:37,390 Kita tampaknya telah mengalami bug asli pertama kami. 1655 01:07:37,390 --> 01:07:39,400 Yah, mungkin aku hanya tidak melihat cukup dekat. 1656 01:07:39,400 --> 01:07:41,960 Jadi biarkan aku pergi di sini, dan biarkan aku menempatkan 20 desimal 1657 01:07:41,960 --> 01:07:43,300 Titik tempat di sana. 1658 01:07:43,300 --> 01:07:47,950 Dan biarkan aku mengkompilasi ini, membuat math3, jalankan. 1659 01:07:47,950 --> 01:07:50,960 Cukup yakin 1 dibagi dengan 10 tidak 0. 1660 01:07:50,960 --> 01:07:54,270 Jadi apa yang terjadi? 1661 01:07:54,270 --> 01:07:56,740 Nah oke, jadi sebenarnya tidak ada hubungannya dengan hal ini. 1662 01:07:56,740 --> 01:07:57,600 Itu pikiran yang baik. 1663 01:07:57,600 --> 01:07:59,140 Ini benar-benar hanya kebetulan 1664 01:07:59,140 --> 01:08:00,220 bahwa kita melakukan hal ini. 1665 01:08:00,220 --> 01:08:02,010 Tapi hanya untuk membuktikan bahwa ini bukan itu, aku akan 1666 01:08:02,010 --> 01:08:03,160 kembali sesuatu yang acak. 1667 01:08:03,160 --> 01:08:05,160 Jangan lakukan ini di rumah, karena itu hanya salah. 1668 01:08:05,160 --> 01:08:08,000 Tapi membuat math3, biarkan aku menjalankannya. 1669 01:08:08,000 --> 01:08:10,690 Jadi tidak ada hubungannya dengan apa yang saya kembali, hanya harus dilakukan 1670 01:08:10,690 --> 01:08:11,940 dengan apa yang saya cetak. 1671 01:08:11,940 --> 01:08:14,150 Tapi aku mendengarnya di sini. 1672 01:08:14,150 --> 01:08:15,270 Apa? 1673 01:08:15,270 --> 01:08:17,524 HADIRIN: Jadi kita perlu menulis angka-angka dalam 1674 01:08:17,524 --> 01:08:19,680 divisi sebagai - 1675 01:08:19,680 --> 01:08:20,319 >> DAVID Malan: Oke baik. 1676 01:08:20,319 --> 01:08:22,810 Jadi kita perlu menulis angka berpartisipasi dalam 1677 01:08:22,810 --> 01:08:25,979 Divisi sini sebagai floating point nilai sendiri. 1678 01:08:25,979 --> 01:08:29,359 Jadi masalahnya di sini adalah seperti sebelumnya: C, seperti dengan banyak 1679 01:08:29,359 --> 01:08:31,819 bahasa, memiliki tipe data yang berbeda. 1680 01:08:31,819 --> 01:08:34,600 Dan jenis-jenis data, misalnya, orang-sini. 1681 01:08:34,600 --> 01:08:37,430 Dan tipe data yang dimaksud di sini, ketika saya ketik 1 dan kemudian saya 1682 01:08:37,430 --> 01:08:40,870 tipe 10, mungkin data apa jenis? 1683 01:08:40,870 --> 01:08:42,170 Jadi itu mungkin int, kan? 1684 01:08:42,170 --> 01:08:44,149 Ini jelas bukan pelampung karena ada tidak ada desimal 1685 01:08:44,149 --> 01:08:45,460 titik atau sesuatu seperti itu. 1686 01:08:45,460 --> 01:08:48,270 Jadi benar-benar, saya memiliki int dibagi dengan int. 1687 01:08:48,270 --> 01:08:52,160 >> Jadi hal yang menarik tentang matematika dan komputer adalah bahwa 1688 01:08:52,160 --> 01:08:54,840 jika Anda melakukan pembagian menggunakan bilangan bulat - 1689 01:08:54,840 --> 01:08:57,310 1 dibagi dengan 10, ya adalah 0,1. 1690 01:08:57,310 --> 01:09:01,420 Namun, ketika Anda membagi integer dengan integer, yang 1691 01:09:01,420 --> 01:09:06,859 Jawaban harus juga menjadi integer hanya karena, untuk saat ini. 1692 01:09:06,859 --> 01:09:08,630 Dan apa implikasinya kemudian? 1693 01:09:08,630 --> 01:09:13,640 Nah, jika jawabannya adalah 1 dibagi dengan 10 sama dengan 0,1, apa yang 1694 01:09:13,640 --> 01:09:15,680 komputer akan lakukan adalah saya tidak tahu bagaimana untuk 1695 01:09:15,680 --> 01:09:19,270 mewakili 0,1, karena itulah nilai floating point, bukan 1696 01:09:19,270 --> 01:09:21,910 integer; itu akan memenggal semuanya setelah 1697 01:09:21,910 --> 01:09:27,470 titik desimal dan hanya menunjukkan 0 di awal. 1698 01:09:27,470 --> 01:09:29,540 Dan fakta bahwa itu mencetak sebagai floating point 1699 01:09:29,540 --> 01:09:31,200 nilai, itu hanya hal estetika. 1700 01:09:31,200 --> 01:09:34,279 Itu karena aku memaksa komputer untuk mencetak ini sebagai 1701 01:09:34,279 --> 01:09:35,229 nilai titik mengambang. 1702 01:09:35,229 --> 01:09:37,720 Dan memang saya sudah dinyatakan sebagai pelampung, tapi matematika adalah 1703 01:09:37,720 --> 01:09:39,010 terjadi di sini. 1704 01:09:39,010 --> 01:09:41,859 >> Jadi biarkan aku benar-benar memperbaiki ini dalam satu cara yang cukup mudah. 1705 01:09:41,859 --> 01:09:45,250 Kenapa tidak saya hanya melakukan 10,0 dan 1,0, meskipun 1706 01:09:45,250 --> 01:09:47,609 secara teknis saya bisa lolos dengan hanya melakukan salah satu dari mereka. 1707 01:09:47,609 --> 01:09:50,630 Sekarang biarkan aku pergi ke depan dan membuat math3. 1708 01:09:50,630 --> 01:09:56,350 Biarkan aku pergi ke depan dan sekarang menjalankan math3, Enter. 1709 01:09:56,350 --> 01:09:57,500 Dan sekarang, oh boy. 1710 01:09:57,500 --> 01:10:00,050 Sekarang kita punya masalah baru sama sekali. 1711 01:10:00,050 --> 01:10:05,600 Jadi lebih baik, benar, kita lebih dekat menjadi 0,1, tetapi apa yang jelas 1712 01:10:05,600 --> 01:10:06,240 salah di sini? 1713 01:10:06,240 --> 01:10:08,260 Kecuali kita telah berbohong kepada Anda selama bertahun-tahun, kan? 1714 01:10:08,260 --> 01:10:13,660 1 dibagi dengan 10 sebenarnya tidak cukup 0.1, jadi apa 1715 01:10:13,660 --> 01:10:14,700 sebenarnya terjadi di sini? 1716 01:10:14,700 --> 01:10:16,420 Nah Anda dapat jenis alasan logis melalui. 1717 01:10:16,420 --> 01:10:19,200 Jika komputer hanya memiliki jumlah terbatas RAM untuk memulai 1718 01:10:19,200 --> 01:10:23,530 dengan, dan memang komputer hanya menggunakan 32 bit untuk 1719 01:10:23,530 --> 01:10:26,200 nilai titik mengambang, maka bisa dipastikan bahwa dengan 1720 01:10:26,200 --> 01:10:29,870 jumlah terbatas bit, 32 dalam kasus ini, ya, Anda dapat 1721 01:10:29,870 --> 01:10:31,050 mewakili banyak hal. 1722 01:10:31,050 --> 01:10:33,220 Ini sebenarnya adalah empat miliar nilai yang berbeda dapat 1723 01:10:33,220 --> 01:10:38,040 diwakili dengan 32 bit, 2 ke 32, tapi masih terbatas. 1724 01:10:38,040 --> 01:10:40,730 Jadi masalahnya adalah ada jumlah tak terbatas yang nyata 1725 01:10:40,730 --> 01:10:41,370 nomor, benar. 1726 01:10:41,370 --> 01:10:43,560 Jika Anda memberi saya bilangan real, saya selalu bisa menemukan Anda satu 1727 01:10:43,560 --> 01:10:46,080 sedikit lebih besar, sedikit kurang, dengan hanya mengutak-atik 1728 01:10:46,080 --> 01:10:47,970 angka yang setelah titik desimal. 1729 01:10:47,970 --> 01:10:50,870 Jadi jika Anda tidak memiliki jumlah tak terbatas bit, Anda 1730 01:10:50,870 --> 01:10:52,940 tidak mungkin mewakili terbatas 1731 01:10:52,940 --> 01:10:54,800 jumlah bilangan real. 1732 01:10:54,800 --> 01:10:58,090 >> Jadi ada ketidaktepatan ini melekat dalam komputer, dan 1733 01:10:58,090 --> 01:11:00,930 ini akan tersandung sepanjang waktu bahkan di paling sederhana 1734 01:11:00,930 --> 01:11:02,260 program seperti ini. 1735 01:11:02,260 --> 01:11:05,640 Tapi juga di beberapa masalah dunia yang sangat nyata juga. 1736 01:11:05,640 --> 01:11:07,790 Bahkan, mari kita luangkan waktu untuk hanya melihat pada 1737 01:11:07,790 --> 01:11:09,530 sesuatu yang benar-benar terjadi dalam kenyataan. 1738 01:11:09,530 --> 01:11:11,620 Kami akan melihat hanya beberapa menit pertama, dan kemudian 1739 01:11:11,620 --> 01:11:13,270 kita akan posting secara online link. 1740 01:11:13,270 --> 01:11:16,700 Tapi ini adalah bukti apa yang bisa salah, cukup 1741 01:11:16,700 --> 01:11:19,680 jujur, dalam cara yang sangat tragis ketika hal-hal ini tidak 1742 01:11:19,680 --> 01:11:23,870 dihargai atau hanya kita manusia melakukan kesalahan ketika datang ke 1743 01:11:23,870 --> 01:11:26,792 jenis rincian implementasi komputer modern. 1744 01:11:26,792 --> 01:11:27,284 >> [PLAYING VIDEO] 1745 01:11:27,284 --> 01:11:30,730 -Kita sekarang kembali ke bencana rekayasa pada Marvels modern. 1746 01:11:30,730 --> 01:11:32,200 Komputer. 1747 01:11:32,200 --> 01:11:34,920 Kita semua telah datang untuk menerima masalah yang sering frustasi 1748 01:11:34,920 --> 01:11:36,750 yang pergi bersama mereka. 1749 01:11:36,750 --> 01:11:40,690 Bugs, virus, dan gangguan perangkat lunak adalah harga kecil untuk 1750 01:11:40,690 --> 01:11:42,550 membayar untuk kenyamanan. 1751 01:11:42,550 --> 01:11:45,170 Namun dalam kecepatan tinggi militer berteknologi tinggi dan dan ruang 1752 01:11:45,170 --> 01:11:48,450 aplikasi program, masalah terkecil dapat 1753 01:11:48,450 --> 01:11:52,220 diperbesar menjadi bencana. 1754 01:11:52,220 --> 01:11:56,780 Pada tanggal 4 Juni 1996, para ilmuwan siap untuk meluncurkan berawak 1755 01:11:56,780 --> 01:11:58,430 Ariane 5 roket. 1756 01:11:58,430 --> 01:12:00,750 Itu membawa satelit ilmiah dirancang untuk 1757 01:12:00,750 --> 01:12:03,580 menetapkan tepat bagaimana medan magnet bumi 1758 01:12:03,580 --> 01:12:06,900 berinteraksi dengan angin surya. 1759 01:12:06,900 --> 01:12:10,330 Roket ini dibangun untuk European Space Agency dan 1760 01:12:10,330 --> 01:12:13,450 lepas landas dari fasilitas di pantai Perancis Guyana. 1761 01:12:13,450 --> 01:12:16,970 >> -Pada sekitar sekitar 37 detik dalam penerbangan, mereka pertama 1762 01:12:16,970 --> 01:12:19,700 sesuatu yang tidak beres melihat, bahwa nozel yang 1763 01:12:19,700 --> 01:12:21,590 berputar dengan cara mereka benar-benar tidak seharusnya. 1764 01:12:21,590 --> 01:12:25,020 Sekitar 40 detik dalam penerbangan, jelas kendaraan 1765 01:12:25,020 --> 01:12:27,340 dalam kesulitan, dan saat itulah mereka membuat keputusan untuk 1766 01:12:27,340 --> 01:12:28,136 menghancurkannya. 1767 01:12:28,136 --> 01:12:31,450 Sebuah rentang keamanan petugas dengan nyali yang luar biasa menekan 1768 01:12:31,450 --> 01:12:34,160 tombol, meledakkan roket sebelum bisa menjadi 1769 01:12:34,160 --> 01:12:37,470 bahaya bagi keselamatan publik. 1770 01:12:37,470 --> 01:12:40,750 >> -Ini adalah pelayaran perdananya dari Ariane 5, dan yang 1771 01:12:40,750 --> 01:12:43,990 kerusakan terjadi karena cacat tertanam dalam 1772 01:12:43,990 --> 01:12:45,480 roket software. 1773 01:12:45,480 --> 01:12:47,660 >> -Masalah pada Ariane adalah bahwa ada nomor yang 1774 01:12:47,660 --> 01:12:51,245 membutuhkan 64 bit untuk mengekspresikan dan mereka ingin mengubahnya 1775 01:12:51,245 --> 01:12:53,010 ke nomor 16 bit. 1776 01:12:53,010 --> 01:12:54,900 Mereka beranggapan bahwa jumlah itu tidak pernah 1777 01:12:54,900 --> 01:12:56,280 akan menjadi sangat besar, 1778 01:12:56,280 --> 01:12:59,920 bahwa sebagian besar dari mereka digit di nomor 64 bit yang 0s. 1779 01:12:59,920 --> 01:13:01,860 Mereka salah. 1780 01:13:01,860 --> 01:13:04,550 >> -Ketidakmampuan satu program perangkat lunak untuk menerima 1781 01:13:04,550 --> 01:13:07,730 jenis nomor yang dihasilkan oleh yang lain berada di akar 1782 01:13:07,730 --> 01:13:08,930 kegagalan. 1783 01:13:08,930 --> 01:13:11,490 Pengembangan perangkat lunak telah menjadi bagian yang sangat mahal 1784 01:13:11,490 --> 01:13:13,280 teknologi baru. 1785 01:13:13,280 --> 01:13:16,530 Ariane 4 roket telah sangat sukses. 1786 01:13:16,530 --> 01:13:19,100 Begitu banyak perangkat lunak yang diciptakan untuk itu juga digunakan 1787 01:13:19,100 --> 01:13:21,050 di Ariane 5. 1788 01:13:21,050 --> 01:13:25,530 >> -Masalah dasar adalah bahwa Ariane 5 lebih cepat, 1789 01:13:25,530 --> 01:13:27,280 dipercepat lebih cepat. 1790 01:13:27,280 --> 01:13:30,590 Dan perangkat lunak tidak diperhitungkan untuk itu. 1791 01:13:30,590 --> 01:13:33,060 >> -Penghancuran roket adalah keuangan besar 1792 01:13:33,060 --> 01:13:37,670 bencana, semua karena kesalahan software menit. 1793 01:13:37,670 --> 01:13:40,750 Tapi ini bukan pertama kalinya data yang memiliki masalah konversi 1794 01:13:40,750 --> 01:13:43,680 terganggu teknologi roket modern. 1795 01:13:43,680 --> 01:13:44,390 >> DAVID Malan: Kami akan berhenti di situ. 1796 01:13:44,390 --> 01:13:46,870 Tapi ini adalah bukti betapa berlaku bahkan beberapa 1797 01:13:46,870 --> 01:13:48,750 ini rincian tingkat terendah yang kita sudah mulai 1798 01:13:48,750 --> 01:13:50,040 mengeksplorasi saat ini. 1799 01:13:50,040 --> 01:13:52,510 Jadi bahkan ketika Anda mendapatkan sedikit terganggu mungkin oleh beberapa 1800 01:13:52,510 --> 01:13:55,240 sintaks dan arcaneness sini, menyadari bahwa selama 1801 01:13:55,240 --> 01:13:57,690 Istilah kita akan terfokus hanya pada bagaimana berlaku ini adalah untuk 1802 01:13:57,690 --> 01:13:59,530 dunia jauh melampaui CS. 1803 01:13:59,530 --> 01:14:00,780 Kami akan melihat Anda pada hari Rabu.