Minggu, 30 April 2017

PRAKTIKUM_MODUL_3

Halloo assalamualaikum.wr.wb
Minggu lalu kita sudah membahas materi mengenai fungsi/function dan untuk kali ini kita akan membahas materi fungsi rekursi, ada beberapa study kasus yang akan kita coba selesaikan, mengenai fungsi rekursi.
Sebelumnya apa sih fungsi rekursi itu.?
Untuk menjawab pertanyaan diatas  simak penjelasan singkatnya dibawah ini yaa. . . .


FUNGSI REKURSI

Rekursif berarti 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. Rekursif merupakan teknik pemrograman yang penting, dan beberapa bahasa pemrograman modern mendukung keberadaan proses rekursif ini.
Pemanggilan prosedur atau fungsi ke dirinya sendiri bisa berarti proses yang berulang yang tidak bisa diketahui kapan akan berakhir. Dalam pemakaian sehari-hari, rekursi merupakan teknik pemrograman yang berdaya guna untuk digunakan pada pekerjaan pemrograman dengan mengeksperisikannya ke dalam suku-suku dari program lain dengan menambahkan langkahlangkah sejenis. Contoh paling sederhana dari proses rekursi adalah menghitung nilai faktorial dari bilangan bulat. Nilai faktorial, secara rekursif dapat ditulis sebagai :

0! = 1
N! = N x (N-1)!, Untuk N > 0
yang secara notasi pemrograman bisa ditulis sebagai:
FAKTORIAL (0) = 1 1)
FAKTORIAL (N) = N * FAKTORIAL (N-1) 2)

Persamaan 2) di atas merupakan contoh hubungan rekurens (recurrence relation), yang berarti bahwa nilai suatu fungsi dengan argumen tertentu bisa dihitung dari fungsi yang sama dengan argumen yang lebih kecil. Persamaan 1) yang tidak bersifat rekursif, disebut nilai awal. Setiap fungsi rekursi paling sedikit mempuyai 1 (satu) nilai awal; jika tidak, fungsi tersebut tidak bisa dihitung secara eksplisit.
Proses rekursi akan selesai , ini terletak pada kondisi pernyataan if-nya. Jika pernyataan if menjadi FALSE maka akan menghentikan proses rekursi
Prinsif dan proses rekursi:
Memiliki kasus non rekursi(sederhana)
Kasus awal diarahkan menuju kasus sederhana
Mendefinisikan proses rekurs



Praktikum 1

Studi Kasus
Menentukan bilangan dasar yang akan dipangkatkan dan menentukan pangkat yang akan diterapkan pada bilangan dasar tersebut.

#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("\n Pangkat Bilangan = ");
scanf("%d",&y);                         
printf("\n Hasil 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);
}
}



Hasil Runing :


Gambar 1


Pembahasan :
Program diatas dibuat untuk menentukan nilai perpangkatan dari bilangan yang kita inputkan. Jadi jadi kita inputkan bilangan yang akan dipangkatkan, contohnya kita masukan bilangan 3 dan kita masukan pangkat nya 3, maka bilangan nya 3 pangkat 3 dan hasilnya 3x3x3 = 27.



Praktikum 2

Study Kasus

#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;
}



Hasil Runing :

Gambar 2



Pembahasan :
Program diatas merupakan program untuk menampilkan runtutan dan jumlah dari bilangan sebelumnya dengan demikian kita dapat mengetahui deret bilangan sebelumnya dengan melakukan faktorisasi dari bilangan tersebut, hasil dari penjumlahan deret bilangan tersebut dapat di lakukan dengan sebutan factorial. Contoh kita masukan nilai faktorialnya 3, maka 3 2 1, dan setelah dihitung maka jumlah dari bilangan tersebut adalah 3x2x1=6.



Praktikum 3

Study Kasus 3

