1 00:00:00,000 --> 00:00:02,360 >> DAVID J. Malan: Seperti Anda mungkin tahu, Suhu diukur dengan menggunakan 2 00:00:02,360 --> 00:00:04,360 skala yang berbeda di berbagai belahan dunia. 3 00:00:04,360 --> 00:00:09,370 Misalnya, 212 derajat Fahrenheit adalah 100 derajat Celcius dan 32 derajat 4 00:00:09,370 --> 00:00:11,810 Fahrenheit adalah 0 derajat Celcius. 5 00:00:11,810 --> 00:00:14,230 Bukankah lebih baik jika kita memiliki komputer Program yang memungkinkan kita untuk 6 00:00:14,230 --> 00:00:16,950 mengkonversi dari, katakanlah, Fahrenheit ke Celsius? 7 00:00:16,950 --> 00:00:18,510 >> Nah, kita dapat menulis program itu. 8 00:00:18,510 --> 00:00:24,350 Mari kita mulai dengan meliputi cs50.h, sehingga kita dapat menggunakan fungsi yang disebut 9 00:00:24,350 --> 00:00:28,610 mendapatkan float, yang, seperti mendapatkan int, mendapat nomor dari pengguna, tapi kali ini 10 00:00:28,610 --> 00:00:31,440 angka floating point - satu dengan titik desimal. 11 00:00:31,440 --> 00:00:34,840 >> Mari kita juga termasuk io.h standar sehingga kita memiliki akses ke 12 00:00:34,840 --> 00:00:36,230 fungsi seperti print f. 13 00:00:36,230 --> 00:00:40,000 Dan mari kita juga mendeklarasikan main dengan cara yang biasa. 14 00:00:40,000 --> 00:00:42,675 >> Mari kita selanjutnya meminta pengguna untuk suhu di Fahrenheit. 15 00:00:42,675 --> 00:00:46,050 16 00:00:46,050 --> 00:00:49,220 Mari kita sekarang benar-benar mendapatkan suhu yang dari pengguna, pertama dengan 17 00:00:49,220 --> 00:00:52,910 mendeklarasikan variabel disebut f dari tipe float. 18 00:00:52,910 --> 00:00:56,750 Sebuah float, sekali lagi, yang berarti variabel yang menyimpan nilai floating point, 19 00:00:56,750 --> 00:00:58,200 satu dengan titik desimal. 20 00:00:58,200 --> 00:01:01,780 >> Mari kita menetapkan pengembalian nilai get mengambang. 21 00:01:01,780 --> 00:01:06,080 Dan kemudian mari kita lakukan sedikit aritmatika di atasnya, pertama menyatakan mengapung lain 22 00:01:06,080 --> 00:01:11,690 disebut C Celcius dan simpan dalam C hasil dari beberapa aritmatika umum. 23 00:01:11,690 --> 00:01:19,060 5.0 dibagi dengan 9,0 kali F dikurangi 32,0. 24 00:01:19,060 --> 00:01:23,440 >> Sekarang mari kita mencetak hasil perhitungan ini. 25 00:01:23,440 --> 00:01:24,730 persen f - 26 00:01:24,730 --> 00:01:27,890 menandakan tempat untuk nilai pecahan - 27 00:01:27,890 --> 00:01:31,680 koma C untuk mencetak suhu dalam Celcius. 28 00:01:31,680 --> 00:01:33,000 Mari menghemat terakhir saya. 29 00:01:33,000 --> 00:01:38,220 Kompilasi dengan F ke C. Jalankan program dengan dot slash F ke C. 30 00:01:38,220 --> 00:01:39,940 >> Dan mari kita coba yang umum suhu. 31 00:01:39,940 --> 00:01:45,820 212 derajat Fahrenheit di adalah 100 derajat Celcius. 32 00:01:45,820 --> 00:01:50,090 32 derajat Fahrenheit di adalah 0 derajat Celcius di. 33 00:01:50,090 --> 00:01:54,240 >> Sekarang mari kita memperbaiki program ini sedikit bit dengan tidak mencetak cukup banyak 0 s 34 00:01:54,240 --> 00:01:55,820 setelah itu tempat desimal. 35 00:01:55,820 --> 00:01:57,940 Untuk melakukan hal ini, saya akan kembali ke line 11. 36 00:01:57,940 --> 00:02:03,430 Dan bukan hanya menentukan persen f, Aku akan sebaliknya menentukan, misalnya, 37 00:02:03,430 --> 00:02:08,800 0,1 f, menginformasikan print f bahwa saya hanya ingin mencetak nilai floating point 38 00:02:08,800 --> 00:02:11,750 satu nilai setelah tempat desimal. 39 00:02:11,750 --> 00:02:13,630 >> Mari kita resave program saya. 40 00:02:13,630 --> 00:02:19,680 Mengkompilasi ulang dengan make F ke C. Kemudian memutarkan lagi dengan dot slash F ke C. Dan 41 00:02:19,680 --> 00:02:24,910 mari kita coba lagi dengan, katakanlah, 212, yang memberikan saya 100,0. 42 00:02:24,910 --> 00:02:28,360 >> Sekarang perlu dicatat bahwa yang saya lakukan sesuatu yang sangat sengaja sejalan 9. 43 00:02:28,360 --> 00:02:35,830 Perhatikan bagaimana saya menulis 5 adalah 5,0, 9 sebagai 9,0, dan bahkan 32 sebagai 32,0. 44 00:02:35,830 --> 00:02:39,000 Nah, dua yang pertama dari nilai-nilai yang sangat sengaja dipilih untuk menjadi 45 00:02:39,000 --> 00:02:42,200 nilai-nilai floating point, bukan hanya karena konsistensi dengan sisanya 46 00:02:42,200 --> 00:02:42,940 dari program saya - 47 00:02:42,940 --> 00:02:45,110 yang jelas melibatkan mengambang point nilai - 48 00:02:45,110 --> 00:02:50,210 tetapi karena ternyata C itu, Jika Anda membagi int oleh int lain, 49 00:02:50,210 --> 00:02:54,350 jawaban yang dihasilkan Anda akan dapatkan adalah sendiri merupakan int, bahkan jika itu berarti 50 00:02:54,350 --> 00:02:57,450 harus membuang segala sesuatu setelah titik desimal. 51 00:02:57,450 --> 00:03:04,990 >> Dengan kata lain, jika saya mengubah 5.0 ini untuk 5 atau ini 9,0-9 lalu simpan 52 00:03:04,990 --> 00:03:10,550 program saya, mengkompilasi ulang dengan make F ke C, dan kemudian jalankan kembali dengan dot slash F 53 00:03:10,550 --> 00:03:15,310 untuk C dan ketik input seperti 212, melihat bahwa jawaban saya akan 54 00:03:15,310 --> 00:03:17,860 mendapatkan waktu ini sebenarnya sangat salah. 55 00:03:17,860 --> 00:03:23,570 0.0 bukanlah gelar yang benar dalam Celsius sebagai 212 Fahrenheit. 56 00:03:23,570 --> 00:03:24,500 >> Nah, apa yang terjadi? 57 00:03:24,500 --> 00:03:29,410 Nah, sejalan 9, karena 5 sekarang merupakan integer dan karena 9 sekarang merupakan 58 00:03:29,410 --> 00:03:34,810 integer, hasilnya matematis harus 0,5555 dan seterusnya. 59 00:03:34,810 --> 00:03:39,120 Tetapi karena hasilnya, menurut Aturan C, harus menjadi int, yang 60 00:03:39,120 --> 00:03:44,020 0,5555 akan dibuang, meninggalkan kami dengan hanya 0. 61 00:03:44,020 --> 00:03:48,600 >> Jadi pada akhirnya, saya akhirnya mengalikan cukup sengaja 0 kali f dikurangi 62 00:03:48,600 --> 00:03:52,830 32,0, yang tidak peduli apa selalu akan memberikan 0. 63 00:03:52,830 --> 00:03:56,930 Jadi perlu diingat, setiap saat menggunakan nilai-nilai floating point dalam kedekatan 64 00:03:56,930 --> 00:03:59,860 ints, Anda mungkin tidak selalu mendapatkan jawaban sehingga Anda harapkan. 65 00:03:59,860 --> 00:04:04,220 Dan jadi berhati-hati untuk menggunakan, seperti yang saya lakukan di nilai kasus pertama, floating point 66 00:04:04,220 --> 00:04:06,530 sepanjang untuk menghindari isu-isu tersebut. 67 00:04:06,530 --> 00:04:08,267