Fungsi ialah subrutin yang mengembalikan hasil (nombor, rentetan aksara, dsb.)
Bayangkan anda telah memesan produk dari kedai dalam talian. Dari sudut pengaturcaraan, anda telah memanggil subrutin tertentu, 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:
fungsi <nama fungsi> (senarai parameter sebagai <nama pembolehubah>:<jenisnya> dipisahkan dengan koma bertitik): <jenis nilai pulangan>;
bermula
<badan berfungsi>
tamat;
Perbezaan antara fungsi dan prosedur ialah fungsi mesti mengembalikan nilai. Untuk melakukan ini, anda perlu menggunakan nama fungsi sebagai pembolehubah atau pembolehubah khas Result:
fungsi Jumlah(a, b:integer): integer;
bermula
Jumlah := a + b;
tamat;
atau
fungsi Jumlah(a, b:integer): integer;
bermula
Keputusan := a + b;
tamat;
Fungsi yang mengembalikan min aritmetik bagi dua integer akan kelihatan seperti ini:
purata fungsi(a, b: integer): sebenar;
bermula
purata := (a + b) / 2;
akhir;
Ia kekal untuk memahami cara memanggil fungsi ini dalam program utama:
Anda tidak sepatutnya memanggil fungsi dengan cara yang sama anda memanggil 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.
Lebih tepat untuk menyimpan hasil dalam pembolehubah (atau mencetaknya ke skrin):
a := purata(10, 5);
atau
writeln(purata(10, 5));
|
Selalunya pengaturcara menggunakan fungsi boolean yang mengembalikan nilai boolean: benar atau salah (T rue atau F alse)
Fungsi sedemikian berguna untuk semak beberapa harta.
Pertimbangkan dua contoh menulis fungsi logik yang menyemak nombor untuk kesamaan
1) Cara yang lebih baik:
hasil ungkapan
n % 2 == 0
akan menjadi benar (Benar) atau palsu (Salah)
Tidak perlu menulis pernyataan bersyarat! |
2) Jangan buat begitu!
Anda boleh menulisnya seperti itu, tetapi ia akan menjadi rekod yang lebih panjang, jadi lebih baik jangan melakukannya |
bool isEven(int n)
{
pulangan (n % 2 == 0);
}
|
bool isEven(int n)
{
jika (n % 2 == 0)
kembali benar;
lain
kembali Salah;
}
|
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.
|