#include<iostream.h>
#include<conio.h>
int fibo(int i)
{
if(i==0)
return 0;
else if(i==1)
return 1;
else
return fibo(i-1)+fibo(i-2);
}
int main()
{
int bil,i;
cout<<"\t Fungsi Rekrusif Bilangan Fibonaci"<<endl;
cout<<"\t==================================="<<endl;
cout<<"\nMasukan bilangan:";
cin>>bil;
for(i=1; i<=bil;i++)
cout<<" "<<fibo(i);
cout<<"\n Fibonaci("<<bil<<")="<<fibo(bil);
getch();
return 0;
}



Hasil Runing :

Gambar 3



Pembahasan :
Program diatas dibuat untuk menghitung bilangan fobonaci dengan cara meginputkan bilangan yang akan dihitung bilangan fibonaci nya



Latihan 1

Study Kasus
Program berikut ini berfungsi untuk membalikan urutan deret bilangan yang diinput menggunakan fungsi rekursi.

#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 Deret\n");
printf("\nMasukan bilangan deret yang dibalikan = ");
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;
}



Hasil Runing :

Gambar 4



Pembahasan :
Program diatas berfungsi untuk menampilkan deret anga yang sudah  dibalikan susunann nya, contoh : 1 2 3 4 5, maka setelah dibalik hasilnya akan menjad seperti ini : 5 4 3 2 1.



Latihan 2

Study Kasus
Menampilkan deret fibonanci dengan memberikan batasan akhir dari sebuah angka fibonanci dengan menggunakan statement #define variable.
          
#include<iostream.h>
#include<conio.h>
#define MAX 5
int main()
{
int i;
long fibo[MAX];
fibo[1]=1;
fibo[2]=1;
for(i=3;i<=MAX;i++)
{
fibo[3]=fibo[1]+fibo[2];
fibo[1]=fibo[2];
fibo[2]=fibo[3];
cout<<fibo[3]<<endl;
}
getch();
return 0;
}



Hasil Runing :

Gambar 5



Pembahasan :
Program diatas bisa dugunakan untuk menampilkan deret fibonanci dengan memberikan batasan akhir dari sebuah angka fibonanci dengan menggunakan batasan akhir. Jadi jika kita tentukan batasan akhirnya 5 maka bilangan fibonaci yang akan ditampilkan berjumlah 5 buah bilanngan fibonaci.



Latihan 3

Study Kasus
Menentukan bilangan dasar yang akan dipangkatkan dan menentukan pangkat yang akan di tetapkan pada bilangan dasar tersebut.

#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("\n Pangkat Bilangan = ");
scanf("%d",&y);                         
printf("\n Hasil 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);
}
}



Hasil Runing :

Gambar 6



Pembahasan :


Program diatas dibuat untuk menentukan nilai perpangkatan dari bilangan yang kita inputkan. Jadi jadi kita inputkan bilangan yang akan dipangkatkan, contohnya kita masukan bilangan 4 dan kita masukan pangkat nya 2, maka bilangan nya 4 pangkat 2 dan hasilnya sama dengan 4x4=16.

Jumat, 07 April 2017

PRAKTIKUM_MODUL_2

Assalmalualakum Wr. Wb
Salam sejahtera dan salam sukses untuk kita semua, pada kesempatan kali ini saya akan memposting ulasan mengenai tugas praktikum mata kuliah Struktur Data mengenai materi Fungsi/function. Untuk kali ini akan ada beberapa study kasus yang kita akan coba selesaikan. Oke tidak usah banyak basa – basi langsung saja kita simak ulasannya dibawah ini,,! 



Dasar Teori

Fungsi atau function adalah sejumlah instruksi yang
dikelompokan menjadi satu, dan berdiri sendiri untuk menyelasikan suatu
pekerjaan tertentu. setiap fungsi mempunyai nama. Bahasa C/C++ minimal
memiliki satu buah nama yang disebut fungsi main(). Nama main () adalah nama
fungsi yang ditentukan dalam bahasa C/C++ yang tidak boleh diganti dengan nama
lain, fungsi-fungsi lain dapat dibuat sesuaidengan keperluannya dan nama
fungsinya dapat dikarang.
Fungsi merupakan blok dari kode yang dirancang untuk melakukan tugas
khusus. Adapun tujuan dari pembuatan fungsi ini adalah :
1. Program menjadi terstruktur
2. Dapat mengurang duplikasi kode
3. Fungsi dapat dipanggil dari program atau fungsi yang lain
Adapun bentuk umum definisi sebuah fungsi adalah sebagai berikut :
Penentu-tipe nama_fungsi (daftar parameter)
Deklarasi parameter
{
tubuh
fungsi
)
sebuah fungsi sederhana mempunyai bentuk penulisan sebagai berikut :
nama_fungsi(argumen)
{
...pernyataan/perintah
...pernyataan/perintah ...pernyataan/perintah
}



