Subrutin: prosedur dan fungsi - 2


fungsi ialah subrutin yang mengembalikan hasil (nombor, baris aksara, dsb.).

Bayangkan anda telah memesan produk dari kedai dalam talian. Dari sudut pengaturcaraan, anda memanggil beberapa subrutin, dan tidak seperti prosedur, subrutin ini mesti mengembalikan hasil - menghantar produk yang anda pesan. Subrutin ini dipanggil fungsi.
Fungsi diformat dengan cara yang sama seperti prosedur. Satu-satunya perbezaan daripada prosedur ialah kehadiran pengendali khas return,
 selepas itu nilai yang akan dikembalikan kepada program utama ditulis.

Fungsi yang mengembalikan min aritmetik bagi dua integer akan kelihatan seperti ini:
purata terapung(int a, int b) { purata terapung = (a + b) / 2.0; kembali aug; } Masih perlu memikirkan cara memanggil fungsi ini dalam program utama. Anda tidak seharusnya memanggil fungsi dengan cara yang sama seperti prosedur: purata(10, 5); Nilai yang dikembalikan oleh fungsi akan hilang. Seolah-olah barangan dari kedai online itu tidak diberikan kepada sesiapa, malah dibuang begitu sahaja. Tidak mungkin pelanggan akan menyukainya.

Adalah lebih tepat untuk menyimpan hasil dalam pembolehubah (atau memaparkannya pada skrin):
float a = purata(10, 5); Console.WriteLine(purata(10, 5));< /code>

Selalunya, pengaturcara menggunakan fungsi boolean yang mengembalikan nilai boolean true atau false (true atau palsu).
Fungsi sedemikian berguna untuk menyemak harta benda.
Pertimbangkan dua contoh menulis fungsi logik yang menyemak nombor untuk kesamaan

Dan nota terakhir tentang bekerja dengan fungsi dan prosedur: bilangan fungsi dan prosedur dalam program tidak terhad. Di samping itu, satu subrutin boleh memanggil subrutin lain dan juga dirinya sendiri.
Selain itu, selepas atur cara mencapai return dalam fungsi, atur cara serta-merta berhenti melaksanakan fungsi dan mengembalikan nilai.
Iaitu, contoh kedua dari jadual juga boleh dipendekkan seperti ini:
bool isEven(int n)
{
    jika (n % 2 == 0) {
        kembali Benar
    }
    kembalikan Salah;
}

 

Cara terbaik:
hasil ungkapan
n % 2 == 0
akan menjadi benar (benar) atau palsu (salah)
Tidak perlu menulis pernyataan bersyarat.
Jangan buat begitu.
Sudah tentu, anda boleh melakukannya, tetapi ini adalah entri yang lebih panjang.
bool isEven(int n) { pulangan (n % 2 == 0); } bool isEven(int n) { jika (n % 2 == 0) { kembali benar;   } lain { kembali Salah;   } }