Anda di halaman 1dari 16

LAPORAN TETAP PRAKTIKUM

PROGRAM KOMPUTER

Oleh :

Nama : Fahira Anggraini


NIM : 08011181823014
Fakultas / Jurusan : MIPA / Matematika
Kelompok / Hari : II/Selasa
Tanggal Praktikum : 5 Maret 2019
Tanggal Penyerahan : 12 Maret 2019
Dosen Pengajar : Drs. Ali Amran, M.T.
Anita Desiani, M.Kom.
Nama Asisten : 1. Fathur Rachman Husein
2. Yogi Wahyudi

JUDUL PRAKTIKUM : FUNCTION DAN PROCEDURE (VOID)

LABORATORIUM KOMPUTASI
JURUSAN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SRIWIJAYA
2019
I. Judul Praktikum   : Function dan Procedure (Void)
II. Tujuan Praktikum   :
1. Memahami penjelasan mengenai function dan kegunaannya.
2. Memahami penjelasan tentang mendeklarasikan fungsi.
3. Mengetahui berbagai variabel parameter yang berhubungan dengan fungsi.
4. Memahami jenis-jenis dari fungsi dalam program.
5. Memahami penjelasan tentang variabel lokal dan variabel global.
6. Mengetahui penjelasan tentang fungsi yang rekrusif.
III. Logika dan Deskripsi Program
Dalam membuat program ini yang mencari hasil faktorial dari suatu bilangan yang
diinputkan dengan menggunakan suatu fungsi. Dan fungsi yang digunakan bersifat rekrusif
yaitu dalam fungsi ini terdapat instruksi memanggil fungsi ini sendiri. Dan juga fungsi dlam
melakukan program ini dengan menggunakan jenis fungsi nonvoid yang nantinya akan
mengembalikan suatu nilai. Langkah pertama membuat program ini dengan menggunakan file
header berupa iostream yang akan memanggil library yang berupa iostream. Lalu akan
menuliskan fungsi terlebih dahulu baru akan menuliskan program utama. Fungsi yang
digunakan dengan tipe data float yang untuk suatu bilangan pecahan, dengan variabel faktorial,
dan tipe data argumen dalam fungsi juga menggunakan tipe data float dengan nama argumen
yang menggunakan variabel f, pendeklarasian fungsi tanpa diakhiri dengan tanda titik koma (;).
Lalu mulai isi atau perintah fungsi dengan tanda buka kurung kurawal dan isi dari fungsi
merupakan perumusan untuk mencari faktorial dari sutu bilangan yang diinputkan, yaitu
dengan fungsi pernyataan if-else dan menggunakan return untuk mengembalikan dan
menghasilkan suatu nilai hasil dari program lalu tutup dengan tanda kurung kurawal. Lalu
mulai program utama dengan fungsi int main yang akan mengembalikan nilai dan awali
program utama dengan tanda buka kurung kurawal lalu isi dari program dengan
mendeklrasikan pengggunaan variabel f dengan tipe data float, lalu akan mencetak masukkan
angka dengan fungsi cin menggunakan variabel f lalu akan mengoutputkan faktorial dari
bilangan yang sudah diinputkan yang dibaca variabel f adalah hasil dari faktorial(f) yang
didapatkan dari perumusan dalam fungsi yang dipanggil.
Program mencari faktorial suatu bilangan yang diinputka ini dengan yang pertama
dilakukan mendeklarasikan struktur c++ berupa include<iostrean< dan using namespace std;
lalu masukkan fungsi dengan menggunakan float faktorial (float f) dan dalam fungsi
menggunakan pernyataan if(f>1) yang jika terpenuhi kondisinya akan menjalankan return
f*faktorial(f-1) dan jika tidak maka ke pernyataan else yang jike terpenuhi akan menjalankan
return1; dan selesai pada perumusan fungsi. Lalu menulisan program utama denagn int main()
yang akan mengembalikan nilai. Dengan isi program utama float f dan mencetak masukkan
angka dengan fungsi cout yang juga menggunakan fungsi cin untuk membaca variabel f untuk
mencetaknya. Lalu memasukkan hasil dari faktoria bilangan dengan membaca variabel f, dan
hasilnya dengan membaca variabel faktorial(f) yang merupakan pendeklarasian fungsi yang
sudah dibuat yang berarti hasil dari faktorial dengan menggunakan perumusan dalam fungsi
yang usdah dibuat lalu akan dipanggil ke program utama untuk dicetak. Misalkan inputkan
angka 3 maka akan disimpan dalam memori dengan label f bertipe float, dengan cara program f
yang merupakan bilangan 3 dikali faktorial dengan(f-1) yang berarti 2 sehingga3x2=6 maka
output dari program adalah 6, sesuai dengan bilangan yang dimasukkan. Lalu program selesai.
IV. Flowchart