Nah itu dia sedikit penjelasan atau pengertian dari fungsi atau function, sekarang kita akan langsung ulas study kasus yang ada..


Praktikum

Study kasus 1 :

Membuat program yang dapat melakukan operasi dua operator penjumlahan dan
perkalian dengan masukan hanya dua buah variabel tampa ada nilai variabel yang
dipindahkan ke variabel baru, dan ditempatkan pada dua variabel keluaran


Syntax :
#include <iostream.h>
#include <conio.h>
int tambah (int a, int b)
{
int hasil1; hasil1= a+b;
return hasil1;
}
int kali (int a, int b)
{
int hasil2;
hasil2= a*b; return hasil2;}
void main()
{
int hasil1, hasil2, a, b;
cout<<"Nlai a = "; cin>>a;
cout<<"Nilai b = "; cin>>b;
hasil1=tambah(a,b)
cout<<"Hasil Tambah : "<<hasil1<<endl;
getch();
hasil2=kali(a,b);
cout<<"Hasil Kali : "<<hasil2<<endl;
getch();
}



Hasil Running








Studi kasus 2

Terdapat sebuah balok dengan ukuran yang belum ditentukan, yaitu panjang, lebar dan tinggi, bagaimana membuat program yang dapat menghitung luas balok dan volumenya dengan mengunakan function
Berikut ini program dalam menyelesaikan studi kasus diatas



Syntax

#include <iostream.h>
#include <conio.h>
int volume(int &l)
{
int t;
cout<<"\nMasukan Nilai Tinggi Balok :\t"; cin>>t;
l =l*t; return l;
}
int luas(int p, int l)
{
int x;
x=p*l;
cout<<"\nTampilkan Nilai Luas Balok :\t"<<x<<endl;
volume(x); return x;
}
void main ()
{
int p,l,j;
cout<<"Masukan Nilai Panjang Balok :\t"; cin>>p;endl;
cout<<"\nMasukan Nilai Lebar Balok :\t"; cin>>l;endl;
j=luas(p,l);
cout<<"\nVolume balok adalah : "<<j<<endl; getch();
}



Hasul Running







Studi kasus 3

Sebuah kendaraan roda empat melaju dengan kecepatan maksimum 85 KM/jam selama 3 jam dengan demikian total jarak yang ditempuh sudah dapat diketahui yaitu 85 KM/Jam X 3 jam = 255 KM, namun bila mana kendaraan tersebut melaju dengan kecepatan yang tidak konstan dengan ketentuan di 1 jam pertama melaju dengan kecepatan 72% dan pada jam ke dua hanya melaju 35% dari kecepatan maksimum dan pada jam ke tiga melaju 21% dari kecepatan maksimum berapakah jarak yang ditempuh oleh kendaraan tersebut ?



Syntax :

#include<stdio.h>
#include<iostream.h>
#include<conio.h>
float b = 85; float pertama(float a)
{
float km1; km1 = (a / 100) * b; return km1;
}
float kedua(float c)
{
float km2; km2 = (c / 100) * b; return km2;
}
float ketiga(float d)
{
float km3; km3 = (d / 100) * b; return km3;
} main()
{
float a,c,d,h;
printf("Mengitung Jarak Tempuh Kendaraan dalam waktu dinamis 3 Jam\n");
cout<<"\nMasukan Kecepatan pada Jam Pertama %: "; cin>>a;
cout<<"\nMasukan Kecepatan pada Jam Kedua % : "; cin>>c;
cout<<"\nMasukan Kecepatan pada Jam Ketiga % : "; cin>>d;
h = pertama(a) + kedua(c) + ketiga(d);
printf("\nJarak yang ditempuh kendaraan tersebut sejauh%.2f Kilometer",h);
return 0;
}


