Berikut manakah pernyataan yang benar tentang subprogram Prosedur dan Fungsi

Fungsi, atau dalam beberapa literatur ada yang mengistilahkan subrutin, subprogram maupun prosedur, adalah salah satu teknik pemrograman untuk meningkatkan modularitas program yang akan dibuat. Semakin besar tingkat modularitasnya, maka kecenderungannya adalah program itu akan relatif semakin baik. Mengapa? Karena program yang size-nya besar, banyak baris kode, akan dipecah menjadi modul-modul yang ukurannya lebih kecil. Beberapa keuntungannya adalah dalam hal efisiensi dan kemudahan dalam debugging. Dikatakan efisien karena konsep fungsi akan merangkum bagian tugas-tugas yang sama cukup dengan menuliskan kode program satu kali saja tetapi bisa dipanggil/ dijalankan berulang kali sepanjang program. Di sisi lain, jumlah baris kode program yang semakin sedikit akan memudahkan dalam menelusuri kesalahan yang ditemukan. Penggunaan konsep fungsi juga akan mengakibatkan isi dari void main() akan menjadi semakin ringkas.

  • Tujuan menggunakan fungsi 
  • Fungsi digunakan agar pemrogram dapat menghindari penulisan bagian  program (kode) berulang-ulang, selain itu juga dapat menyusun kode program agar terlihat lebih rapi dan kemudahan dalam debugging program tersebut.
  • Fungsi-fungsi dapat dijinkan untuk menghindari penulisan yang sama berulang-ulang. Langkah-langkah program yang sama dan sering digunakan berulang-ulang dapat ditulis sekali saja secara terpisah dalam bentuk fungsi-fungsi, selanjutnya bagian program yang membutuhkan langkah-langkah ini cukup memanggil fungsi-fungsi tersebut.
  • Void (Fungi Tanpa Nilai Balik)

   Fungsi yang void sering disebut juga prosedur. Disebut void karena fungsi tersebut tidak mengembalikan suatu nilai keluaran yang didapat dari hasil proses fungsi tersebut.

  • Ciri-ciriDari Jenis Fungsi Void 
  • Tidak adanya keyword return.
  • Tidak adanya tipe data di dalam deklarasi fungsi.
  • Menggunakan keyword void.
  • Tidak dapat langsung ditampilkan hasilnya.
  • Tidak memiliki nilai kembalian fungsi.
  • Contoh Program fungsi void

#include

#include

void luas(int &ls, int p, int l)

{

ls = p*l;

}

main()