Start.
Start.

f, ya
faktorial(f) f>1 return
f*faktorial(f-1)
tidak
End.
return 1

End.
V. Algoritma
VI. Program
#include<iostream>
using namespace std;
float faktorial (float f)
{
if(f>1)
return f*faktorial(f-1);
else
return 1;
}
int main()
{
float f;
cout<<"Program Menghitung Faktorial dari Suatu Bilangan"<<endl<<endl;
cout<<"Masukkan angka : ";
cin>>f;
cout<<endl;
cout<<"Faktorial dari "<<f<<" adalah : "<<faktorial(f)<<endl;
cout<<endl<<endl;
}
VII. Hasil Program
VIII. Pembahasan
Function atau fungsi adalah suatu bagian dari program yang digunakan untuk
menjalankan suatu tugas tertentu dan letaknya terpisah dari program yang menggunakannya
dan sejumlah instruksi, baik yang dapat menerima argument input dan dapat menerima hasil
output yang dapat berupa nilai ataupun sebuah hasil operasi yang dikelompokkan menjadi satu,
berdiri sendiri untuk menyelesaikan pekerjaan tertentu. Fungsi digunakan agar program yang
dibuat dapat menghindari penulisan bagian program atau kode secara berulang-ulang, dan juga
dapat menyusun kode program agar lebih rapi. Dalam penamaan fungsi yang didefinisikan oleh
program tidak boleh sama dengan buid-in function pada compiler C++.
Suatu fungsi tidak dapat dipanggil oleh program kecuali sudah dideklarasikan. Deklarasi
suatu fungsi dikenal dengan sebuah prototipe fungsi. Prototipe fungsi berupa nama fungsi, tipe
nilai fungsi, dan jumlah dan tipe argumen. Deklarasi dari fungsi dapat dituliskan seperti
tipe_nilai_fungsi nama_fungsi(tipe_argumen nama_argumen) dan diakhiri dengan tanda titik
koma (;) sebagaimana pada pendeklarasian variabel. Sebagai contohnya seperti long
kuadrat(long I), void garis( ), dan double maks(doublex,double y).
Pada contoh pertama, long menandakan tipe nilai fungsi, kuadrat itu merupakan nama
fungsi, dan didalam kurung menandakan jumlah dan tipe argumen. Fungsi kuadrat()
mempunyai argumen dan nilai bertipe long. Pada contoh kedua, fungsi garis() tidak memiliki
argument dan nilai baliknya tidak ada atau yang dinamakan void. Pada contoh ketiga, double
menandakan tipe nilai fungsi, maks merupakan nama fungsi dan yang didalam kurung
menandakan argumen. Fungsi maks( ) mempunyai dua buah argument dengan masing-masing
argument bertipe double.
Parameter adalah sarana komunikasi antara fungsi. Pengertian antar fungsi adalah antara
fungsi dengan fungsi lain termasuk antara fungsi dengan fungsi utama. Terdapat dua bentuk
variabel parameter dalam hubungannya dengan penggunaan fungsi dalam program yaitu
parameter formal, dan parameter aktual. Parameter formal adalah parameter yang diberi nilai.
Parameter formal juga merupakan parameter yang terdaftar dalam daftar parameter fungsi.
Bentuk parameter formal misalnya int tambah(int a,int b) dimana deklarasi suatu fungsi yang
merupakan bentuk dari parameter formal yang diberi nilai.
Sedangkan parameter aktual adalah parameter yang memberi nilai. Parameter aktual
digunakan untuk memberi nilai pada parameter formal. Bentuk dari parameter formal terdapat
dalam program utama bukan dalam fungsi misalnya dalam program utama terdapat perintah
d=tambah(8,5); ini merupakan bentuk dari parameter aktual. Terdapat cara untuk melewatkan
parameter, dimana ada dua cara yaitu pemanggilan secara nilai (call by value) dan pemanggilan
secara referensi (call by referencess). Salah satunya yang akan dibahas yaitu pemanggilan
secara nilai atau call by value yang memiliki beberapa tahapan yaitu yang pertama call by
value akan menyalin nilai dari parameter aktual ke parameter formal. Yang kedua yang
dikirimkan ke fungsi adalah nilai dari datanya, bukan alamat memori letak dari datanya.
Lalu fungsi yang menerima kiriman nilai akan menyimpannya di alamat terpisah dari
nilai aslinya yang digunakan oleh bagian program yang memanggil fungsi. Tahap ketiga
dengan perubahan nilai di fungsi atau parameter formal yang tidak akan mengubah nilai asli
bagian program yang memanggilnya. Lalu pengambilan parameter secara nilai adalah
pengambilan searah yaitu dari bagian program yang memanggil fungsi ke fungsi yang
dipanggil. Pengiriman suatu nilai dapat dilakukan untuk suatu ungkapan, tidak hanya untuk
sebuah variabel, elemen array atau konstanta saja.
Jenis-jenis dari fungsi yaitu ada dua meliputi void dan non void. Void (Procedure) atau
lebih dikenal dengan fungsi tanpa nilai balik atau sering juga disebut dengan istilah Procedure.
Disebut void karena fungsi tersebut tidak mengembalikan suatu nilai keluaran atau output yang
didapat dari hasil proses fungsi tersebut. Ciri-ciri dari fungsi void adalah tidak adanya keyword
return, tidak ada tipe data dalam deklarasi fungsi, menggunakan keyword void, dan tidak
memiliki nilai pengembalian fungsi.
Salah satu contoh program dengan menggunakan void yaitu seperti berikut. Masukkan
file header yang digunakan yaitu iostream, yang mana program ini akan memanggil library
berupa iostream. Lalu tuliskan void cetak_pesan() yang merupakan fungsi yang digunakan
dengan tanpa pengembalian nilai, program akan memesan tempat dimemori untuk fungsi
cetak_pesan, lalu mulai dengan tanda buka kurung kurawal dan menuliskan cout<<"Restoran
cepat saji"; yang digunakan untuk menampilkan output berupa Restoran cepat saji. Lalu tutup
fungsi dengan tanda kurung kurawal. Dan mulai program utaam dengan menggunakan fungsi
int main() yang akan mengembalikan nilai. Lalu mulai dengan tanda buka kurung kurawal dan
menuliskan cetak_pesan(); ini digunakan untuk memanggil fungsi dari cetak_pesan yang telah
dideklarasikan. Maka outputnya yang akan dikeluarkan berupa “Restoran cepat saji”.
Jenis fungsi non void atau lebih dikenal dengan fungsi nilai balik ayau sering disebut
dengan istilah function. Disebut non void karena mengembalikan nilai kembalian yang berasal
dari keluaran hasil proses function tersebut. Ciri-ciri dari fungsi non void adalahs sebagai
berikut. Terdapat keyword return dan tipe data yang mewakili fungsi, tidak ada keyword void,
memiliki nilai kembalian, dan dapat langsung ditampilkan hasilnya. Contoh program dengan
nilai langsung dengan fungsi non void yaitu int main seperti berikut.
Program untuk menambahkan dua bilangan yang sudah ditetapkan dengan menggunakan
fungsi int main. Pertama tuliskan #include<iostream> yang mana program ini akan memanggil
library berupa iostream, lalu tuliskan struktur c++ yaitu using namespace std;. Lalu tuliskan int
tambah (int a, int b), yang berarti program akan memesan tempat di memori yang diberi nama
dengan tambah yang bertipe data integer. Dan mulai program utama dengan tanda buka kurung
kurawal ({) dan tuliskan int c; c=a+b; dan return c; dan tutup program ini dengan tanda tutup
kurung kurawal(}).
Program ini menggunakan fungsi int yang akan mengembalikan nilai dengan
menggunakan variabel a dengan tipe data integer yang merupakan bilangan bulat dan variabel
b dengan tipe data integer yang akan menggunakan bilangan bulat. Dan dalam fungsi program
menggunakan variabel c dengan tipe data integer yang akan menambahkan vaiabel a ditambah
variabel c untuk menghasilkan variabel c lalu menggunakan return c untuk menghasilkan suatu
pernyataan sesuai dengan yang akan dikeluarkan sesuai dengan fungsi yang digunakan
menggunakan ekspresi atau variabel tertentu. Lalu menuliskan program utama setelah fungsi
tadi, dimana menuliskan int main () dan buka isi program utama dengan tanda buka kurung
kurawal dengan isi program utama berupa int d; d=tambah(8,5); cout<<"Maka hasil dari
8+5="<<d; dan tutup atau akhiri program dengan tanda tutup kurung kurawal.
Dalam program utama ini menggunakan fungsi int main yang akan mengembailkan nilai
lalu menggunakan variabel d dengan tipe data integer yang akan menggunakan bilangan bulat
lalu variabel d akan dihasilkan dari tambah(8,5) yang berarti d akan dihasilkan dari rumus yang
terdapat pada fungsi tambah dengan variabel a dan b yang sesuai dengan penulisan fungsi
sehingga a berupa angka 8 dan b berupa angka 5 yang mana artiannya d akan dihasilkan dari
fungsi dengan nilai 8 dan 5, lalu akan dicetak atau outputnya berupa maka hasil dari 8+5=
dengan membaca hasil dari variabel d yang dihasilkan untuk nantinya di outputkan.
Penjelasan dari program ini yag mana menggunakan file header iostream yang akan
memanggil library berupa iostream. Kemudian program akan memesan tempat di memiru yang
diberi nama dengan d bertipe integer. Kemudian isi d dengan fungsi tambah (8,5). Nilai 8 dan 5
dalam program utama akan dikirim dalam fungsi tambah yang mana nilai 8 akan masuk dalam
variabel a dan nilai 5 akan dimasukkan dalam variabel b dalam memori. Variabel c dalam
fungsi tambah akan akan diisi oleh nilai tambah dari variabel a dan variabel b. Maka isi
variabel c berupa 13. Kemudian nilai 13 tersebut akan dikembalikan kefungsi utama. Nilai 13
tadi akan diisi kedalam variabel d. Output dari program diatas akan berupa “Maka hasil dari
8+5=13”. Maka program pun telah selesai dibuat.
Lalu untuk membuat diagram alir atau flowchart program ini dengan cara buat simbol
pertama dengan bentuk persegi oval dengan isi tulisan start. yang menunjukkan awalnya suatu
program, lalu panah menuju ke bawah menuju simbol kedua yang berbentuk persegi panjang
dengan isi d=tambah(8,5) yang menunjukkan proses program ini, lalu buat simbol ketiga
berupa cabang garis putus-putus dari simbol kedua yang menunjukkan pemanggilan fungsi
dalam program tersebut, lalu simbol ketiga ini akan menuju ke simbol keempat yang berbentuk
persegi oval dengan isi tulisan start. yang menunjukkan awal dari fungsi tersebut.lalu panah
dari simbol keempat ke arah bawah menuju simbol ke lima dengan bentuk persegi panjang
dengan isi tulisan c=a+b yang menunjukkan proses fungsi pada program, lalu panah dari
simbol kelima ke arah bawah menuju simbol ke enam dengan bentuk persegi oval yang
berisikan tulisan end. yang menunjukkan terakhir fungsi, lalu dari simbol keenam dibuat
bentuk simbol ketujuh berupa cabang dari simbol ke enam dengan bentuk garis putus-putus
yang menunjukkan pengembalian nilai ke program utama yaitu ke simbol ke dua yang
berbentuk persegi panjang. Lalu buat simbol kedelapan dengan bentuk jajargenjang dengan isi
tulisan d yang menunjukkan output program dengan membaca variabel d yang akan dihasikan.
Lalu buat simbol kesembiln dengan bentuk persegi oval dengan tulisan end. yang menunjukkan
proses berakhirnya program utama.
Program mengenai function atau fungsi dari program sebelumnya dapat diperoleh dari
suatu pernyataan yaitu return. Bentuk umum dari return adalah retun ekspresi;. Ekspresi adalah
sebuah ekspresi yang nilainya dinyatakan untuk sebuah variabel yang tipenya sama seperti
return. Tetapi, terdapat juga fungsi yang tidak memberikan nilai balik atau tipe returnnya void.
Dalam fungsi juga terdapat variabel lokal dan variabel global.
Variabel lokal adalah variabel yang didefinisikan dalam fungsi tertentu, sehingga hanya
dikenal dalam fungsi tersebut. Dalam hal ini artinya suatu fungsi tidak akan mengenal variabel
lokal dan fungsi lain. Satu fungsi hanya akan mengenal variabel yang didefinisikan dalam
fungsi yang bersangkutan. Serta semua variabel yang dibuat dalam suatu fungsi akan bersifat
variabel lokal. Variabel global atau variabel eksternal adalah variabel yang bersifat global dan
dapat dikenal oleh semua fungsi yang terdapat dalam program tersebut. Seluruh fungsi akan
mengenal variabel yang bersifat eksternal ini. Variabel eksternal dideklarasikan di luar fungsi
dan sejajar dengan prototype fungsi serta pengaruh compiler. Dalam bahasa pemrograman
suatu proses yang dikenal dengan istilah rekrusif, pada rekrusif terjadi apabila dalam sebuah
fungsi terdapat instuksi memanggil fungsi itu sendiri, atau dengan kata lain memanggil dirinya
sendiri.
Salah satu contoh program menggunakan variabel global dan variabel lokal yaitu sebagai
berikut. Menuliskan #include<iostream> dan using namespace std; dan tuliskan string
kalimat="Variabel Global"; ini merupakan suatu variabel global lalu masukkan fungsi void
kata() dan dengan isi program berupa cout<<kalimat; dan selesai ke fungsi lalu tuliskan
program utama dengan int main() dan isi dari program yaitu string kalimat="Variabel Lokal";
ini merupakan suatu variabel lokal dan cout<<kalimat<<endl; kata(); dan tutup. Dalam
program ini memiliki variabel nama yang sama antara fungsi main dan kata yaitu variabel
kalimat. Kedua variabel ini sebenarnya disimpan dalam tempat yang berbeda sehingga jelas
berbeda. Dalam fungsi main sebenarnya mengenal variabel kalimat yang memiliki isi
“Variabel Global”, namun dalam fungsi main terdapat variabel lokal, maka yang diutamakan
adalah variabel lokalnya, tetapi jika tidak ada maka yang diprioritaskan adalah variabel global.
IX. Kesimpulan
1. Function termasuk bagian dari program yang digunakan untuk menjalankan suatu tugas
tertentu dan letaknya terpisah dari program yang menggunakannya atau program utama.
2. Fungsi tidak dapat dipanggil jika tidak dideklarasikan, dikenal dengan prototipe fungsi,
yang berupa tipe_nilai_fungsinama_fungsi(tipe_argumen nama_argumen) di akhiri (;).
3. Terdapat dua bentuk variabel parameter dalam hubungannya dengan fungsi seperti
parameter formal yang diberi nilai sedangkan parameter aktual yang memberi nilai.
4. Jenis-jenis fungsi diantaranya terdapat void(procedure)yang tanpa mengembalikan nilai,
dan non void fungsi dengan mengembalikan nilai.
5. Variabel lokal didefinisikan dalam fungsi tertentu sehingga hanya dikenal dalam fungsi
tersebut, sedangkan variabel global dikenal oleh seluruh fungsi dalam program.
6. Fungsi yang bersifat rekrusif terjadi apabila dalam sebuah fungsi terdapat instruksi
memanggil fungsi itu sendiri dengan kata lain memanggil dirinya sendiri.
Lampiran
Soal
1. Buatlah sebuah program rekrusif dengan hasil output (keluaran) seperti berikut.
Menghitug nilai x^y
x=3
y=3
Jadi, hasil dari :
3^3 = 27
Jawab :
1. Logika dan Deskripsi Program
Untuk membuat program mencari pangkat ini dengan tanpa fungsi pow dan menggunakan
fungsi rekrusif yang memanggil fungsi itu sendiri. Langakah pertama yang harus diketahui
yaitu file header yang akan digunakan dalam program ini menggunakan file header iostream
sehingga akan memanggil library dalam iostream, lalu memasukkann fungsi yang akan
dilakukan untuk mencari program ini, disini mendeklrasikan fungsi dengan tipe data float yang
nantinya akan berupa bilangan pecahan dalam suatu proses yang diberi nama fungsi yaitu
pangkat sehingga akan dituliskan float pangkat, lalu membuat argumen dengan tipe data float
yang menggunakan nama argumen yaitu variabel x dan variabel y juga dengan tipe data float.
Lalu isi dari fungsi berupa perumusan untuk menghasilkan pangkat yaitu dimana menggunakan
pernyataan if-else, lalu jika sudah selesai buat program utama dengan fungsi int main() yang
akan mengembalikan nilai dengan isi program utama dengan isi mencetak masukkan bilangan
x dan y dan hasil dari x pangkat dari y dengan pernyataan if-else untuk y<0 danjika tidak. Lalu
program ini menggunakan goto untuk mencoba menginput banyak bilangan lain.
Dalam program ini fungsi dideklarasikan dengan float pangkat(float x, float y) dan isi dari
fungsi berupa pernyataan if dan else dimana if (y==0) maka akan menjalankan return 1; jika
memenuhi kondisi jika tidak akan membaca else if (y<0) maka akan menggunakan perumusan
return x*pangkat(x,y+1) apabila kondisi terpenuhi dan jika tidak maka akan memeriksa else
dengan menjalankan return x*pangkat(x,y-1) maka nantinya akan menghasilkan x pangkat y.
Lalu buat isi program utaam dengan fungsi int main() dengan isi berupa variabel x dan y yang
bisa berupa tipe data integer yang berbeda dengan fungsi dan menggunakan variabel yt dengan
tipe char untuk pernyataan goto, lalu cetak judul program dan tuliskan awal: untuk menyatakan
dari mana goto akan diulangi, dan cetak x dan y dengan cout dan fungsi cin membaca variabel
x dan y juga yang sudah dideklarasikan, lalu untuk hasilnya menggunakan pernyataan if else
karean jika untuk if(y<0) maka akan mencetak hasil dari 1/pangakt(x.y) dari fungsi yang
dihasilkan karena merupakan bilangan negatif, sedangkan selain itu menggunakan pangkat(x,y)
yang akan dicetak dan menggunakan perintah goto untuk mengulangi jika ingin inputkan lagi.
2. Flowchart

