1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] Fungsi bahagian-bahagian kod yang digunakan dalam program yang lebih besar 2 00:00:09,640 --> 00:00:11,430 untuk melaksanakan tugas yang tertentu. 3 00:00:11,430 --> 00:00:15,060 Mereka juga dikenali sebagai prosedur, subrutin, dan subprograms, 4 00:00:15,060 --> 00:00:18,320 kerana mereka benar-benar hanya program mini dalam program. 5 00:00:18,320 --> 00:00:20,340 Walaupun anda mungkin tidak perasan, 6 00:00:20,340 --> 00:00:24,090 anda yang paling pasti telah menggunakan fungsi sudah jika anda telah diprogramkan ke dalam C. 7 00:00:24,090 --> 00:00:26,770 Apabila anda menulis barangan ke skrin menggunakan printf, 8 00:00:26,770 --> 00:00:29,380 anda sebenarnya menggunakan fungsi yang dipanggil printf. 9 00:00:29,380 --> 00:00:33,760 Begitu juga, GetInt dan GetString adalah fungsi yang CS50 menyediakan untuk anda. 10 00:00:33,760 --> 00:00:37,750 Sebagai pengaturcara, kita gunakan fungsi untuk beberapa sebab. 11 00:00:37,750 --> 00:00:41,240 >> Mempunyai fungsi untuk melaksanakan tugas-tugas biasa seperti menulis kepada skrin 12 00:00:41,240 --> 00:00:44,480 dan menyebabkan pengguna untuk input menyelamatkan kita masa apabila pengaturcaraan. 13 00:00:44,480 --> 00:00:47,510 Ia tidak perlu untuk menulis kod untuk melakukan perkara-perkara yang sama 14 00:00:47,510 --> 00:00:49,520 kerana mereka sudah dilakukan untuk kita. 15 00:00:49,520 --> 00:00:54,580 Ia tidak malah perlu bagi kita untuk memahami dengan tepat bagaimana fungsi bekerja dalaman. 16 00:00:54,580 --> 00:00:58,880 Sebaliknya, kita hanya perlu tahu bagaimana untuk menggunakan atau memanggil mereka dalam program-program kami. 17 00:00:58,880 --> 00:01:02,040 Ia juga membantu untuk menulis fungsi dalam program-program yang lebih besar 18 00:01:02,040 --> 00:01:04,330 walaupun anda tidak merancang untuk mempunyai yang lain menggunakan mereka, 19 00:01:04,330 --> 00:01:06,830 hanya untuk membahagikan tugas yang lebih besar di tangan. 20 00:01:06,830 --> 00:01:11,910 Cara ini, anda memberi struktur kepada kod anda sama seperti anda akan memberikan struktur kepada esei, 21 00:01:11,910 --> 00:01:15,180 dan dengan projek-projek yang benar-benar besar anda membolehkan beberapa orang 22 00:01:15,180 --> 00:01:16,730 untuk bekerja pada bahagian yang berbeza pada masa yang sama 23 00:01:16,730 --> 00:01:20,480 kerana ia adalah jelas di mana kerja seorang berakhir dan satu lagi bermula. 24 00:01:20,480 --> 00:01:26,530 >> Fungsi biasanya beroperasi pada 1 atau lebih input, yang dikenali sebagai hujah atau parameter, 25 00:01:26,530 --> 00:01:30,520 mengubah input kepada nilai output yang kemudian kembali. 26 00:01:30,520 --> 00:01:34,950 Walau bagaimanapun, ia juga mungkin mempunyai fungsi yang tidak menggunakan mana-mana hujah input 27 00:01:34,950 --> 00:01:36,400 dan tidak kembali output. 28 00:01:36,400 --> 00:01:38,790 Okay, cukup dengan barangan kembang. 29 00:01:38,790 --> 00:01:41,790 Mari kita lihat pada beberapa fungsi sebenar dalam C. 30 00:01:41,790 --> 00:01:45,570 >> Di sini kita mempunyai satu fungsi yang dipanggil persegi itu, percaya atau tidak, 31 00:01:45,570 --> 00:01:47,570 mengira persegi input. 32 00:01:47,570 --> 00:01:49,490 Marilah kita membedah sintaks. 33 00:01:49,490 --> 00:01:51,860 Perkataan pertama yang anda lihat dalam fungsi, int, 34 00:01:51,860 --> 00:01:57,460 menentukan jenis pulangan fungsi, iaitu, jenis C output fungsi. 35 00:01:57,460 --> 00:02:00,370 Fungsi ini akan memaparkan nilai dengan int jenis. 36 00:02:00,370 --> 00:02:04,100 Perkataan seterusnya yang anda lihat adalah nama fungsi, persegi dalam kes ini. 37 00:02:04,100 --> 00:02:07,390 Menamakan fungsi sesuai adalah amat penting 38 00:02:07,390 --> 00:02:11,260 kerana ia mungkin dokumentasi yang paling ketara apa fungsi tidak. 39 00:02:11,260 --> 00:02:14,880 Ia mungkin sejuk untuk menamakan ini shazam fungsi atau booyah, 40 00:02:14,880 --> 00:02:18,340 tetapi itu tidak akan memberitahu kita apa-apa tentang apa fungsi tidak. 41 00:02:18,340 --> 00:02:23,470 >> Berikutan nama fungsi datang input kepada fungsi, hujah-hujah. 42 00:02:23,470 --> 00:02:26,380 Mereka disenaraikan di dalam satu set kurungan 43 00:02:26,380 --> 00:02:30,160 dengan kedua-dua jenis dan nama mereka untuk menggunakan mereka dalam badan fungsi. 44 00:02:30,160 --> 00:02:34,030 Square mengambil hanya 1 hujah, int persegi, 45 00:02:34,030 --> 00:02:36,160 yang saya telah memutuskan untuk memberi nama x. 46 00:02:36,160 --> 00:02:40,760 Ini berakhir akuan fungsi atau prototaip. 47 00:02:40,760 --> 00:02:43,320 Pendakap kerinting mengelilingi seluruh fungsi 48 00:02:43,320 --> 00:02:45,870 menandakan permulaan dan akhir badan fungsi, 49 00:02:45,870 --> 00:02:48,320 definisi fungsi sendiri. 50 00:02:48,320 --> 00:02:50,300 Square adalah fungsi yang agak mudah. 51 00:02:50,300 --> 00:02:54,100 Ia hanya mendapat 1 baris, kerana semua yang perlu kita lakukan adalah membiak x dengan sendirinya. 52 00:02:54,100 --> 00:02:59,250 Pulangan perkataan menentukan nilai pengeluaran dan mencetuskan akhir fungsi. 53 00:02:59,250 --> 00:03:03,430 Untuk menggunakan fungsi persegi, kita perlu untuk membekalkan input yang sesuai 54 00:03:03,430 --> 00:03:05,310 dan kemudian menangkap output. 55 00:03:05,310 --> 00:03:08,140 Di sini, anda melihat beberapa cara untuk berbuat demikian. 56 00:03:08,140 --> 00:03:13,600 Kita boleh lulus dalam int mentah, seperti 6, atau kita boleh lulus dalam pembolehubah seperti. 57 00:03:13,600 --> 00:03:15,700 Perhatikan bahawa setiap kali kita panggil persegi, 58 00:03:15,700 --> 00:03:18,330 kita menangkap output dalam pembolehubah dan kemudian mencetaknya. 59 00:03:18,330 --> 00:03:22,690 Walau bagaimanapun, kita tidak perlu untuk menyimpan nilai pulangan dalam pembolehubah dan kemudian mencetak. 60 00:03:22,690 --> 00:03:27,090 Kami hanya boleh menghantar ia secara langsung printf sebagai kita lakukan apabila kita persegi 10, 61 00:03:27,090 --> 00:03:30,580 tetapi ini tidak bermakna bahawa kita tidak mempunyai akses kepada nilai pulangan persegi 10 62 00:03:30,580 --> 00:03:32,230 tempat lain dalam kod. 63 00:03:32,230 --> 00:03:34,890 Mari kita melihat satu lagi contoh mudah. 64 00:03:34,890 --> 00:03:38,750 >> Kali ini, kami akan meringkaskannya 2 terapung bersama-sama supaya kita boleh melihat apa fungsi kelihatan seperti 65 00:03:38,750 --> 00:03:41,220 apabila ia mendapat 2 input dan bukannya hanya 1. 66 00:03:41,220 --> 00:03:43,950 Seperti yang anda boleh lihat, ia tidak banyak berbeza. 67 00:03:43,950 --> 00:03:47,330 Semua yang kita lakukan adalah menambah hujah 2, apungan yang dinamakan b, 68 00:03:47,330 --> 00:03:51,820 senarai hujah menggunakan koma untuk memisahkan ia daripada hujah pertama, terapung. 69 00:03:51,820 --> 00:03:55,550 Jadi, dataran dan fungsi jumlah cukup mudah untuk memahami 70 00:03:55,550 --> 00:03:58,930 kerana mereka berada bersamaan dengan fungsi-fungsi yang anda telah dilihat sebelum ini di dalam kelas matematik. 71 00:03:58,930 --> 00:04:01,610 Sekarang, mari kita melihat fungsi yang sedikit berbeza. 72 00:04:01,610 --> 00:04:04,620 Sebaliknya kembali nilai, ia mengubah keadaan. 73 00:04:04,620 --> 00:04:07,260 Ini dikenali sebagai mempunyai kesan sampingan. 74 00:04:07,260 --> 00:04:10,750 Dalam program ini, fungsi printf_fudd_style 75 00:04:10,750 --> 00:04:13,410 mempunyai jenis pulangan yang kita tidak pernah melihat sebelum ini, tidak sah. 76 00:04:13,410 --> 00:04:16,730 >> Tidak sah digunakan untuk mengatakan bahawa fungsi tidak kembali apa-apa. 77 00:04:16,730 --> 00:04:19,410 Terdapat tiada pembolehubah terbatal jenis, 78 00:04:19,410 --> 00:04:22,760 jadi jika anda cuba untuk kembali sesuatu dari fungsi seperti printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 pengkompil akan menjerit pada anda. 80 00:04:24,290 --> 00:04:29,390 Inside printf_fudd_style, kita lihat bahawa manakala fungsi masih melakukan tugas, 81 00:04:29,390 --> 00:04:31,890 iaitu menukar semua Rs Ws, 82 00:04:31,890 --> 00:04:36,380 titik fungsi adalah untuk mengubah suai rentetan dan kemudian mencetak ia keluar pada skrin, 83 00:04:36,380 --> 00:04:39,400 mengubah keadaan program dan bukannya kembali hasil. 84 00:04:39,400 --> 00:04:43,700 Menggunakan fungsi ini sangat banyak seperti menggunakan persegi kami dan fungsi jumlah, 85 00:04:43,700 --> 00:04:46,950 kecuali kita tidak menyimpan hasil dalam pembolehubah atau lulus ia dimatikan ke fungsi yang lain 86 00:04:46,950 --> 00:04:49,520 kerana tidak ada hasil untuk bercakap tentang. 87 00:04:49,520 --> 00:04:53,180 Jadi, apabila kita menyusun dan menjalankan program Elmer Fudd kami, 88 00:04:53,180 --> 00:04:56,970 anda melihat bahawa "Anda terhina arnab!" mendapat berubah hak untuk 89 00:04:56,970 --> 00:04:58,730 "Anda wascally wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> Akhirnya, ada 1 lagi fungsi bernilai membincangkan 91 00:05:02,250 --> 00:05:06,810 kerana anda telah menggunakan ia dalam program C setiap anda pernah ditulis, utama. 92 00:05:06,810 --> 00:05:09,450 Utama adalah fungsi sama seperti mana-mana orang lain. 93 00:05:09,450 --> 00:05:13,580 Ia mendapat jenis balasan, nama, senarai hujah, dan badan. 94 00:05:13,580 --> 00:05:16,110 Jenis pulangan utama adalah sentiasa int, 95 00:05:16,110 --> 00:05:19,120 dan int ini digunakan untuk berkomunikasi status program apabila ia selesai. 96 00:05:19,120 --> 00:05:23,360 >> Adakah ia berjalan dengan jayanya, atau adakah ia berakhir awal kerana kesilapan? 97 00:05:23,360 --> 00:05:26,390 Kembali kepada sifar menunjukkan jangka yang berjaya, 98 00:05:26,390 --> 00:05:29,510 dan kembali apa-apa nilai bukan sifar menunjukkan kesilapan. 99 00:05:29,510 --> 00:05:31,950 Bergantung kepada jenis program yang anda menulis, 100 00:05:31,950 --> 00:05:34,960 kembali kod berbeza untuk kesilapan yang berbeza boleh membantu 101 00:05:34,960 --> 00:05:37,210 bagi orang-orang yang menggunakan program anda kemudian. 102 00:05:37,210 --> 00:05:40,220 Sesalur hujah adalah sedikit lebih rumit. 103 00:05:40,220 --> 00:05:42,150 >> Senarai hujah sama ada boleh menjadi kosong, 104 00:05:42,150 --> 00:05:45,330 yang kita tandakan dengan bertulis tidak sah di antara kurungan, 105 00:05:45,330 --> 00:05:50,220 atau senarai yang boleh mempunyai 2 hujah: int dan pelbagai char * s. 106 00:05:50,220 --> 00:05:52,820 Ini adalah digunakan apabila program anda bercadang untuk menggunakan 107 00:05:52,820 --> 00:05:56,490 hujah-hujah yang diluluskan di atas baris arahan apabila program ini dilaksanakan. 108 00:05:56,490 --> 00:05:59,690 Hujah int biasanya dipanggil argc, 109 00:05:59,690 --> 00:06:03,300 dan ia adalah sama panjang tatasusunan * char, yang dikenali sebagai argv. 110 00:06:03,300 --> 00:06:07,080 Argv mengandungi hujah baris arahan yang diluluskan ke dalam program ini. 111 00:06:07,080 --> 00:06:11,440 Dalam satu lagi pendek, kita akan bercakap tentang bagaimana untuk menggunakan pembolehubah ini dengan lebih terperinci. 112 00:06:11,440 --> 00:06:15,220 Untuk sekarang, anda boleh berasa bebas untuk mengisytiharkan sama ada cara utama. 113 00:06:15,220 --> 00:06:19,410 Saya biasanya memilih untuk menulis ia keluar cara yang lebih singkat, dengan tiada hujah, apabila mungkin. 114 00:06:19,410 --> 00:06:22,230 >> Sekarang anda tahu bagaimana untuk menulis fungsi, 115 00:06:22,230 --> 00:06:25,030 anda juga pada cara anda untuk membangunkan lebih besar, program yang lebih kompleks. 116 00:06:25,030 --> 00:06:29,740 Nama saya adalah Nate Hardison. Ini adalah CS50.