Anda di halaman 1dari 12

LAPORAN PRAKTIKUM

ILMU KOMPUTER

Oleh:

Nama : Mike Handayani

NPM : F1F016007

Dosen Pengampuh : Yudi Setiawan, S.T., M.Eng.

Asisten Koordinator : Wiemo Setyo Nugroho ( F1A015047)

Asisten Pratikum : 1. Ayu Meilandika kinanti ( F1A015032)

2. Anisa Nelfa Sari ( F1A015046 )

LABORATORIUM MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS BENGKULU

2017
PERTEMUAN VI

REKURSI

I. Pendahuluan
A. Latar Belakang
Di era globalisasi saat ini, dunia semakin maju baik itu ilmu pengetahuan
maupun teknologi. Seiring berkembangnya teknologi saat ini sangat membantu
dalam dunia pendidikan, perkantoran, dan lain sebagainya. Dalam dunia
pendidikan itu sendiri sangat diperlukan yang namanya sutau program yang dapat
mempermuda mahasiswa dalam membuat program terutama jurusan yang berbau
komputer, salah satunya statistika.
Berbicara statistika, kata statistika tidak jauh dari yang namanya angka,
data-data, dan komputer. Maka dari itu sangat diperlukan suatu program yang
dapat membantu mempermudah dalam menjalankan program statistika tersebut.
Program tersebut dikenal dengan bahasa program C++, dan dalam program
tersebut terdapat bagian-bagian yang menjalankan fungsi masing-masing
tergantung tingkat kebutuhan dan kesuliatnnya. Maka dari itu sangat diperlukan
suatu program yang dapat membantu mempermudah dalam menjalankan program
statistika tersebut, salah satunya yaitu rekursi.
Dengan adanya rekursi ini kita dengan mudah melakukan perulangan dengan
batasan yang luas dalam artian melakukan perulangan dalam skala yang besar dan
dapat melakukan perulangan dengan batasan fungsi. Tentu saja semua fungsi yang
bakalan kamu buat tidak akan berjalan sendiri-sendiri namun bekerja atas dasar
panggilan atau koordinasi fungsi utama atau fungsi main()

B. Rumusan Masalah

1. Bagaimana penggunaan rekursi pada program C++?

2. Bagaimana cara membuat fungsi rekursi pada program C++?

C. Tujuan

1. Mahasiswa mampu memahami penggunaan rekkursi pada program C++

2. Mahasiswa mampu membuat fungsi rekursi pada program C++


II. Landasan Teori
Rekursif adalah suatu proses yang memanggil dirinya sendiri. Dalam rekursif
sebenarnya terkandung pengertian prosedur atau fungsi. Perbedaannya adalah
bahwa rekursif bisa memanggil ke dirinya sendiri, tetapi prosedur atau fungsi harus
dipanggil lewat pemanggil prosedur atau fungsi. Pemanggilan diri sendiri dilakukan
berulang-ulang sampai mencapai titik tertentu. Implementasi dari rekursif yang
paling simple biasanya digunakan untuk menghitung faktorial dari sebuah bilangan
atau menghitung bilangan fibonacci (Anonim, 2016).
Rekursi akan terus berjalan sampai kondisi berhenti terpenuhi, oleh kareana itu
perlu adanya blok-blok kode sebagai berikut:
1. Basis : Basis merupakan kode yang menjadi titik berhenti dari sebuah proses
rekursi karena proses rekursi akan terus berjalan berputar memanggil dirinya
sendiri sampai sebuah kondisi basis terpenuhi. Oleh karena itu basis sangat
penting dalam sebuah proses rekursi, karena tanpa basis sebuah proses rekursi
akan terus dijalankan tanpa henti.
2. Rekursi : Rekursi merupakan kode dalam hal ini sebuah blok program (prosedur,
fungsi atau metode) memanggil dirinya sendiri, misalnya ada sebuah fungsi
hitung hasil faktorial, bahwa di dalamnya blok kode fungsi itu memanggil
dirinya sendiri
(Ardi, 2013).
Proses rekursi akan selesai tergantung pada kondisi pernyataan if-nya. Jika
pernyataan if menjadi FALSE maka akan menghentikan proses rekursi.
Prinsip dan proses rekursi:
1. Memiliki kasus non rekursi(sederhana)
2. Kasus awal diarahkan menuju kasus sederhana
3. Mendefinisikan proses rekursi
Dalam bentuk pernyataan, biasanya menggunakan pernyataan if( atau
if……else) Fungsi yang didefinisikan secara rekursif:
Langkah-langkah untuk mendefinisikan fungsi dengan domain bilangan cacah:
1. Langkah basis: Definisikan nilai fungsi pada saat nol.
2. Langkah rekursif: Berikan aturan untuk mencari nilai fungs iuntuk setiap
bilangan bulat berdasarkan nilai fungsi pada bilangan bulat yang lebih kecil.
Kelebihan perulangan rekursi adalah Sangat mudah untuk melakukan
perulangan dengan batasan yang luas, dan Dapat melakukan perulangan dengan
batasan fungsi. Sedangkan kekurangan dari perulangan rekursi adalah tidak bisa
melakukan nested loop atau looping bersarang. Biasanya membuat fungsi sulit
untuk dipahami, hanya cocok untuk persoalan tertentu saja. Memerlukan stack yang
lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal dan parameter formal
akan ditempatkan ke stack dan ada kalanya akan menyebabkan stack tak cukup lagi
(stack overum). Proses agak berbelit-belit karena terdapat pemanggil fungsi yang
berulang-ulang dan pemanggilan data yang ditumpuk (Novianti, 2017).
III. Algoritma dan Flowchart
A. Algoritma
Langkah-langkah dalam membuat program menggunakan bahasa program C++
1. Program fungsi rekursi untuk menentukan bilangan terbesar dari sebuah
string.
 Input : data dalam bentuk bilangan
 Proses :
