Senin, 12 Desember 2011

Tipe Keluaran (Subrutin Java)


Suatu subrutin yang mengembalikan nilai disebut fungsi. Suatu fungsi hanya dapat mengembalikan nilai dengan tipe tertentu, yang disebut tipe keluaran. Fungsi biasanya dipanggil di tempat suatu nilai atau angka ditempatkan, misalnya disebelah kanan tanda =, pada parameter sewaktu subrutin dipanggil, atau di tengah-tengah ekspresi yang panjang. Fungsi dengan tipe keluaran boolean juga bisa ditempatkan sebagai kondisi pada pernyataan if atau while.
Sebetulnya boleh-boleh saja memanggil suatu fungsi sendirian tanpa diletakkan di sebelah kanan tanda =, misalnyaambilDouble("hallo");. Dalam hal ini keluarannya akan diabaikan oleh komputer. Tergantung program yang akan kita buat, kadang-kadang program kita memang sengaja membuang nilai yang dikembalikan oleh fungsi karena satu dan lain hal.
Untuk membuat fungsi yang mengeluarkan suatu nilai kembali kepada pemanggilnya, kita harus memberikan pernyataan return, dengan bentuk
return ekspresi;
Pernyataan return ini hanya boleh ditulis di dalam sebuah subrutin (termasuk subrutin main()), dan ekspresi harus menghasilkan nilai yang memiliki tipe yang sama dengan tipe keluaran yang didefinisikan pada deklarasi subrutin tersebut.
Ketika komputer menjalankan pernyataan return, komputer akan menghitung "ekspresi", menghentikan eksekusi subrutin tersebut saat itu juga, dan kembali pada si pemanggil dengan membawa nilai hasil perhitungan "ekspresi".
Misalnya, kita akan menghitung luas suatu lingkaran. Kita buat fungsi luasLingkaran dengan parameter jarijari dan keluarannya bertipe double, sebagai berikut :
static double luasLingkaran(double jarijari) {
    return 3.14 * jarijari * jarijari;
}
Anggap komputer sedang melakukan perintah "ruangkosong = 20*20 - luasLingkaran(10);". Ketika sampai pada bagian luasLingkaran, fungsi tersebut akan memasukkan 10 ke dalam parameter formal jarijari. Di dalam badan fungsi, ia akan menghitung 3.14 * 10.0 * 10.0 yang hasilnya 314.0. Nilai ini akan dikembalikan kepada fungsi awalnya untuk menghitung "ruangkosong = 20*20 - luasLingkaran(10);", sehingga fungsi ini juga bisa diganti dengan "ruangkosong = 400 -314.0;" Hasilnya yaitu 86 dimasukkan ke dalam variabel ruangkosong
Dalam subrutin biasa -- yaitu subrutin yang tipe keluarannya void -- kita juga bisa menggunakan perintah return untuk langsung keluar dari subrutin tersebut, yaitu dengan perintah return; tanpa ekspresi. Di subrutin ini perintah return boleh diberikan jika diperlukan, akan tetapi pada fungsi perintah return wajib diberikan.
Berikut ini adalah fungsi untuk menentukan nilai akhir (A, B, C, D atau E) dari nilai ujian.
static char nilaiAlfa(double nilaiUjian) {
    if (nilaiUjian >= 90)
        return 'A';
    else if (nilaiUjian >= 80)
        return 'B';
    else if (nilaiUjian >= 70)
        return 'C';
    else if (nilaiUjian >= 60)
        return 'D';
    else 
        return 'E';
}
Perhatikan bahwa pada setiap cabang, perintah return diberikan. Ada juga beberapa programmer yang lebih suka dengan menggunakan variabel sementara kemudian perintah return diberi satu kali saja di akhir fungsi, seperti contoh berikut.
static char nilaiAlfa(double nilaiUjian) {
    char keluaran;
    if (nilaiUjian >= 90)
        keluaran = 'A';
    else if (nilaiUjian >= 80)
        keluaran = 'B';
    else if (nilaiUjian >= 70)
        keluaran = 'C';
    else if (nilaiUjian >= 60)
        keluaran = 'D';
    else 
        keluaran = 'E';
    return keluaran;
}
Contoh di atas memiliki tipe keluaran char. Dan sebenarnya, tipe keluaran bisa bertipe apa saja, termasuk kelas, seperti String pada contoh berikut.
static String ulangKarakter(char c, int n) {
    String keluaran = "";
 
    // tambah karakter c ke dalam String keluaran sebanyak n kali
    for (int i = 1; i <= n; i++)
        keluaran = keluaran + c;
 
    return keluaran;
}
Fungsi di atas berfungsi untuk mengulang karakter c sebanyak n kali dan mengembalikan hasilnya. Misalnya jika fungsi di atas kita panggil dengan "ulang = ulangKarakter('A'10);" maka ulang akan bernilai "AAAAAAAAAA" setelah fungsi ulangKarakter dijalankan.

Tidak ada komentar:

Posting Komentar