Hasil Running


Latihan

Study Kasus 1 :

Seorang tukang cat tembok mempunyai ukuran dalam pengecatan yang terbagi dalam 3 kategori kualitas yaitu kualitas tinggi, kualitas sedang dan kualitas rendah. Untuk kualitas tingggi 5 Kg cat tembok dapat menutupi bidang dengan baik seluas 3 X 4 m2 atau seluas 12 m2 dan kualitas sedang 5 Kg cat tembok dapat menutupi bidaang seluas 4 X 5 m2 atau seluas 20 m2 serta kualitas rendah 5 Kg cat tembok dapat menutupi seluas 6 X 11 m2 atau seluas 66 m2.


Syntax ;

#include<stdio.h>
#include<iostream.h>
#define kilo 5000;
float tinggi(float l_bidang)
{
float temp1,nilai;
nilai = (l_bidang/12)*kilo;
temp1 = nilai/1000;
return temp1;
}
float sedang(float l_bidang)
{
float temp2,nilai;
nilai = (l_bidang/20)*kilo;
temp2 = nilai/1000;
return temp2;
}
float rendah(float l_bidang)
{
float temp3,nilai;
nilai = (l_bidang/66)*kilo;
temp3 = nilai / 1000;
return temp3;
}
main()
{
int i,pilih; float l_bidang,harga;
printf(" PROGRAM PERHITUNGAN JUMLAH CAT \n");
for (i = 0;i < 33;i++)
printf("=");printf("\n");
printf(" 1. Kualitas Tinggi\n 2. Kualitas Sedang\n 3. Kualitas Rendah\n");
printf("Masukan Nomor Pilihan Kualitas : ");
scanf("%d",&pilih);
switch(pilih)
{
case 1:
{
cout<<"Kualitas Tinggi"<<endl;
cout<<"Luas Bidang\t= ";
cin>>l_bidang;
harga = tinggi (l_bidang);
cout<<"Jumlah Cat Yang Dibutuhkan :" <<harga;
break;
}
case 2:
{
cout<<"Kualitas Sedang"<<endl;
cout<<"Luas Bidang\t= ";
cin>>l_bidang;
harga = sedang (l_bidang);
cout<<"Jumlah Cat Yang Dibutuhkan :" <<harga;
break;
}
case 3:
{
cout<<"Kualitas Sedang"<<endl;
cout<<"Luas Bidang\t= ";
cin>>l_bidang;
harga = rendah (l_bidang);
cout<<"Jumlah Cat Yang Dibutuhkan :" <<harga;
break;
}
}
return 0;
}



Hasil Running 






Study Kasus 2

No
Harga BBM
Jarak
Tarif
1
Rp. 6.700
800 KM
Rp. 6.700.000
2
Rp. 6.700
600 Km
Rp. 5.900.000
3
Rp. 6.700
400 KM
Rp. 5.000.000
4
Rp. 6.700
200 KM
Rp. 4.700.000

Tabel diatas menujukan biaya pengiriman barang dengan menggunakan kendaraan truk dengan asumsi bahwa konsumsi BBM kendaraan 1:3 berapakah rasio BBM terhadap tarif tersebut dalam prosentase (%) yang diinput jarak dan tarif Lengkapilah program dibawah ini untuk menyelesaikan studi kasus diatas:

Syntax :

#include<iostream.h>
#include<stdio.h>
#include<conio.h>
rasio(float s)
{
float rasio; rasio = s / 3; return rasio;
}
int main() {
float s,tarif,olah,pros,liter;

cout<<"Program Perhitungan Rasio Tarif"<<endl;
cout<<"Masukan Jarak Tempuh KM = ";
cin>>s;
cout<<"Masukan Tarif : ";
cin>>tarif;
liter = rasio (s);
olah = 6700 * liter;
pros = (olah / tarif) * 100;
printf("Prosentase rasio BBM dan Tarif adalah :%.2f%",pros);
return 0;
}



 Hasil Running: