Halo, dan selamat datang kembali.
Dalam kuliah ini, saya ingin berbicara tentang mendefinisikan fungsi dalam c.
Mendefinisikan sebuah fungsi.
Kita tahu pentingnya fungsi.
Kami memahami kelebihannya.
Kami akan ingin menggunakan fungsi dalam program kami.
Jadi ketika Anda membuat fungsi pro di c, Anda harus menentukan
header fungsi sebagai baris pertama dari definisi fungsi.
Kita akan berbicara tentang mendefinisikan sebuah fungsi, dan kita juga
akan berbicara tentang mengimplementasikan sebuah fungsi.
Menerapkan fungsi hanya pemecahan masalah, itu hanya
kode c biasa.
Mendefinisikan suatu fungsi mengatakan bahwa fungsi itu ada.
Jadi, ketika Anda mendefinisikan suatu fungsi, hal pertama yang Anda lakukan adalah
Anda memiliki tajuk fungsi itu dan kemudian Anda mengikuti itu dengan kurung kurawal yang memulai kode
blok untuk fungsi tersebut.
Jadi seperti saat Anda menggunakan kurung kurawal dalam
pernyataan if, sama seperti saat Anda menggunakan kurung kurawal dalam perulangan for, kecuali kurung
kurawal diperlukan untuk fungsi.
Tidak ada menghilangkannya.
Dan itu selalu menandakan awal dari kode untuk fungsi tersebut.
Apa pun di antara awal dan kurung kurawal akhir adalah kode
untuk fungsi tersebut.
Ini adalah tempat yang Anda tuju untuk melaksanakan tugas.
Jadi di antara kurung kurawal adalah disebut badan fungsi dan
baris pertama fungsi disebut header fungsi.
Header fungsi mendefinisikan nama fungsi, parameter
fungsi.
Kita akan berbicara tentang parameter dan argumen secara rinci.
Tapi sekarang, kamu hanya perlu tahu bahwa ada
sesuatu yang disebut parameter.
Dan parameternya akan ditentukan jumlah dan jenis nilai bagaimana
Anda dapat melewatkan data, parameter ada hubungannya dengan data yang lewat.
Jenis untuk nilai bahwa fungsi kembali.
Kami menyebutkan bahwa fungsi kami dapat mengembalikan data.
Jadi di header fungsi itu, Anda
akan memiliki nama fungsi, data yang Anda dapat mengambil dapat diterima oleh
fungsi dan data yang dikembalikan oleh fungsi.
Kami tidak akan fokus sekarang pada data yang dapat diteruskan atau data
yang dikembalikan, kami hanya akan berbicara tentang membuat fungsi sederhana.
Tubuh fungsi berisi: hanya kode biasa, dan kode itu dieksekusi
ketika Anda memanggil atau memanggil fungsi.
Dan fungsi tubuh itu sendiri akan memiliki akses ke nilai apa pun yang
diteruskan sebagai argumen.
Jadi data yang Anda berikan itu, Anda dapat memanfaatkan data
itu di dalam isi fungsi.
Apa yang terlihat seperti itu? ini, header fungsi.
Fungsi header memiliki kata pertama.
Dan tajuk fungsi adalah kata kunci yang mewakili jenis data yang
akan menjadi dikembalikan dari fungsi.
Kata kunci berikutnya adalah nama fungsinya.
Dan kemudian Anda memiliki tanda kurung kiri dan kemudian Anda memiliki parameter yang dipisahkan
dengan koma, itu akan menjadi data yang diteruskan ke fungsi.
Dan kemudian Anda memilikinya kurung kanan
untuk mengakhiri header fungsi.
Maka Anda memiliki kurung kurawal yang menandakan dimulainya
implementasi fungsi.
Dan Anda memiliki sejumlah pernyataan untuk melakukan tugas.
Seperti yang saya katakan, Anda ingin memiliki fungsi Anda menjadi kecil.
Mereka ingin kompak.
Mereka tidak ingin menjadi seluruh tempat.
Mereka ingin memiliki satu fokus, melakukan sesuatu yang spesifik.
Seperti yang saya katakan jika Anda memiliki fungsi yang mendapat input, membaca input.
Itu tidak mencetak output.
Itu tidak melakukan penyortiran apa pun atau tidak melakukan hal lain.
Jika Anda memiliki fungsi bernama sort, itu mengurutkan data.
Itu tidak mendapat masukan.
Fungsi harus kompak dan kecil.
Jauh lebih mudah untuk men-debug itu fungsi, jadi buatlah mereka kohesif.
Dan kemudian Anda memiliki hak itu kurung kurawal,
yang mengakhiri implementasi fungsi.
Itulah fungsinya terlihat seperti di c.
Sekarang mari kita fokus pada fungsinya nama, dan kita akan berbicara tentang
parameter dan tipe pengembalian nanti.
Baris pertama fungsi lagi definisi memberi tahu kompiler secara berurutan dari kiri
ke kanan tiga hal tentang fungsi, seperti yang saya sebutkan.
Jenis nilai yang dikembalikan, nama fungsi dan kemudian data
apa pun yang diperlukan.
Ini hanya untuk meringkas, itu penting.
Sejauh nama fungsi, Anda inginkan untuk memilih nama fungsi yang bermakna.
Ini sama pentingnya dengan memilih nama variabel yang bermakna.
Ini sangat mempengaruhi keterbacaan program, jadi jangan
beri nama fungsi x atau y.
Beri nama berdasarkan fungsi pada apa yang akan dilakukannya.
Jika itu menambahkan dua angka, beri nama tambah.
Jika dikurangi dua angka, beri nama pengurangan.
Dalam contoh ini, berikut ini fungsi sederhana kami.
Jangan khawatir tentang kekosongan, hanya khawatir tentang nama di sini.
Kami memiliki fungsi bernama pesan cetak.
Dan kemudian kita melihat kurung kurawal itu
yang menandakan awal dari fungsi, dan kemudian kami memiliki beberapa implementasi.
Dan implementasi ini tidak melakukan apa-apa
selain menampilkan string, teks.
Dan kemudian kita memilikinya kurung kurawal kanan.
Jadi ini adalah fungsi yang sangat sederhana tidak berbuat banyak, ini menampilkan output.
Dalam contoh ini untuk cetakan pesan, baris pertama
dari pesan cetak memberi tahu kompiler bahwa fungsi tidak mengembalikan nilai.
Itu kata kuncinya batal.
Sekali lagi, tidak perlu fokus pada itu, tapi itulah yang dilakukan.
Berikutnya adalah nama.
Dan kemudian setelah namanya adalah argumen, mereka disebut parameter.
Dan kami menggunakan kata kunci void lagi jika kita tidak melewatkan data apa pun.
Pernyataan dalam fungsi tubuh bisa tidak ada, tetapi kawat
gigi harus selalu ada.
Jadi Anda tidak harus benar-benar memilikinya implementasi, tetapi Anda harus memiliki kawat gigi
agar suatu fungsi ada di sana.
Jika tidak ada pernyataan dalam tubuh suatu fungsi, tipe
yang dikembalikan harus batal.
Dan lagi, kita akan fokus pada ini nanti dan fungsinya tidak akan melakukan apa pun
karena Anda tidak memiliki implementasi.
Jika Anda mendefinisikan fungsi dengan tubuh kosong, itu masih bisa
berguna meskipun itu tidak mencapai apa-apa.
Anda biasanya melakukan itu selama fase pengujian program yang sangat besar.
Dan apa yang ini memungkinkan Anda lakukan apakah Anda dapat menjalankan
program hanya dengan fungsi tertentu? melakukan sesuatu, membantu Anda menguji
lebih baik, membantu Anda mengisolasi kesalahan.
Anda bahkan dapat memiliki implementasi dalam pengujian di badan
fungsi tetapi beri komentar saja.
Dan kemudian Anda bisa melakukan ini membagi dan menaklukkan pendekatan.
Saat Anda menguji semakin banyak dan lebih, Anda kemudian dapat mulai menempatkan
implementasi di badan fungsi.
Ini adalah langkah demi langkah proses kerja.
Anda terus-menerus bekerja dalam skala kecil potongan, menambahkan kode, menguji kode itu dan kemudian pindah ke
yang berikutnya langkah dan akhirnya seluruh implementasi akan
selesai dan semua fungsi akan dilaksanakan.
Jadi ada kasus penggunaan untuk memiliki badan fungsi yang
tidak memiliki kode atau komentar.
Fungsi penamaan.
Nama sebuah fungsi bisa nama resmi apa saja.
Sama seperti saat kamu penamaan variabel, Anda tidak
dapat menggunakan kata-kata yang dicadangkan.
Jadi ini adalah kata kunci dalam bahasa seperti enter ganda
karena mereka mewakili tipe data.
Sizeof adalah operator.
Anda ingin bisa menggunakannya untuk atau jika.
Anda juga tidak bisa memiliki dua fungsi dengan nama yang sama.
Dan ini juga disebut sebagai fungsi overloading, jenis.
Tetapi Anda tidak dapat memiliki dua fungsi dengan nama yang sama, overloading tidak
didukung di c.
Terakhir, Anda dapat memiliki hal yang sama nama sebagai fungsi yang ada
di fungsi perpustakaan standar.
Secara teknis, jika Anda tidak menyertakan perpustakaan itu menyertakan file header, Anda
mungkin dapat memilikinya.
Tetapi jika Anda ingin benar-benar menggunakan fungsi perpustakaan itu, kompiler akan mengeluh
dan mengatakan Anda memiliki dua fungsi dengan nama yang sama.
Jadi jangan beri nama fungsi Anda sama dengan fungsi perpustakaan standar.
Nama resmi sama dengan variabel, urutan huruf dan
angka untuk memulai.
Karakter pertama harus berupa huruf dan huruf tersebut dapat menjadi garis bawah.
Anda tidak dapat memulai fungsi dengan angka atau karakter aneh
apa pun.
Nama yang Anda pilih harus bermakna dan relevan dengan apa
yang dilakukan fungsi tersebut.
Saya sudah mengatakan ini, saya ulangi itu untuk penekanan, nama yang
bermakna sangat penting.
Anda akan sering mendefinisikan fungsi nama dan nama variabel juga yang terdiri
dari lebih dari satu kata.
Jadi sekarang saya ingin berbicara sedikit sedikit tentang hanya gaya pengkodean.
Anda mungkin telah memperhatikan ketika saya menulis kode saya bahwa saya menggunakan kasing unta.
Ada tiga cara berbeda Anda dapat menulis nama variabel
dan fungsi Anda.
Anda dapat memisahkan setiap kata dalam nama fungsi dengan
karakter yang digarisbawahi, itu satu pendekatan.
Anda dapat menggunakan huruf besar untuk huruf pertama setiap kata
atau Anda dapat menggunakan huruf besar setelah kata pertama, dan Anda masih memiliki strum bersama.
Ingat, kamu tidak bisa memiliki spasi di antaranya.
Ini hanya sebuah pendekatan untuk penamaan karena
penting bagi Anda untuk mengikuti beberapa konvensi sehingga lebih mudah dibaca.
Hanya memiliki kata yang panjang dengan lima kata yang berbeda.
Jadi jika Anda memiliki fungsi yang mengatakan periksa input yang valid, Anda tidak
ingin semuanya huruf kecil.
Akan sangat sulit untuk dibaca dan mengidentifikasi di mana kata-kata itu berada.
Jadi tas unta adalah cara untuk mengidentifikasi di mana kata-kata dalam banyak
kata dan mudah untuk melihat apa fungsi itu lakukan.
Garis bawah adalah yang lain cara memisahkan kata.
Dan menggunakan huruf pertama dari setiap kata adalah cara lain untuk memisahkan.
Penting untuk bisa pisahkan kata-kata dalam suatu fungsi agar
lebih mudah dibaca.
Saya biasanya menggunakan kasing unta.
Dan ketika Anda menggunakan salah satu dari ini konvensi, Anda ingin
menggunakannya untuk semuanya, Anda ingin menggunakan itu untuk penamaan variabel, Anda ingin
menggunakannya untuk nama fungsi Anda.
Biasanya, Anda hanya mengikuti ini konvensi pengkodean umum, itu membuat segalanya
lebih mudah dibaca.
Prototipe fungsi.
Kami berbicara tentang mendefinisikan fungsi.
Bagaimana dengan mendeklarasikan suatu fungsi.
Anda mungkin mengatakan mengapa Anda perlu mendeklarasikan suatu fungsi, bukankah Anda
mendeklarasikannya ketika Anda mendefinisikannya.
Tapi ada juga konsepnya dari mendeklarasikan suatu fungsi.
Dan itu perlu jika Anda mau untuk menggunakan fungsi sebelum
diimplementasikan, sebelum didefinisikan.
Jadi prototipe fungsi adalah pernyataan yang mendefinisikan suatu fungsi.
Ini memberitahu kompiler pada dasarnya semua detail fungsi.
Ini mendefinisikan namanya, tipe pengembalian dan jenis masing-masing parameternya.
Jadi sepertinya header fungsi.
Ini menyediakan semua eksternal spesifikasi fungsi, terutama
Anda juga mungkin pernah mendengar istilah tanda tangan, fungsi tanda
tangan itu apa adanya.
Ini menentukan data yang dikembalikan, data yang dibutuhkan dan
segala sesuatu tentang fungsi itu sendiri.
Anda ingin menulis prototipe fungsi dengan cara yang sama seperti Anda menulis tajuk
fungsi, satu-satunya perbedaan adalah Anda menempatkan titik koma di akhir.
Dan ini hanya mendeklarasikan fungsi.
Ini mengatakan fungsi itu ada.
Sebuah prototipe fungsi memungkinkan kompiler untuk menghasilkan instruksi yang sesuai
di masing-masing titik di mana Anda memanggil fungsi.
Ini juga memeriksa apakah Anda menggunakan berfungsi dengan benar di setiap pemanggilan.
Alasan Anda menyediakan fungsi header adalah agar Anda dapat menjalankan fungsi tanpa
peringatan atau a deklarasi fungsi tanpa diimplementasikan, jadi itu benar-benar adil urutan kode
Anda dan saya akan memberikan contoh
ini sebentar lagi.
Saat Anda menyertakan tajuk standar file dalam sebuah program,
file header menambahkan prototipe fungsi.
Prototipe fungsi biasanya masuk file header jika Anda ingin menggunakannya kembali di banyak file
sumber yang berbeda.
Jika Anda hanya menggunakannya dalam satu file sumber, Anda bisa meletakkannya di
bagian atas di dalam file sumber.
Tetapi karena kami menggunakan printf fungsi yang dapat digunakan di
banyak file sumber yang berbeda, header itu fungsi akan didefinisikan di header
atau deklarasi fungsi itu akan ditentukan di header.
Dan dalam hal ini, stdio. H.
Jadi mereka biasanya muncul di file sumber jika hanya file sumber itu
yang menggunakan fungsi itu.
Jika tidak, Anda memasukkannya ke dalam file header jika
sedang digunakan kembali oleh banyak file sumber.
Ini memungkinkan salah satu fungsi di file untuk memanggil salah satu fungsi
yang ditentukan di mana pun Anda telah menempatkan implementasinya.
Jika Anda menempatkan implementasi dari suatu fungsi, setelah Anda memanggilnya, c akan mengeluh
dan berkata bahwa itu tidak tahu tentang itu.
Karena ketika Anda mengkompilasi, Anda mengkompilasi baris demi baris.
Jika Anda menempatkan deklarasi di bagian atas, maka Anda
dapat memanggil fungsi sebelum didefinisikan, sebelum diimplementasikan.
Nama parameter tidak harus berupa sama digunakan dalam definisi fungsi.
Anda dapat memiliki nama yang berbeda.
Ketika saya mengatakan nama, itu adalah pengidentifikasi data.
Anda dapat mengubah nama parameter dalam prototipe fungsi.
Anda masih harus memiliki data yang sama jenis, tetapi Anda dapat mengubah nama.
Itu selalu merupakan latihan yang baik untuk sertakan deklarasi
fungsi untuk semua fungsi di . Anda program di bagian atas file.
Itu membuat program Anda lebih konsisten ke desain dan mencegah kesalahan
yang terjadi pada tahap apa pun jika Anda ingin memanggil
fungsi itu sebelum mengimplementasikannya.
Berikut adalah contoh dari beberapa prototipe fungsi.
Di bagian paling atas file, kami memiliki termasuk kami.
Dan kemudian kami memiliki beberapa fungsi yang telah kami nyatakan,
rata-rata, jumlahkan dan dapatkan data.
Anda perhatikan itu terlihat hanya seperti header fungsi.
Ini memiliki tipe pengembalian, memiliki parameter yang
didefinisikan dalam fungsi, tetapi memiliki titik koma di akhir.
Tidak ada implementasi untuk fungsi-fungsi ini.
Anda hanya memberi tahu kompiler ini adalah fungsi yang ada dan ini
adalah bagaimana itu didefinisikan.
Apa yang memungkinkan Anda lakukan adalah sekarang dalam fungsi utama Anda, Anda
dapat memanggil rata-rata, Anda dapat memanggil jumlah, Anda bisa menelepon untuk mendapatkan data.
Dan implementasi yang sebenarnya bisa berada di bawah tempat Anda memanggil mereka.
Jika Anda tidak memiliki fungsi tajuk di sini, ketika
Anda mencoba memanggil mereka di utama, jika itu didefinisikan di bawah rutinitas utama, Anda akan
memiliki kesalahan atau peringatan.
Jadi mari kita lihat itu di blok kode.
Di sini kami memiliki rutinitas utama kami yang biasa.
Sekarang katakanlah kita ingin untuk membuat fungsi atau kita ingin memanggil
fungsi.
Kita akan memanggil a fungsi yang disebut add dan itu tidak akan
mengambil parameter apa pun.
Kami menyebutnya di kami fungsi utama pada baris 7.
Akan menerapkannya pada baris 10.
Kami akan mengatakan void add dan kita bahkan tidak akan melakukan apa-apa.
Kami hanya akan membiarkannya kosong.
Ketika kita pergi untuk mengkompilasi ini, apa Anda akan melihat apakah kompiler ini
hanya memberikan peringatan.
Dikatakan add memiliki deklarasi implisit.
Anda dapat menyingkirkan peringatan itu dengan menggunakan deklarasi fungsi.
Anda dapat mendeklarasikan fungsi di bagian atas pada dasarnya memberi tahu kompiler bahwa Anda akan
gunakan di suatu tempat, tetapi Anda tidak
tahu di mana implementasinya.
Jadi yang bisa kamu lakukan adalah kamu bisa katakan void add di sini
dan tambahkan saja titik koma.
Sekarang itu akan menyingkirkan itu peringatan dan beberapa kompilasi sebenarnya akan
memberi Anda kesalahan.
Sekarang ketika saya mengkompilasinya, saya punya tidak ada peringatan dan tidak ada kesalahan.
Jadi itulah fungsinya deklarasi tidak.
Ini memungkinkan Anda untuk menempatkan fungsi di mana saja.
Sekarang jika Anda tidak memiliki fungsi deklarasi di atas dan Anda memiliki
implementasi di atas di mana Anda memanggilnya, maka Anda juga tidak akan
melihat kesalahan karena kompilernya akan tahu tentang fungsi sebelum
benar-benar mencoba untuk memanggilnya.
Jadi jika kami membangun ini, Anda juga akan melihat bahwa tidak ada kesalahan.
Sekarang saya menyebutkan bahwa Anda biasanya ingin mendeklarasikan semua fungsi Anda
di atas hanya untuk latihan yang baik dan saya pikir Anda perlu melakukan itu.
Jadi terus lakukan itu.
Tetapi jika Anda keluar dari itu kebiasaan, Anda juga harus mendeklarasikan
fungsi Anda sebelum memanggilnya atau Anda harus menyediakan
prototipe fungsi karena Anda tidak mau peringatan atau kesalahan dalam program Anda.
Ini adalah bagaimana Anda dapat mendefinisikan fungsi, dan ini adalah bagaimana Anda
dapat menggunakan prototipe fungsi.
Dalam kuliah berikutnya, kita akan
berbicara tentang parameter.
Bagaimana Anda bisa meneruskan data ke suatu fungsi.
Terima kasih.