Pages

LAPORAN PRAKTIKUM STRUKTUR DATA MODUL 3

Minggu, 16 April 2017

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

1 komentar:

 
FREE BLOGGER TEMPLATE BY DESIGNER BLOGS