{

int pj,lb, hsl;

cout<<“Panjang = “;cin>>pj;

cout<<“Lebar = “;cin>>lb;

luas(hsl,pj,lb);

cout<<“\nLuasnya = “<

getch();

  • Non-Void (Fungsi Dengan Nilai Balik)

Fungsi non-void disebut juga function. Disebut non-void karena mengembalikan nilai kembalian yang berasal dari keluaran hasil proses function tersebut .

  • Ciri-ciridari jenis fungsi non void adalah sebagai berikut:
    • Ada keyword return
    • Ada tipe data yang mengawali fungsi
    • Tidak ada keyword void
    • Memiliki nilai kembalian
    • Dapat dianalogikan sebagai suatu variabel yang memiliki tipe data tertentu
    • Sehingga dapat langsung ditampilkan hasilnya
    • Non-void : int jumlah (int a, int b)
  • Contoh program non void

#include

#include

int luas(int p, int l)

{return (p*l); }

main(){

int pj,lb;

cout<<“Panjang = “;cin>>pj;

cout<<“Lebar = “;cin>>lb;

cout<<“\nLuasnya = “<

getch();

}

  • Definisi Fungsi berisi tipe_Fungsi

(tergantung dari tipe data

hasil balik yang akan diberikan oleh Fungsi dapat berupa double, float tergantung dari ketepatan yang diinginkan. Khusus untuk Fungsi yang tidak ditulis tipenya maka akan dianggap bertipe int

atau char), nama_Fungsi (merupakan nama yang dibentuk sendiri oleh programmer) dan argumen1, argumen 2,… atau disebut juga alat komunikasi untuk data yang dikirimkan dari bagian program yang memanggil Fungsi. Untuk Fungsi yang tidak menggunakan argumen cara penulisannya menjadi tipe_fungsi nama_Fungsi(void)

  • Tubuh Fungsi, berisi statemen-statemen program yang akan melaksanakan tugas yang diberikan, untuk bagian ini harusdiawali dengan tanda { dan diakhiri dengan tanda }

Prosedur adalah fungsi yang tidak mengembalikan nilai, maka dari itu penggunaan prosedur selalu menggunakan void karena void tidaklah mengembalikan nilai.Tujuan dari penggunaan prosedur salah satunya adalah untuk mendefinisikan  masing – masing tugas.

#include<iostream.h>

void volume_limas()

{

double p, l, t;

cout<<“Volume limas segi empat”<<endl;

cout<<“Masukkan panjang: “;

cin>>p;

cout<<“Masukkan lebar: “;

cin>>l;

cout<<“Masukkan tinggi: “;

cin>>t;

cout<<“Volume limas segi empat: “<<p*l*t/3<<endl;

}

void volume_kerucut()

{

double r, t;

cout<<“Volume kerucut”<<endl;

cout<<“Masukkan jari2: “;

cin>>r;

cout<<“Masukkan t: “;

cin>>t;

cout<<“Volume kerucut: “<<3.14*r*r*t/3<<endl;

}

void volume_bola()

{

double r;

cout<<“Volume bola”<<endl;

cout<<“Masukkan nilai r= “;

cin>>r;

cout<<“Volume bola= “<<4*3.14*r*r*r/3<<endl;

}

int main()

{

volume_limas();

volume_kerucut();

volume_bola();

return 0;

}

berikut screenshot dari program diatas:

  • Fungsi utama dalam bahasa C/C++ biasanya ditulis dengan struktur :

int main()

{

statement-statement;

return 0;

}

Jika fungsi utama tersebut telah melaksanakan tugasnya maka fungsi utama terebut akan mengembalikan nilai 0 dan sebaliknya jika tidak berhasil maka fungsi utama tersebut akan mengembalikan nilai mengembalikan nilai mengembalikan nilai mengembalikan nilai –1.

Supaya Fungsi/prosedur dapat digunakan harus dapat dipanggil dari bagian program yang membutuhkannya, untuk itu suatu Fungsi/prosedur harus diberi nama. Aturan penamaan Fungsi/prosedur sama dengan aturan penamaan variabel dan/atau konstanta. Pada C/C++, untuk mendeklarasikan fungsi tambahan kita dapat menuliskannya sebagai berikut.

  • Definisi Prosedur berisi tipe dari Prosedur yaitu void karena prosedur tidak meberikan nilai hasil balik, nama_Prosedur (merupakan nama yang dibentuk sendiri oleh pemrogram) dan

argumen1, argumen 2,… atau disebut juga sebagai parameter input/output tergantung fungsi argumen tersebut sebagai alat komunikasi untuk data yang dikirimkan dari bagian program yang memanggil atau dikirimkan dari prosedur tersebut.

  • Tubuh Prosedur, berisi statemen-statemen program yang akan melaksanakan tugas yang diberikan, untuk bagian ini harus diawali dengan tanda { dan diakhiri dengan tanda }

Pada C/C++, secara lengkap penulisan fungsi/prosedur tambahan dan fungsi utama serta pemaanggilannya dapat ditulis sebagai berikut :

#include <library header>

tipe_fungsi nama_Fungsi(argumen1, argumen2,….)   prototipe fungsi

void nama_Prosedur(argumen1, argumen2,….)      /Prosedur

int main()

{

printf(“%…”,nama_fungsi(argumen)):

atau                                   Pemanggilan fungsi

variabel = nama_fungsi(argumen);

printf(“%…”,variabel):

nama_prosedur(argumen1, argumen2,…);             Pemanggilan

proses argumen ex : printf(”%…”,argumen1); dst   Prosedur

return 0;

}

  1. Perbedaan utama fungsi dan prosedur adalah

Fungsi hanya akan mengembalikan sebuah nilai ke bagian yang memanggilnya atau dengan kata lain sebuah fungsi hanya mengerjakan satu tugas saja, sedangkan prosedur akan mengembalikan satu atau lebih nilai atau bahkantidak mengembalikan nilai sama sekali ke bagian yang memanggilnya, atau dengan kata lain sebuah prosedur dapat mengerjakan lebih dari satu tugas Kelebihan program yang menggunakan fungsi tambahan selain fungsi utamanya diantaranya :

  • Program menjadi lebih mudah dimengerti

Hal ini disebabkan karena proses penyelesaian untuk suatu masalah dipecah menjadi beberapa

sub masalah/ pemecahan masalah tersebut ke dalam bentuk fungsi yang lebih sederhana akan

membuat program menjadi lebih mudah dimengerti dibandingkan jika semuanya dilakukan

dalam fungsi utama saja.

  • Pengaruh antar bagian menjadi lebih kecil (Program menjadi lebih independen)

Karena suatu sub masalah diselesaikan dalam fungsi/prosedur yang terpisah maka (seharusnya) hal tersebut tidak akan mempengaruhi perintah yang ada pada fungsi/prosedur yang lain. Tidak seperti jika dikerjakan dalam fungsi utama atau bagian utama, sebuah perintah tertentu pada suatu baris program memungkinkan akan memberi pengaruh yang tidak dikehendaki ke perintah pada baris program yang lain. Dalam pembuatan sebuah fungsi/prosedur yang baik, perintah-perintah yang ada dalam suatu fungsi/prosedur seharusnya tidak mempengaruhi perintah-perintah yang ada di fungsi/prosedur yang lain (independen)

Fungsi/prosedur yang pernah dibuat dapat dipakai kembali di program yang lain untuk menyelesaikan masalah yang berbeda, sehingga pada pembuatan program berikutnya akan

menjadi semakin mudah karena kita sudah mempunyai beberapa fungsi/prosedur tambahan yang dapat dimanfaatkan (contohnyaLibrary header dalam bahasa C/C++). Hal ini akan membantu seorang programmer untuk menyelesaiakan suatu program dengan waktu yang lebih singkat.

  • Lebih efisien dan ukuran program menjadi lebih kecil

Dengan adanya fungsi/prosedur penulisan kumpulan baris program yang sama di tempat yang

berbeda dapat dikurangi atau dapat ditulis satu kali saja dalam fungsi/prosedur, jika bagian

program membutuhkan perintah tersebut tinggal memanggil fungsi/prosedur tersebut. Sehingga program yang dibuat menjadi lebih efisien dan ukurannyapun menjadi lebih kecil

Penulisan kumpulan baris program yang sama secara berulang-ulang ditempat yang berbeda

akan mengakibatkan program menjadi tidak konsisten, karena jika terdapat kesalahan dalam

kumpulan baris program tersebut maka programmer harus mengingat kembali posisi kumpulan baris program tersebut. Sebaliknya jika kumpulan baris program yang sama dibuat dalam bentuk fungsi/prosedur maka jika ada kesalahan perintah, programmer tinggal memperbaikinya pada fungsi/prosedur tersebut.

  1. Terdapat tiga jenis data yang mungkin dikirim dengan menggunakan parameter yaitu
  2. Isi atau nilai dari suatu variabel/data atau dikenal juga sebagai passing by value

Karakteristik pengiriman parameter ini diantaranya :

  • Yang dikirim ke fungsi/prosedur adalah nilai dari data,
  • Fungsi/prosedur yang menerima kiriman nilai ini akan menyimpannya di alamat yang

terpisah dari nilai aslinya yang digunakan oleh bagian program yang memanggil fungsi/prosedur terbsebut,

  • Perubahan nilai fungsi/prosedur tidak akan mengubah nilai asli di bagian program yang

memanggil fungsi/prosedur walaupun keduanya menggunakan nama variabel yang sama,

  • Merupakan pengiriman searah, yaitu dari bagian program yang memanggil fungsi/prosedur

ke fungsi/prosedur yang dipanggil,

  • Dapat digunakan untuk suatu ungkapan, sebuah variabel atau elemen larik atau konstanta.

Contoh : Program dengan menggunakan pengiriman parameter passing by value

#include<stdio.h>

int Tambah5(int X)

{

X = X + 5;

printf(“\n Nilai di dalam fungsi A = %d”,X);

return X;

}

int main()

{

//deklarasi data

int A;

//input nilai

printf(“Masukan Nilai A : “);scanf(“%d”,&A);

//menampilkan nilai awal

printf(“\n sebelum fungsi dijalankan A = %d”,A);

//panggil fungsi Tambah5

printf(“\n Hasil Fungsi %d + 5 = %d\n”,A,Tambah5(A));

//menampilkan nilai akhir

printf(“\n setelah fungsi dijalankan A = %d”,A);

return 0;

}

  1. Alamat atau Nama dari suatu variabel/data atau dikenal juga sebagai passing by reference

passing by referencepassing by reference passing by reference

Karakteristik pengiriman parameter ini diantaranya :

  • Yang dikirim ke fungsi/prosedur adalah alamat letak dari nilai datanya,
  • Fungsi/prosedur yang menerima kiriman alamat ini akan menggunakan alamat yang sama

untuk mendapatkan nilai datanya,

  • Perubahan nilai fungsi/prosedur akan mengubah nilai asli di bagian program yang memanggil fungsi/Prosedur,
  • Merupakan pengiriman dua arah, yaitu dari bagian program yang memanggil fungsi/prosedur ke fungsi/prosedur yang dipanggil dan sebaliknya,
  • Tidak dapat digunakan untuk suatu ungkapan, hanya dapat digunakan untuk sebuah variabel atau elemen larik atau konstanta saja.

Contoh : Program dengan menggunakan pengiriman parameter

#include<stdio.h>

int Tambah5(int &A) //tanda & digunakan untuk menunjukan reference dari variabel A

{

A = A + 5;

printf(“\n Nilai di dalam fungsi A = %d”,A);

return A;

}

int main()

{

//deklarasi data

int A;

//input nilai

printf(“Masukan Nilai A : “);scanf(“%d”,&A);

//menampilkan nilai awal

printf(“\n sebelum fungsi dijalankan A = %d”,A);

//panggil fungsi Tambah5

printf(“\n Hasil Fungsi %d + 5 = %d\n”,A,Tambah5(A));

//menampilkan nilai akhir

printf(“\n setelah fungsi dijalankan A = %d”,A);

return 0;

}

  1. Pointer dari suatu variabel/data atau dikenal juga sebagai passing by pointer

Karakteristik pengiriman parameter ini diantaranya :

  • Yang dikirim ke fungsi/prosedur adalah alamat datanya,
  • Fungsi/prosedur yang menerima kiriman alamat ini akan menggunakan alamat yang sama untuk mendapatkan nilai datanya,
  • Perubahan nilai fungsi/prosedur akan mengubah nilai asli di bagian program yang memanggil fungsi/prosedur,
  • Merupakan pengiriman dua arah, yaitu dari bagian program yang memanggil fungsi/prosedur ke fungsi/prosedur yang dipanggil dan sebaliknya,

Contoh : Program dengan menggunakan pengiriman parameter passing by pointer

#include<stdio.h>

void Tukar(int *A, int *B) //tanda * digunakan untuk menunjukan

{                                     //pointer atau alamat dari variabel A dan B

int Temp;

Temp = *A;

*A = *B;

*B = Temp;;

printf(“\n Nilai di dalam fungsi –> A = %d dan B = %d”,*A,*B);

printf(“\n Alamat di dalam fungsi –>A = %d dan B = %d”,A,B);

}

int main()

{

//deklarasi data

int A,B;

//input nilai

printf(“Masukan Nilai A : “);scanf(“%d”,&A);

printf(“Masukan Nilai B : “);scanf(“%d”,&B);

//menampilkan nilai awal

printf(“\n sebelum fungsi dijalankan nilai A = %d dan B = %d”,A,B);

printf(“\n sebelum fungsi dijalankan alamat A = %d dan B = %d”,&A,&B);

//panggil fungsi Tukar

Tukar(&A,&B);

//menampilkan nilai akhir

printf(“\n setelah fungsi dijalankan nilai A = %d dan B = %d”,A,B);

printf(“\n sebelum fungsi dijalankan alamat A = %d dan B = %d”,&A,&B);

return 0;

}