Anda di halaman 1dari 12

MODUL PERKULIAHAN

PRAKTIKUM
ALGORITMA &
STRUKTUR DATA
(LAB)
Fungsi & Fungsi Rekursif
ABSTRAK TUJUAN

Function dan Procedure disebut juga Setelah membaca modul ini,


subroutine, merupakan blok statement mahasiswa diharapkan mampu
Tatap Muka
yang dapat dipanggil dari lokasi yang Kode Mata:Kuliah
untuk : W4119006
mampu membuat

06
Fakultas: Ilmu Komputer Disusun Oleh :
berbeda di dalam program. Yang Program C++ untuk
Program Studi: Teknik Informatika Kuwat Setiyanto, SKom., MMSI
membedakan antara function dan menyelesaikan masalah-
procedure yaitu suatu function jika masalah dengan menggunakan
dijalankan / dipanggil akan Fungsi dan fungsi rekursif.
mengembalikan suatu nilai. Dalam
PASCAL dikenal istilah procedure dan
function, dalam Basic dikenal sub dan
function, sedangkan dalam C++, Java,
PHP, dan keturunan C lainnya dikenal
hanya istilah function.

2020 PRAKTIKUM ALGORITMA & STRUKTUR DATA (LAB)


2 Kuwat Setiyanto, SKom., MMSI Pusat Bahan Ajar dan eLearning
http://www.undira.ac.id
PEMBAHASAN

Function

1. Perbedaan Function dan Procedure


Function dan Procedure disebut juga subroutine, merupakan blok statement yang dapat
dipanggil dari lokasi yang berbeda di dalam program. Perbedaan antara function dan procedure
adalah suatu function jika dijalankan / dipanggil akan mengembalikan suatu nilai, sedangkan
procedure tidak. Dalam Bahasa PASCAL dikenal istilah procedure dan function, dalam Bahasa
Basic dikenal sub dan function, sedangkan dalam C++, Java, PHP, dan keturunan C lainnya
dikenal hanya istilah function. Apabila kita ingin membuat subroutine yang tidak
mengembalikan nilai, kita dapat memberi nilai kembalian berupa void.

2. Function
Dengan mempergunakan function (fungsi), maka struktur program akan terlihat lebih
rapi. Fungsi merupakan sebuah blok instruksi yang dieksekusi dan dipanggil dari bagian lain
bagian program. Fungsi merupakan blok dari kode yang dirancang untuk melaksanakan tugas
khusus. Pada intinya fungsi berguna untuk :

 Mengurangi pengulangan penulisan program yang berulangan atau sama.


 Dapat melakukan pendekatan top-down dan divide-and-conquer: program besar dapat
dipisah menjadi program-program kecil.
 Program menjadi terstruktur, sehingga mudah dipahami dan dikembangkan.
 Kemudahan dalam mencari kesalahan-kesalahan karena alur logika jelas dan kesalahan
dapat dilokalisasi dalam suatu modul tertentu saja.
 Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa mengganggu
program keseluruhan.
 Mempermudah dokumentasi.
 Reusability: Suatu fungsi dapat digunakan kembali oleh program atau fungsi lain

2020 PRAKTIKUM ALGORITMA & STRUKTUR DATA (LAB)


3 Kuwat Setiyanto, SKom., MMSI Pusat Bahan Ajar dan eLearning
http://www.undira.ac.id
Bentuk umum penulisan Fungsi :

Tipe_data nama_fungsi(argumen1, argumen2,...)pernyataan;


Keterangan :

 Tipe_data : berisi tipe data yang akan dikembalikan oleh fungsi.


 Nama_fungsi : merupakan pengenal untuk memanggil fungsi.
 Argumen : masing-masing argument terdiri dari tipe data yang diikuti oleh pengenalnya,
seperti pendeklarasian variable baru.
 Pernyataan : merupakan bagian tubuh fungsi. Dapatberupa pernyataan tunggal ataupun
pernyataan jamak.

2.1 Dua jenis variable yang digunakan di dalam fungsi


1. Variabel lokal
Variabel yang hanya dapat diakses di dalam tubuh fungsi tersebut saja. Berikut
contoh deklarasi variabel local.

Contoh program :

#include <iostream>
using namespace std;

int penjumlahan(int a, int b) // variable lokal


{
int c;
c = a + b;
return (c);
}

2020 PRAKTIKUM ALGORITMA & STRUKTUR DATA (LAB)


4 Kuwat Setiyanto, SKom., MMSI Pusat Bahan Ajar dan eLearning
http://www.undira.ac.id
int main()
{
int hasil;
hasil = penjumlahan(55,45);
cout<<"Hasil penjumalah = "<<hasil;
return 0;
}
Output program :

2. Variabel global
Variabel yang dapat diakses dari mana saja. Dari dalam maupun dari luar tubuh
fungsi. Berikut deklarasi variabel global.

Contoh program :
#include<iostream>
using namespace std;

int pengurangan(int a, int b)


{

2020 PRAKTIKUM ALGORITMA & STRUKTUR DATA (LAB)


5 Kuwat Setiyanto, SKom., MMSI Pusat Bahan Ajar dan eLearning
http://www.undira.ac.id
int c;
c=a-b;
return (c);
}

int main()
{
int x= 100, y=25, hasil; // variable global
hasil=pengurangan(50,25);
cout<<"Pertama : " <<hasil<<endl;
cout<<"Kedua : " <<pengurangan(75,25)<<endl;
cout<<"Ketiga : " <<pengurangan(x,y)<<endl;
hasil=25+pengurangan(x,y);
cout<<"Keempat : "<<hasil<<endl;
return 0;
}
Output program :