o Pilih program turbo/borland
o Masukkan data yang akan diprogram
o Cout<<”mencari bilangan terbesar”<<endl;
o Cout<<”masukkan jumlah angka :”cin>>jumlah;
o Cout<<”masukkan angka :”cin>>angka;
o Cout<<”bilangan terbesar adalah : “<<max<<endl;
o Getch ();
o Lalu klik debug→run
o Selesai
 Output : nilai dari bilangan terbesar
2. Menentukan fungsi rekursi pangkat.
 Input : Data dalam bentuk bilangan yaitu untuk x=16 dan n=7
 Proses :
o Pilih program turbo/borland
o Masukkan data yang akan diprogram
o Cout<<”program untuk memangkatkan dengan
menggunakan rekursi”<<endl;
o Cout<<”x : “;
o Cout<<”n : “;
o Cout<<x<<” “<<n<<” = “<<hasil;
o Return 0;
o Lalu klik debug→run
o Selesai
 Output : 268435456
B. Flowchart

Mulai

Masukkan karakter bilangan

Max =Bilangan

Tampilan bilangan terbesar

Selesai

Gambar 1. Flowchart soal nomor 1


Mulai

Masukkan x=16 dan n=7

Cout<<x : “; cout<<n : “;

Cout<<x<<” “<<n<<” = “<<hasil;

Hasil dari bilangan pangkat yaitu: 268435456

Selesai

Gambar 2. Flowchart soal nomor 2


IV. Teladan dan Langka Kerja
A. Teladan
1. Buatlah fungsi rekursi untuk menentukan bilangan terbesar dari sebuah
string. Nyatakan dalam bentuk algoritma dan listing programnya!
2. Buatlah fungsi rekursi untuk menentukan bilangan berpangkat dengan x=16
dan n=7.
B. Langka Kerja
1. Pilih program turbo C++/borland
2. Pilih new program
3. Ketik program, menggunakan bahasa C++
4. Setelah selesai pengetikan, pilih file dan save as program tersebut dengan
nama file sesuai keinginan praktikan
5. Kemudian eksekusi program tersebut dengan cara klik debug→run .
C. Listing Program

Gambar 3. Listing program soal nomor 1


Gambar 4. Listing program Soal nomor 2
V. Hasil dan Pembahasan
A. Hasil

Gambar 5. Hasil soal nomor 1

Gambar 6. Hasil pemograman pangkat.


B. Pembahasan
Pada soal nomor 1 yang pertama kita lakukan adalah masukkan #include
conio, stdio dan iostream, kemudian fungsi utama, lalu int angka, jumlah, max;.
untuk menginput data maka gunakan cout <<”mencari bilangan
terbesar”<<endl; cout<<”masukkan jumlah angka”<<endl;. For (int i=1;
i<=jumlah; i++){ diakhiri dengan else{}, untuk yg terakhir cout<<”bilangan
terbesar adalah : “<<max<<endl;. Gunakan getch untuk mengakhiri program
maka hasil akan ditampilkan.
Sedangkan untuk nomor 2 sama seperti sebelumnya gunakan ibrary dan
fungsi utama, int pangkat. Disini terdapat dua fungsi utama, yang pertama return
x *pangkat(x, n-1);//pemanggilan kembali fungsi pangkat dengan n-1} dan yang
kedua int hasil cout<<”program untuk memangkatkan dengan menggunakan
rekursi”<<endl; cout<<”x : ”; cout<<”n : “; cout<<x<<” “<<n<<”=”<<hasil;
namun program ini diakhiri dengan return 0; maka hasil akan setelah di run lalu
inputkan data yang ingin kita masukkan. Gunakan n dan x sesuai keinginan kita.
VI. Kesimpulan dan Saran
A. Kesimpulan
Rekursif adalah suatu proses yang memanggil dirinya sendiri. Dalam
rekursif sebenarnya terkandung pengertian prosedur atau fungsi. Perbedaannya
adalah bahwa rekursif bisa memanggil ke dirinya sendiri, tetapi prosedur atau
fungsi harus dipanggil lewat pemanggil prosedur atau fungsi
Kelebihan perulangan rekursi adalah Sangat mudah untuk melakukan
perulangan dengan batasan yang luas, dan Dapat melakukan perulangan dengan
batasan fungsi. Sedangkan kekurangan dari perulangan rekursi adalah tidak bisa
melakukan nested loop atau looping bersarang. Biasanya membuat fungsi sulit
untuk dipahami, hanya cocok untuk persoalan tertentu saja. Memerlukan stack
yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal dan parameter
formal akan ditempatkan ke stack dan ada kalanya akan menyebabkan stack tak
cukup lagi (stack overum). Proses agak berbelit-belit karena terdapat pemanggil
fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk
B. Saran
Sebaiknya jelaskan materi lebih jelas dan detail supaya mudah dimengerti.
Pahami materi dulu sebelum praktikum dimulai serta jelsakan lebih rinci
kegunaan dari rekursif itu sendiri.
DAFTAR PUSTAKA

Anonim. 2016. Rekursif dalam Bahasa C++. www.mahirkoding.com. Diakses pada


tanggal 25 Mei 2017. Pukul 11:29 WIB.
Ario, Ardi. 2013. Pengertian Rekursi dan Contohnya. diam2belajar.blogspot.com.
Diakses pada tanggal 25 Mei 2017. Pukul 11:43 WIB
Novianti, Pepi. 2017. Rekursi. Bengkulu: Universitas Bengkulu.

Anda mungkin juga menyukai