LAPORAN
PRAKTIKUM
MODUL
3
FUNGSI
REKURSI
STUKTUR
DATA
Diajukan
untuk memenuhi tugas sebagai bahan praktikum
Dosen
: Endra Suseno, M.Kom
Disusun
oleh :
Egi
Legitasari
20160910045
Sistem
informasi A 2016
FAKULTAS
ILMU KOMPUTER
UNIVERSITAS
KUNINGAN
2016
PRAKTIKUM
1
Study Kasus
Dalam perhitungan matematika dikenal perpangkatan dengan menentukan
bilangan dasar yang akan dipangkatkan dan menentukan pangkat yang akan
diterapkan pada bilangan dasar tersebut, bagaimana pehitngan matematika
tersebut jika dibuat sebuah program.
Script Program menggunakan C/C++
#include<stdio.h>
#include<conio.h>
int pangkat (int x, int y);
main()
{
int x,y;
printf("Masukan Bilangan Yang Akan Dipangkatkan= ");
scanf("%d", &x);
printf("\nPangkat Bilangan= ");
scanf("%d", &y);
printf("\nHasil Bilangan %d Pangkat %d adalah %d", x, y, pangkat(x,y));
getch();
return 0;
}
int pangkat (int x, int y)
{
if (y==0){
return 1;
}else{
return x*pangkat (x,y-1);
}
}
|
Pembahasaan
Program ini yaitu untuk menampilkan hasil perpangkatan dari dua bilangan
yang diinputkan, yaitu bilangan yang akan dipangkatkan dan berapa pangkat
bilangan yang diinginkan.
int pangkat (int x, int y); merupakan syntax yang berupa fungsi
untuk hasil output akhir. Dan maksud dari x dan y yaitu merupakan variabelnya.
printf("\nHasil Bilangan %d Pangkat %d adalah %d", x, y,
pangkat(x,y)); merupkan penggalan sytax yang berupa rumus atau proses program
tersebut. Yang nantinya akan menjai hasil output dan variabel x dan y di simpan
didalamnya.
int
pangkat (int x, int y)
{
if(y==0){
return 1;
}else{
return x*pangkat(x,y-1);
}
|
Penggalan syntax diatas adalah fungsi pangkat dengan variabel int
x, int y (if(y==0)) dan dibaca jika y sama dengan 0, maka program akan
menjalankan return 1 yaitu fungsi utama dalam program, bertujuan untuk
mengembalikan nilai 1, tetapi jika kondisi pertamanya if(y==0) tidak
terpenuhi atau bernilai salah, misalnya y > 10 atau dibaca y lebih besar
dari 10.
Maka program tidak akan menjalankan perintah yang pertama dan akan di
jalankan oleh else yang akan menjalankan pernyataan ke-2 yaitu return
x*pangkat(x,y-1);
Hasil Runing program
PRAKTIKUM
2
Study Kasus
Bilangan yang ada merupakan runtutan jumlah dari
bilangan sbelumnya, dengan demikian kita dapat mengetahui deret bilangan
sebelumnya dengan melakukan faktorisasi dari bilangan tersebut, hasil dari
penjumlahaan deret bilangan tersebut dapat di lakukan dengan sebuah faktorial.
Contoh : 4 difaktorialkan (4!) => 4 3 2 1 : (hasil
kali 4!) = 24
Script Program menggunakan C/C++
#include<iostream.h>
int factorial (int a)
{
if (a>0){
cout<<a<<" ";
return (a*factorial(a-1));
}
else
return 1;
}
int main()
{
int a;
int factorial(int a);
cout<<"Program Menampilkan Deret Nilai Faktorial"<<endl;
cout<<"Masukan Nilai Faktorial: ";
cin>>a;
cout<<endl;
cout<<"\n\nRekursif-> Hasil Perkalian Semua Nilai dari "<<a<<"!="<<factorial (a);
return 0;
}
|
Pembahasaan
Program ini merupakan program yang akan menghasilkan nilai factorial.
Dengan menginput beberapa nilai yang akan difaktorialkan, dengan itu akan
menghasilkan deretan bilangan dari factorial nilai yang diinputkan.
int factorial (int a)
Merupakan sebuah fungsi dari program ini, yang berarti int a adalah
bilangan yang akan difaktorialkan.
{
if(a>0){
cout<<a<<" ";
return(a*factorial(a-1));
}
else
return 1;
}
|
Merupakan penggalan syntax yang jika a lebih dari 0 (if(a>0)) yang akan
dihitung dengan rumus return(a*factorial(a-1)); maka akan
diketahui berapa deret bilangannya.
Sedangkan jika kondisi pertama yaitu if(a>0) bernilai salah maka else
akan melakukan pernyataan ke-2 yaitu return 1 (kembali ke nilai 1).
int main()
{
int a;
int factorial(int a);
cout<<"Program Menampilkan Deret Nilai
Faktorial"<<endl;
cout<<"Masukan Nilai Faktorial : ";
cin>>a;
cout<<endl;
cout<<"\n\nRekursif -> Hasil Perkalian semua nilai dari
"<<a<<"! = "<<factorial(a);
return 0;
}
|
Fungsi dari endl yaitu untuk membuat baris baru.
cout<<"\n\nRekursif -> Hasil Perkalian semua nilai dari
"<<a<<"! = "<<factorial(a);
Maka kita akan mengetahui berapa deret bilangan factorial dari nilai/angka yang
kita masukan.
Hasil Runing program
PRAKTIKUM
3
Script Program menggunakan C/C++
#include<iostream.h>
#include<conio.h>
int fibo (int i)
{
if (i==0)
return 0;
else if(i==1)
return 1;
else
//Fungsi Rekursif
return fibo (i-1)+fibo(i-2);
}
int main()
{
int bil, i;
cout<<"\tFungsi Rekursif Bilangan Fibonacci"<<endl;
cout<<"\t=================================="<<endl;
cout<<"\nMasukan Bilangan: ";
cin>>bil;
//Pemanggilan Nilai Fibonacci
for (i=1; i<=bil; i++)
//Pemanggilan Fungsi
cout<<" "<<fibo(i);
cout<<"\nFibonacci("<<fibo(bil);
getche();
return 0;
}
|
Pembahasaan
Program
ini yaitu program yang akan menampilkan fungsi rekursif dari bilangan
Fibonacci. Bilangan Fibonanci adalah bilangan yang melakukan penambahan
terhadap dirinya sendiri dan nilai penjumlahan dari bilangan pada dirinya yang
sebelumnya.
int fibo(int i)
{
if(i==0)
return 0;
else if(i==1)
return 1;
else
//fungsi rekursif
return fibo(i-1)+fibo(i-2);
}
|
Script ini
adalah fungsi fibo dengan menggunakan tipe data integer untuk variabel i. Pada
program ini juga menggunakan stuktur IF-ELSE. Jika i sama dengan 0 (if(i==0)
maka pernyataan yang akan dijalankan yaitu return 0 dimana return 0 ini
mengembalikan nilai 0, namun jika kondisi bernilai salah maka else akan
menjalankan kondisi ke-2.
cout<<"
"<<fibo(i);
|
Merupakan
fungsi fibo dengan variabel i. Untuk pemanggilan fungsi untuk mencari bilangan
fibonanci itu sendiri.
for(i=1;
i<=bil; i++)
|
i sebagai
nilai awal adalah 1, i<=bil merupakan pembatas nilai akhir, sedangkan i++
itu adalah dimana nilai i akan ditambah sampai nilai i itu terpenuhi sampai
batas akhir nilai i.
Hasil Runing program
LATIHAN
1
Study Kasus
Program
berikut ini berfungsi untuk membalikan urutan deret bilangan yang diinput
menggunakan fungsi rekursif.
Contoh :
12345678 -> 87654321
Script Program menggunakan C/C++
#include<stdio.h>
#include<conio.h>
#define MAX 100
void rekursif_angka_terbalik(int);
main()
{
int i,j,jml= 0;
char bil[MAX];
printf("\nProgram Pembalik Angka");
printf("\n");
printf("\nMasukan bilangan yang akan dibalik kawan= ");
gets(bil);
for (i=0; bil[i]; i++)
jml= jml++;
printf("\n");
printf("Maka hasilnya adalah= ");
for(j= jml-1; j>=0; j--)
printf("%c", bil[j]);
printf("\n");
getch();
return 0;
}
|
Pembahasaan
Program
ini yaitu program pembalik angka. Apabila memasukan beberapa nilai maka nilai
itu akan langsung dibalik.
Statemen
#define MAX 100 (maksimal diisi 100). Untuk mensubsitusikan suatu teks dalam
program.
void
rekursif_angka_terbalik(int);
|
Merupakan fungsi
rekursif untuk angka terbalik.
for(j= jml-1;
j>=0; j--)
|
Intruksi
for yaitu untuk mengetahui secara pasti banyaknya pengulangan yang akan
dilakukan.
Hasil Runing program
LATIHAN
2
Study Kasus
Deret
fibonanci adalah deret unik yang dapat dirumuskan dalam rumus matematika
sederhana bagaimana membuat menampilkan deret fibonanci dengan menggunakan
batasan akhir dari sebuah angka fibonanci dengan menggunakan statement #define
variabel.
Script Program menggunakan C/C++
#include <iostream.h>
#define MAX 10
long fibo[MAX];
int i,j, suku, a, b, c;
int main()
{
cout<<"Membuat Deret Fibonacci\n";
for(int i=0; i<MAX; i++)
{
cout<<"Masukkan nilai suku ke-: ";cin>>suku;
}
cout<<"Bilangannya adalah: \n";
a=0;b=1;
cout<<a<<endl<<b<<endl;
for(int j=1; j<suku; j++)
{
c = a + b;
a = b;
b = c;
cout<<c<<endl;
}
return 0;
}
|
Pembahasaan
Program yaitu
program untuk membuat Deret Bilangan Fibonanci dengan menggunakan fungsi
rekursi. Menggunakan rumus :
for(int j=1;
j<suku; j++)
{
c = a + b; a =
b; b = c; cout<<c<<endl;
}
|
Program
ini menggunakan instruksi perulangan FOR, digunakan untuk mengetahui secara
pasti banyaknya pengulangan yang akan dilakukan.
for(int
i=0; i<MAX; i++)
i sebagai
nilai awal bernilai 0,i<MAX merupakan pembatas nilai akhir. Sedangkan i++
itu adalah dimana nilai i akan ditambah sampai nilai i itu terpenuhi sampai batas
akhir nilai i.
Hasil Runing program
LATIHAN
3
Script Program menggunakan C/C++
#include<stdio.h>
#include<conio.h>
int pangkat (int x, int y);
main()
{
int x,y;
printf("Masukan Bilangan Yang Akan Dipangkatkan= ");
scanf("%d", &x);
printf("\nPangkat Bilangan= ");
scanf("%d", &y);
printf("\nHasil Bilangan %d Pangkat %d adalah %d", x, y, pangkat(x,y));
getch();
return 0;
}
int pangkat (int x, int y)
{
if (y==0){
return 1;
}else{
return x*pangkat (x,y-1);
}
}
|
Pembahasan
Program ini
yaitu untuk menampilkan perpangkatan dengan bilangan dasar yang akan
dipangkatkan dan menentukan pangkat yang akan diterapkan pada bilangan dasar
dengan menggunakan Fungsi Rekursi.
int pangkat (int
x, int y)
{
if(y==0){
return 1;
}else{
return x*pangkat(x,y-1);
}
|
Apabila 0
(if(y==0)) maka program akan menjalankan return 1 yaitu mengembalikan nilai
ke-1, tetapi jika kondisi pertama yaitu if(y==0) tidak terpenuhi atau bernilai
salah, maka program akan menjalankan else yang akan menjalankan pernyataan ke-2
yaitu return x*pangkat(x,y-1);
Hasil Runing program
LINK POST TEST
Post Test 1
Post Test 2
Post Test 3