Halo dan selamat datang.
Dalam kuliah ini, saya ingin berbicara tentang mengembalikan data dari fungsi.
Sampai saat ini, kita sudah tahu apa sebuah fungsi adalah kita tahu mengapa itu
berguna, kita tahu bagaimana mendefinisikan fungsi kita tahu bagaimana mengirimkan data ke fungsi.
Sekarang kami ingin berbicara tentang bagaimana kami dapat mengembalikan data dari fungsi,
yang juga sangat berguna.
Dalam contoh kita sebelumnya, ketika kita mengalikan dua angka,
fungsi perkalian menampilkan hasil perhitungan di terminal.
Ingat, kita punya itu printf pernyataan di sana.
Juga, kami memiliki contoh di mana kami hanya fungsi sederhana sebelumnya.
Kami baru saja mencetak data di dalam fungsi.
Kami ingin menjadi baik alih-alih bawa ke sana karena
sebenarnya melakukan lebih dari satu hal.
Itu benar-benar mencetaknya, data dikembalikan dan mencetak
data dalam fungsi utama.
Anda mungkin tidak selalu ingin memilikinya hasil perhitungan Anda ditampilkan.
Fungsinya menjadi lebih fleksibel, lebih umum yang pada
gilirannya memungkinkan untuk digunakan lebih jika Anda dapat mengembalikan data.
Jadi fungsi dapat mengembalikan data menggunakan sintaks tertentu di c.
Kita harus akrab dengan ini sedikit
karena ingat fungsi utama kami di akhirnya kami mengembalikan data sedikit
dalam banyak contoh.
Jadi kita sudah terkena ini sedikit.
Kami hanya belum benar-benar mengerti apa artinya.
Mari kita lihat lagi bentuk umum dari suatu fungsi.
Ingat, header fungsi ini.
Kami memiliki tipe pengembalian yaitu kata yang pertama kali didefinisikan.
Dan kemudian kami memiliki nama, dan kemudian kami memiliki parameter yang dipisahkan dengan koma
di dalam tanda kurung.
Kita sudah tahu nama dan parameternya.
Hal pertama adalah tipe pengembalian.
Jenis pengembalian menentukan tipe data dari nilai yang dikembalikan
oleh fungsi.
Fungsi dapat mengembalikan semua jenis data.
Anda hanya perlu memberi tahu kompiler jenis data apa yang Anda kembalikan jika.
Ini adalah int, float, double apa pun itu, Anda harus menentukannya di
header fungsi Anda.
Jenis pengembalian.
Jenis pengembalian yang kita lihat di sini, dan Anda dapat menentukan jenis nilai yang
akan dikembalikan oleh suatu fungsi selama itu jenis hukum di c.
Saya menyebutkan yang utama, ganda, mengambang dan sebagainya.
Tapi kamu juga bisa kembali enumerasi dan pointer.
Kami belum membahas petunjuk, tapi itu membuatnya sangat, sangat fleksibel ketika
Anda dapat mengembalikan pointer.
Tipe pengembalian bisa juga akan menghindari jenis.
Anda sering melihat kata kunci ini batal.
Kami sekarang mengerti apa artinya.
Void berarti tidak ada data akan dikembalikan.
Jika Anda melihat kekosongan sebelum nama fungsi, Anda tidak mengembalikan
data apa pun.
Jika Anda melihat kekosongan di dalam parameter list, Anda tidak melewatkan data apa pun.
Void hanyalah kata kunci umum yang untuk tipe pengembalian dan untuk parameter, Anda juga memperhatikan bahwa Anda dapat menggunakan void
sebagai pointer juga, tapi kita akan membahasnya saat kita
sampai di sana.
Tetapi kekosongan adalah cara untuk tidak mengatakan apa-apa.
Dan alasan Anda memasukkan batal sebagai lawan hanya tidak termasuk
apa-apa karena itu membuat program lebih mudah dibaca.
Sebenarnya ketika Anda meneruskan data ke a fungsi dan Anda tidak
memiliki data yang sedang diteruskan, Anda dapat memiliki itu hanya tanda kurung kosong.
Mudah dibaca jika Anda memiliki kekosongan di sana.
Sama dengan tipe pengembalian kecuali tipe pengembalian Anda harus memiliki void.
Anda tidak dapat memilikinya hanya kosong.
Void berarti tidak ada data akan dikembalikan.
Pernyataan kembali.
Kami telah berbicara tentang bagaimana Anda bisa mengidentifikasi data apa yang akan dikembalikan tetapi
bagaimana caranya Anda benar-benar mengembalikan data.
Di dalam tubuh fungsi, Anda harus memiliki pernyataan di mana Anda dapat mengatakan
apa yang Anda akan kembali.
Karena ingat tubuh a fungsi dapat memiliki banyak data.
Itu dapat memiliki variabel lokal, itu bisa memiliki apa pun yang Anda tahu
fungsinya bisa melakukan perhitungan tertentu, mungkin melakukan beberapa perhitungan, apa yang ingin
Anda kembalikan.
Untungnya ada pernyataan ini dengan kata kunci kembali.
Jika Anda memberikan pengembalian tanpa nama variabel setelah atau ekspresi, itu
berarti Anda hanya keluar dari fungsi.
Ini mirip dengan istirahat dalam satu lingkaran.
Anda baru saja kembali dari fungsi.
Dan Anda dapat menyediakan ini di fungsi yang didefinisikan sebagai batal.
Itu memperjelas kapan Anda keluar dari fungsi.
Anda seharusnya benar-benar hanya memiliki pengembalian di satu tempat di
bagian bawah fungsi.
Kita akan membahasnya nanti, tapi kamu tidak dapat memilikinya di mana pun dalam suatu fungsi.
Jika Anda melihatnya di mana saja di sebuah fungsi, itu berarti Anda melompat
keluar dari fungsi itu.
Alasan mengapa itu baik untuk dimiliki di bagian bawah sangat jelas ketika
Anda keluar dari fungsi.
Jika Anda memiliki banyak pengembalian bahkan jika Anda mengembalikan data di seluruh
fungsi Anda, itu sulit untuk mengatakan ketika Anda kembali.
Jadi apa yang saya suka lakukan di my fungsinya adalah membuat variabel dan hanya kembali
sekali di bagian bawah.
Jika saya perlu mengembalikan sesuatu suatu fungsi atau maksud saya dalam pernyataan if tertentu dalam suatu fungsi atau
sesuatu yang saya akan mengatur variabel dan kemudian
mengembalikannya di bagian bawah.
Jadi jika Anda telah kembali dan Anda tidak memiliki
apa-apa setelahnya, itu hanya berarti Anda keluar dari fungsi tanpa data yang dikembalikan.
Ini benar-benar tidak banyak digunakan.
Anda hanya menggunakannya dalam kekosongan fungsi, tidak mengembalikan nilai.
Bentuk yang lebih umum dari pernyataan return mengembalikan
beberapa variabel atau ekspresi.
X ditambah y atau mengembalikan x.
Bentuk pernyataan pengembalian ini memiliki untuk digunakan dengan tipe pengembalian yang ditentukan
di header fungsi.
Jika Anda mengembalikan sebuah int, apa pun variabel atau ekspresi yang
Anda kembalikan harus berupa int.
Itu harus mengevaluasi ke int, jika Anda mengembalikan int.
Sekarang jika Anda berubah ganda, itu harus bernilai dua kali lipat.
Ingat, Anda dapat memiliki banyak berbagai jenis data yang dikembalikan.
Nilai yang dikembalikan ke program pemanggil
adalah nilai yang dihasilkan ketika ekspresi dievaluasi demikian.
Jika Anda memiliki x plus y, itu kembali hasil dari ekspresi itu dan itu harus
bertipe sama dengan deklarasi fungsi seperti yang saya sebutkan.
Fungsi yang memiliki pernyataan di
badan fungsi tetapi tidak mengembalikan nilai harus memiliki mengembalikan tipe sebagai batal, harus.
Anda tidak bisa tidak memiliki itu.
Jika Anda tidak memilikinya dan Anda tidak mengembalikan data
apa pun, Anda akan mendapatkan pesan kesalahan.
Saat Anda mengkompilasi program dan itu berisi fungsi dengan tipe pengembalian
batal yang mencoba untuk mengembalikan kesalahan kompiler nilai.
Void artinya tidak ada data kembalian, jangan mengembalikan variabel ekspresi.
Jika suatu fungsi tidak memiliki kekosongan tipe pengembalian
dan memiliki tipe pengembalian yang valid, Anda akan mendapatkan pesan kesalahan jika
kompiler mencoba mengembalikan tipe yang berbeda dari tertentu atau jika mereka
baru saja kembali tanpa apa-apa setelahnya.
Jadi perhatikan ini.
Kata kunci tersebut di awal deklarasi fungsional adalah penting.
Ini secara langsung mempengaruhi implementasi fungsi dan kompilasi akan memberi tahu Anda jika Anda mengacaukan dan Anda tidak mengembalikan data
yang benar atau jika Anda tidak mengembalikan
apa pun data atau jika Anda mengembalikan data saat Anda
tidak seharusnya mengembalikan data.
Jika ekspresi menghasilkan nilai itu berbeda tipe yang
berbeda dari tipe pengembalian dalam fungsi header, c akan mencoba mengonversinya.
Kompiler akan mencoba untuk mengubahnya jika bisa.
Jadi misalnya jika Anda kembali pelampung dan ekspresi Anda adalah saya ditambah x dengan
dua int, itu akan untuk hanya mengubahnya menjadi pelampung.
Jika Anda mengembalikan int dan Anda
memiliki ekspresi yang melakukan perhitungan float, itu akan mengubahnya menjadi itu.
Anda akan kehilangan data dalam hal itu kasus, tetapi itu akan melakukan konversi.
Itu tidak selalu mungkin untuk melakukan konversi.
Dalam kasus di mana tidak mungkin, Anda akan memiliki kesalahan yang
dihasilkan oleh kompiler.
Jika Anda mencoba mengembalikan int ketika Anda
seharusnya mengembalikan string atau ketika Anda mencoba untuk
mengembalikannya ke saat Anda seharusnya mengembalikan enum, itu akan mengeluh compiler.
Anda juga dapat memiliki lebih dari satu mengembalikan pernyataan fungsi, saya
menyebutkan ini secara singkat dan kenapa kamu tidak mau melakukannya.
Tapi Anda bisa melakukannya.
Anda dapat memiliki banyak pengembalian sepanjang fungsi.
Itu hanya membuat kode lebih sulit untuk ikuti karena Anda
melompat keluar dari fungsi di semua tempat.
Ketika Anda kembali dan Anda memiliki beberapa nilai
pengembalian, pastikan lagi jika Anda memiliki fungsi
itu mengembalikan sesuatu, Anda memiliki ekspresi atau nilai jenis itu atau dapat dikonversi.
Sekarang kita sudah membicarakannya meneruskan data dan mengembalikan data, kita
tahu cara memanggil suatu fungsi, tapi saya ingin mengatakan
beberapa hal lain tentang doa.
Anda memanggil fungsi hanya dengan menggunakan nama fungsi diikuti dengan argumen yang
Anda berikan yaitu di antara tanda kurung, kita tahu itu, sejauh
itu kita tahu tapi saya ingin menyatakannya secara formal, begitulah cara Anda dapat
memanggil suatu fungsi.
Saat Anda memanggil fungsi tersebut, nilai argumen
yang Anda tentukan di antara tanda kurung akan ditugaskan ke
parameter di dalam fungsi.
Parameternya representatif variabel dengan tipe datanya.
Anda kemudian dapat menggunakan variabel itu setiap sisi dalam fungsi tubuh.
Saat fungsi keluar atau dijalankan kode tertentu, itu akan menggunakan nilai-nilai yang diberikan sebagai argumen, seperti
yang saya sebutkan.
Argumen yang Anda tentukan saat Anda memanggil suatu fungsi harus setuju
dalam jenis nomor dan urutan ketika parameter di header fungsi.
Urutan juga penting, saya tidak tekankan itu, tetapi jika
dikatakan int x double y, Anda harus terlebih dahulu berikan int lalu dobel.
Anda tidak dapat memasukkan double dan int.
Urutannya sangat, sangat spesifik.
Jadi pastikan Anda memberikan data sebagai argumen ketika Anda memanggil
fungsi dengan cara yang sama seperti fungsi dideklarasikan di header fungsi dalam daftar
parameter, lewat jenis yang tepat adalah itu juga.
Memanggil fungsi dan menetapkan data yang dikembalikan.
Jika suatu fungsi mengembalikan data, fungsi dapat menetapkan data itu hanya dengan menggunakan
operator yang sama dan setelahnya pengembaliannya juga atau Anda dapat menyimpannya dalam variabel lokal
jika Anda mau.
Ini juga akan bekerja dengan ekspresi.
Jadi bisa dibilang return x plus y, Anda bisa mengatakan return x, Anda bisa
mengatakan return a konstan.
Contoh ini di sini setelah Anda panggil panggilan saat Anda ingin menetapkan
data yang dikembalikan.
Jadi Anda bisa mengatakan int x sama dengan saya panggilan fungsi, apa pun yang dikembalikan
fungsi itu akan ditugaskan ke x.
Dan jika panggilan fungsi saya kembali x ditambah y, hasil dari x ditambah y
akan diberikan ke x.
Jadi Anda dapat menetapkan data yang dikembalikan
dari panggilan fungsi dengan hanya memiliki variabel di sisi kiri
persamaan dan pemanggilan fungsi pada sisi kanan yang sama.
Fungsi panggilan tidak memiliki untuk mengenali atau memproses nilai yang dikembalikan
dari fungsi yang dipanggil.
Anda tidak perlu memiliki tugas itu di sana.
Jika suatu fungsi mengembalikan data dan Anda tidak peduli dengan data itu, Anda tidak
harus memiliki persamaan sama sekali, anda hanya dapat memanggil fungsi.
Itu tidak masuk akal karena jika itu mengembalikan data, itu
berarti Anda mungkin perlu melihat itu, tetapi Anda tidak harus melakukannya.
Kompiler tidak akan mengeluh jika Anda hanya menjalankan
suatu fungsi dan tidak menangani data.
Terserah kamu bagaimana ingin menggunakan data yang dikembalikan
dari panggilan fungsi.
Berikut ini contoh pemanggilan suatu fungsi dan juga mengembalikan data dari
suatu fungsi.
Dalam contoh ini, kalikan dua angka.
Ini seperti contoh kita sebelumnya, tetapi contoh sebelumnya tidak
mengembalikan data apa pun.
Contoh sebelumnya menampilkan output.
Dalam contoh ini, kita tidak menampilkan output apa pun.
Kami mengembalikan data dan maka kami menampilkan output
di fungsi utama.
Di sini kita kalikan dua angka mengambil dua bilangan bulat sebagai parameter.
Kita kalikan kedua bilangan bulat itu.
Dan kemudian alih-alih mencetak ini jumlah atau nilainya, kami menggunakan kata kunci kembali
dan kami kemudian menentukan variabel bernama hasil dan kemudian kami memiliki
titik koma untuk mengakhirinya.
Ketika Anda melihat kata kunci kembali itu di dalam badan fungsi, Anda
mengembalikan data itu.
Dan ingat, kamu bisa memiliki banyak tempat itu.
Tetapi Anda hanya dapat mengembalikannya satu nilai, Anda tidak dapat mengembalikan beberapa nilai.
Jadi jika Anda memiliki kata kunci kembali di beberapa tempat, itu harus berada
di dalam pernyataan if atau loop karena Anda melompat keluar saat itu.
Jika Anda memiliki pengembalian diikuti oleh pengembalian lain, itu akan memberi
Anda kesalahan karena itu akan mengatakan Anda memiliki dua pengembalian dalam kedua kasus.
Anda selalu kembali ke hasil, Anda tidak bisa melakukan itu.
Tapi kata kunci kembali itu penting.
Anda mengembalikan variabel.
Dan kemudian Anda melihat di utama fungsi data yang dikembalikan sedang
ditugaskan ke variabel lokal lain yang disebut hasil.
Anda akan melihat kami menggunakan nama yang sama di sini.
Ini ada hubungannya dengan fungsi lingkup yang akan
kita bicarakan di kuliah berikutnya, lokal variabel versus variabel global.
Yang perlu Anda perhatikan dalam kuliah ini adalah fakta bahwa
fungsi ini dikalikan dua angka mengembalikan data.
Bagaimana Anda mengembalikannya, Anda mengembalikannya menggunakan kata kunci kembali
diikuti oleh variabel ekspresi.
Anda juga memperhatikan bahwa perkaliannya dua angka menentukan tipe pengembalian di
bagian atas header fungsi.
Ini mengembalikan sebuah int.
Jadi kita harus mengembalikan sebuah int.
Anda juga memperhatikan bahwa ketika kami menetapkan data dalam
fungsi utama, kami menetapkannya ke int.
Menugaskan itu sangat mudah kita hanya memiliki operator yang sama.
Jika kami tidak peduli dengan datanya, kami hanya bisa memanggil kalikan dua
nomor dan kemudian tidak melakukan apa-apa selain itu.
Setelah kami mendapatkan data kembali dari fungsi tersebut, kita
kemudian mencetaknya menggunakan fungsi printf.
Ini membuat fungsinya lebih kohesif yang dibutuhkan data.
Kami tidak benar-benar menampilkan hasil di dalam fungsi.
Ada kalanya kita tidak mau untuk menampilkan
hasilnya, kami hanya ingin mengalikan dua angka dan kemudian kita mungkin ingin membagi produk.
Fleksibilitas dengan data yang diteruskan dan data yang dikembalikan adalah masalah besar.
Ini adalah contoh sederhana.
Anda akan terkena ini lebih banyak di tantangan kami berikutnya.