Subrutin: prosedur dan fungsi - 2


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 (True atau False)
Fungsi sedemikian berguna untuk   semak beberapa harta.
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.
 

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; }