1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] Fungsi merupakan bagian dari kode yang digunakan dalam program yang lebih besar 2 00:00:09,640 --> 00:00:11,430 untuk melakukan tugas tertentu. 3 00:00:11,430 --> 00:00:15,060 Mereka juga dikenal sebagai prosedur, subrutin, dan subprogram, 4 00:00:15,060 --> 00:00:18,320 karena mereka benar-benar hanya program mini dalam program. 5 00:00:18,320 --> 00:00:20,340 Meskipun Anda mungkin tidak menyadari, 6 00:00:20,340 --> 00:00:24,090 Anda pasti telah menggunakan fungsi yang sudah jika Anda telah diprogram dalam C. 7 00:00:24,090 --> 00:00:26,770 Ketika Anda menulis hal-hal ke layar menggunakan printf, 8 00:00:26,770 --> 00:00:29,380 Anda benar-benar menggunakan fungsi yang disebut printf. 9 00:00:29,380 --> 00:00:33,760 Demikian juga, GetInt dan GetString adalah fungsi yang CS50 menyediakan untuk Anda. 10 00:00:33,760 --> 00:00:37,750 Sebagai programmer, kita menggunakan fungsi untuk sejumlah alasan. 11 00:00:37,750 --> 00:00:41,240 >> Memiliki fungsi untuk melakukan tugas umum seperti menulis ke layar 12 00:00:41,240 --> 00:00:44,480 dan mendorong pengguna untuk input menyelamatkan kita saat pemrograman. 13 00:00:44,480 --> 00:00:47,510 Ini tidak perlu untuk menulis kode untuk melakukan hal-hal yang sama 14 00:00:47,510 --> 00:00:49,520 karena mereka sudah lakukan bagi kita. 15 00:00:49,520 --> 00:00:54,580 Ini bahkan tidak perlu bagi kita untuk memahami bagaimana fungsi-fungsi bekerja secara internal. 16 00:00:54,580 --> 00:00:58,880 Sebaliknya, kita hanya perlu tahu bagaimana untuk menggunakan atau memanggil mereka dalam program kami. 17 00:00:58,880 --> 00:01:02,040 Ini juga berguna untuk menulis fungsi dalam program yang lebih besar 18 00:01:02,040 --> 00:01:04,330 bahkan jika Anda tidak berencana untuk memiliki orang lain menggunakannya, 19 00:01:04,330 --> 00:01:06,830 hanya untuk membagi tugas yang lebih besar di tangan. 20 00:01:06,830 --> 00:01:11,910 Dengan cara ini, Anda memberikan struktur kode Anda seperti Anda akan memberikan struktur esai, 21 00:01:11,910 --> 00:01:15,180 dan dengan proyek benar-benar besar Anda mengaktifkan beberapa orang 22 00:01:15,180 --> 00:01:16,730 untuk bekerja pada bagian yang berbeda pada saat yang sama 23 00:01:16,730 --> 00:01:20,480 karena itu jelas di mana pekerjaan satu orang berakhir dan yang lain itu dimulai. 24 00:01:20,480 --> 00:01:26,530 >> Fungsi biasanya beroperasi pada 1 atau lebih input, yang dikenal sebagai argumen atau parameter, 25 00:01:26,530 --> 00:01:30,520 mengubah mereka menjadi input nilai output yang kemudian dikembalikan. 26 00:01:30,520 --> 00:01:34,950 Namun, itu juga mungkin untuk memiliki fungsi yang tidak menggunakan argumen input 27 00:01:34,950 --> 00:01:36,400 dan tidak kembali output. 28 00:01:36,400 --> 00:01:38,790 Oke, cukup dengan hal-hal yang berbulu. 29 00:01:38,790 --> 00:01:41,790 Mari kita lihat beberapa fungsi nyata dalam C. 30 00:01:41,790 --> 00:01:45,570 >> Di sini kita memiliki fungsi yang disebut persegi yang, percaya atau tidak, 31 00:01:45,570 --> 00:01:47,570 menghitung kuadrat dari input. 32 00:01:47,570 --> 00:01:49,490 Mari kita membedah sintaks dari itu. 33 00:01:49,490 --> 00:01:51,860 Kata pertama yang Anda lihat dalam fungsi, int, 34 00:01:51,860 --> 00:01:57,460 menentukan jenis kembalinya fungsi, yaitu, tipe C output fungsi itu. 35 00:01:57,460 --> 00:02:00,370 Fungsi ini akan menampilkan nilai dengan tipe int. 36 00:02:00,370 --> 00:02:04,100 Kata berikutnya yang Anda lihat adalah nama fungsi, persegi dalam kasus ini. 37 00:02:04,100 --> 00:02:07,390 Penamaan fungsi tepat sangat penting 38 00:02:07,390 --> 00:02:11,260 karena itu mungkin dokumentasi yang paling terlihat dari apa fungsi melakukan. 39 00:02:11,260 --> 00:02:14,880 Ini mungkin akan keren untuk nama fungsi ini Shazam atau booyah, 40 00:02:14,880 --> 00:02:18,340 tapi itu tidak akan menceritakan apa-apa tentang apa fungsi tidak. 41 00:02:18,340 --> 00:02:23,470 >> Setelah nama fungsi input datang ke fungsi, argumen. 42 00:02:23,470 --> 00:02:26,380 Mereka terdaftar dalam satu set tanda kurung 43 00:02:26,380 --> 00:02:30,160 dengan kedua jenis mereka dan nama yang akan digunakan untuk mereka dalam fungsi tubuh. 44 00:02:30,160 --> 00:02:34,030 Persegi hanya butuh 1 argumen, int ke persegi, 45 00:02:34,030 --> 00:02:36,160 yang saya telah memutuskan untuk memberikan x nama. 46 00:02:36,160 --> 00:02:40,760 Ini mengakhiri deklarasi fungsi atau prototipe. 47 00:02:40,760 --> 00:02:43,320 Yang keriting kawat gigi yang mengelilingi seluruh fungsi 48 00:02:43,320 --> 00:02:45,870 menandakan awal dan akhir fungsi tubuh, 49 00:02:45,870 --> 00:02:48,320 definisi fungsi itu sendiri. 50 00:02:48,320 --> 00:02:50,300 Persegi adalah fungsi yang cukup sederhana. 51 00:02:50,300 --> 00:02:54,100 Ini hanya punya 1 line, karena semua yang harus kita lakukan adalah kalikan x dengan sendirinya. 52 00:02:54,100 --> 00:02:59,250 Kembalinya Kata menentukan nilai output dan memicu akhir fungsi. 53 00:02:59,250 --> 00:03:03,430 Untuk menggunakan fungsi persegi, kita harus memberikan masukan 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 melakukan itu. 56 00:03:08,140 --> 00:03:13,600 Kita bisa lulus dalam int baku, seperti 6, atau kita bisa lulus dalam variabel seperti. 57 00:03:13,600 --> 00:03:15,700 Perhatikan bahwa setiap kali kita sebut persegi, 58 00:03:15,700 --> 00:03:18,330 kita menangkap output dalam variabel dan kemudian mencetaknya. 59 00:03:18,330 --> 00:03:22,690 Namun, kami tidak perlu menyimpan nilai kembali dalam variabel dan kemudian mencetak. 60 00:03:22,690 --> 00:03:27,090 Kami hanya bisa mengirimkannya langsung ke printf seperti yang kita lakukan ketika kita persegi 10, 61 00:03:27,090 --> 00:03:30,580 tapi ini tidak berarti bahwa kita tidak memiliki akses ke nilai pengembalian persegi 10 62 00:03:30,580 --> 00:03:32,230 tempat lain dalam kode. 63 00:03:32,230 --> 00:03:34,890 Mari kita lihat contoh lain yang sederhana. 64 00:03:34,890 --> 00:03:38,750 >> Kali ini, kita akan jumlah 2 mengapung bersama-sama sehingga kita bisa melihat apa yang tampak seperti fungsi 65 00:03:38,750 --> 00:03:41,220 saat itu punya 2 input bukan hanya 1. 66 00:03:41,220 --> 00:03:43,950 Seperti yang Anda lihat, itu tidak jauh berbeda. 67 00:03:43,950 --> 00:03:47,330 Semua yang kita lakukan adalah menambahkan argumen 2, pelampung bernama b, 68 00:03:47,330 --> 00:03:51,820 ke daftar argumen menggunakan koma untuk memisahkan dari argumen pertama, melayang. 69 00:03:51,820 --> 00:03:55,550 Jadi, persegi dan fungsi sum cukup mudah dimengerti 70 00:03:55,550 --> 00:03:58,930 karena mereka setara dengan fungsi yang telah Anda lihat sebelumnya di kelas matematika. 71 00:03:58,930 --> 00:04:01,610 Sekarang, mari kita lihat fungsi yang sedikit berbeda. 72 00:04:01,610 --> 00:04:04,620 Alih-alih kembali nilai, memodifikasi negara. 73 00:04:04,620 --> 00:04:07,260 Ini dikenal sebagai memiliki efek samping. 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 memiliki tipe kembali yang belum kita lihat sebelumnya, batal. 76 00:04:13,410 --> 00:04:16,730 >> Void digunakan untuk mengatakan bahwa fungsi tidak mengembalikan apa-apa. 77 00:04:16,730 --> 00:04:19,410 Tidak ada variabel tipe void, 78 00:04:19,410 --> 00:04:22,760 jadi jika Anda mencoba untuk mengembalikan sesuatu dari fungsi seperti printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 compiler akan berteriak pada Anda. 80 00:04:24,290 --> 00:04:29,390 Di dalam printf_fudd_style, kita melihat bahwa sementara fungsi masih melakukan tugas, 81 00:04:29,390 --> 00:04:31,890 yaitu, beralih semua ke Rs Ws, 82 00:04:31,890 --> 00:04:36,380 titik berfungsi untuk memodifikasi string dan kemudian mencetaknya di layar, 83 00:04:36,380 --> 00:04:39,400 mengubah keadaan program bukannya kembali hasilnya. 84 00:04:39,400 --> 00:04:43,700 Menggunakan fungsi ini sangat mirip dengan menggunakan persegi dan fungsi sum, 85 00:04:43,700 --> 00:04:46,950 kecuali kita tidak menyimpan hasilnya dalam variabel atau menularkannya ke fungsi lain 86 00:04:46,950 --> 00:04:49,520 karena tidak ada hasil untuk berbicara. 87 00:04:49,520 --> 00:04:53,180 Jadi, ketika kita mengkompilasi dan menjalankan kami Elmer Fudd Program, 88 00:04:53,180 --> 00:04:56,970 Anda melihat bahwa "Kamu bajingan kelinci!" akan berubah hak untuk 89 00:04:56,970 --> 00:04:58,730 "Kau wascally Wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> Akhirnya, ada fungsi 1 lebih layak mendiskusikan 91 00:05:02,250 --> 00:05:06,810 karena Anda telah menggunakannya dalam setiap program C yang pernah ditulis, utama. 92 00:05:06,810 --> 00:05:09,450 Main adalah fungsi seperti yang lain. 93 00:05:09,450 --> 00:05:13,580 Ini punya tipe kembali, nama, daftar argumen, dan tubuh. 94 00:05:13,580 --> 00:05:16,110 Jenis kembalinya utama adalah selalu int, 95 00:05:16,110 --> 00:05:19,120 dan int ini digunakan untuk mengkomunikasikan status program ketika selesai. 96 00:05:19,120 --> 00:05:23,360 >> Apakah itu berjalan dengan sukses, atau apakah itu berakhir lebih awal karena kesalahan? 97 00:05:23,360 --> 00:05:26,390 Kembali ke nol menunjukkan berjalan sukses, 98 00:05:26,390 --> 00:05:29,510 dan kembali setiap nilai non-nol menunjukkan kesalahan. 99 00:05:29,510 --> 00:05:31,950 Tergantung pada jenis program yang Anda sedang menulis, 100 00:05:31,950 --> 00:05:34,960 kembali kode yang berbeda untuk kesalahan yang berbeda dapat membantu 101 00:05:34,960 --> 00:05:37,210 bagi orang-orang yang menggunakan program Anda nanti. 102 00:05:37,210 --> 00:05:40,220 Induk argumen yang sedikit lebih rumit. 103 00:05:40,220 --> 00:05:42,150 >> Daftar argumen dapat menjadi kosong, 104 00:05:42,150 --> 00:05:45,330 yang kita mengindikasikan dengan menulis kekosongan di antara tanda kurung, 105 00:05:45,330 --> 00:05:50,220 atau daftar dapat memiliki 2 argumen: int dan sebuah array dari char * s. 106 00:05:50,220 --> 00:05:52,820 Ini digunakan ketika program Anda berniat untuk menggunakan 107 00:05:52,820 --> 00:05:56,490 argumen berlalu dalam pada baris perintah saat program dipanggil. 108 00:05:56,490 --> 00:05:59,690 Argumen int biasanya disebut argc, 109 00:05:59,690 --> 00:06:03,300 dan itu sama dengan panjang dari array char *, yang dikenal sebagai argv. 110 00:06:03,300 --> 00:06:07,080 Argv berisi argumen baris perintah dilewatkan ke dalam program. 111 00:06:07,080 --> 00:06:11,440 Dalam pendek yang lain, kita akan berbicara tentang bagaimana menggunakan variabel tersebut secara lebih rinci. 112 00:06:11,440 --> 00:06:15,220 Untuk saat ini, Anda dapat merasa bebas untuk menyatakan cara utama baik. 113 00:06:15,220 --> 00:06:19,410 Saya biasanya memilih untuk menulis itu keluar dengan cara yang lebih pendek, tanpa argumen, jika memungkinkan. 114 00:06:19,410 --> 00:06:22,230 >> Sekarang Anda tahu bagaimana menulis fungsi, 115 00:06:22,230 --> 00:06:25,030 Anda baik pada cara untuk mengembangkan lebih besar, program yang lebih kompleks. 116 00:06:25,030 --> 00:06:29,740 Nama saya adalah Nate Hardison. Ini adalah CS50.