Start.

ya Start.

awal :
ya

y==0 return 0
x,y

tidak
ya

return
1/ y<0
y<0
x*pangkat(x,y+1)
ya pangkat(x,
tidak
tidak

pangkat(x,y) return
x*pangkat(x,y-1)

yt
End.

yt=='Y'||
goto awal
yt=='y'

End.

3. Algoritma
4. Program

#include<iostream>
using namespace std;
float pangkat(float x, float y)
{
if(y==0)
return 1;
else
if (y<0)
return x*pangkat(x,y+1);
else
return x*pangkat(x,y-1);
}
int main()
{ int x,y;
char yt;
cout<<"Program Menghitung Pangkat dengan Fungsi Rekrusif"<<endl<<endl;
awal:
cout<<"x = ";cin>>x;
cout<<"y = "; cin>>y;
cout<<endl;
if (y<0)
{
cout<<"Hasil "<<x<<"^"<<y<<" : "<<1/pangkat(x,y);
}
else
{
cout<<"Hasil "<<x<<"^"<<y<<" : "<<pangkat(x,y);
}
cout<<endl<<endl<<endl;
cout<<"Input Lagi ? (y/t) : ";
cin>>yt;
cout<<endl;
if(yt=='Y'||yt=='y')
{
goto awal;
}
}

5. Hasil Program

Anda mungkin juga menyukai