2020 PRAKTIKUM ALGORITMA & STRUKTUR DATA (LAB)


6 Kuwat Setiyanto, SKom., MMSI Pusat Bahan Ajar dan eLearning
http://www.undira.ac.id
2.2 Dua cara melakukan pemanggilan argument
1. Pemanggilan dengan nilai (arguments passed by value)
Pada pemanggilan passed by value, nilai “variable pemberi” memiliki nilai tetap.

Contoh :

int x= 100, y=25, hasil;


hasil = pengurangan(x,y);
pada contoh tersebut, terjadi pemanggilan terhadap fungsi pengurangan() dengan x dan
y masing–masing bernilai 100 dan 25. Maka pada statement hasil = pengurang(x,y)
pengisian nilai terhadap variabel x dan y adalah tetap, yaitu x = 100 dan y = 25.

2. Pemanggilan dengan acuan (arguments passed by reference)


Pada pemanggilan passed by reference, sebuah pertukaran nilai mempengaruhi nilai
variabel pemberinya. Untuk melakukannya, diperlukan sebuah fungsi dengan
pemanggilan dengan nilai.
Contoh :
void kali (int& a, int& b, int& c)

{ a *= 1;

b *= 2;

c *= 3; }

int main()

{ int x=1, y=3, z=7;

kali(x,y,z);

cout<< “x= ”<<x<<”, y= “<<y<<”, z=“<<z;

return 0; }

2020 PRAKTIKUM ALGORITMA & STRUKTUR DATA (LAB)


7 Kuwat Setiyanto, SKom., MMSI Pusat Bahan Ajar dan eLearning
http://www.undira.ac.id
Hasil didapat berbeda adalah cara pertukaran tanpa ampersand (&) yang artinya fungsi
melayani pengisian berdasarkan referensi dengan pengisiian nilai seperti ini, maka
apabila terjadi perubahan nilai pada variabel a, b, c,maka akan mempengaruhi nilai
variabel x, y dan z.

3. Fungsi tanpa tipe (menggunakan void)


Terdapat fungsi yang tanpa memerlukan adanya pengembalian nilai. Misalkan sebuah
fungsi yang hanya bertugas mencetak kalimat pada layar monitor dan tanpa memerlukan
adanya pertukaran parameter. Dalam kondisi seperti ini, maka dipergunakan tipe fungsi void.

Contoh program :

#include<iostream>

using namespace std;

void salam(void)

cout<<"Selamat Belajar C++";

int main()

salam();

return 0;

}
2020 PRAKTIKUM ALGORITMA & STRUKTUR DATA (LAB)
8 Kuwat Setiyanto, SKom., MMSI Pusat Bahan Ajar dan eLearning
http://www.undira.ac.id
Output program :

4. Function Rekursif
Fungsi rekursif adalah suatu fungsi yang memanggil dirinya sendiri, artinya fungsi
tersebut dipanggil di dalam tubuh fungsi itu sendiri. Fungsi rekursif sangat berguna bila
diimplementasikan untuk pekerjaan pengurutan data, atau menghitung nilai factorial suatu
bilangan.

Contoh program :

#include <iostream>

using namespace std;

int factorial (int a)

if (a>1)return(a* factorial (a-1));

else

return (1);

}
2020 PRAKTIKUM ALGORITMA & STRUKTUR DATA (LAB)
9 Kuwat Setiyanto, SKom., MMSI Pusat Bahan Ajar dan eLearning
http://www.undira.ac.id
int main()

int angka;

cout<<"Masukkan angka : ";

cin>>angka;

cout<<"!"<<angka<<" = "<<factorial(angka);

return 0;

Output program :

2020 PRAKTIKUM ALGORITMA & STRUKTUR DATA (LAB)


10 Kuwat Setiyanto, SKom., MMSI Pusat Bahan Ajar dan eLearning
http://www.undira.ac.id
Latihan Soal :

Buatlah listing program untuk menghitung perpangkatan dengan output :

FUNGSI REKURSIF UNTUK MENGHITUNG PANGKAT

Masukan Nilai X = 2

Masukan Nilai Y = 5

X Dipangkatkan Y = 32

2020 PRAKTIKUM ALGORITMA & STRUKTUR DATA (LAB)


11 Kuwat Setiyanto, SKom., MMSI Pusat Bahan Ajar dan eLearning
http://www.undira.ac.id
DAFTAR PUSTAKA

[1] Kadir, Abdul. 2003. Pemrograman C++. Yogyakarta : Penerbit ANDI Yogyakarta

[2] Sanjaya, Dwi. 2003. Asyiknya Belajar Struktur Data di Planet C++. Jakarta : PT. Elex

Media Komputindo

[3] Utami, Erna & Sukrisno. 2005. 10 Langkah Belajar Logika dan Algoritma, Menggunakan

Bahasa C dan C++ di GNU/Linux. Yogyakarta : Penerbit ANDI Yogyakarta

[4] Wahid, Fathul. 2004. Dasar-dasar Algoritma & Pemrograman. Yogyakarta : Penerbit ANDI

Yogyakarta

2020 PRAKTIKUM ALGORITMA & STRUKTUR DATA (LAB)


12 Kuwat Setiyanto, SKom., MMSI Pusat Bahan Ajar dan eLearning
http://www.undira.ac.id

Anda mungkin juga menyukai