MODUL III PROSEDUR DAN FUNGSI

advertisement
MODUL III
PROSEDUR DAN FUNGSI
I.
TUJUAN
1.
Memahami konsep prosedur secara benar serta kegunaan dan manfaat sebuah prosedur
2.
Memahami struktur prosedur yang menghasilkan nett effect
3.
Memahami konsep parameter secara lebih mendalam
4.
Memahami konsep variable local
5.
Memahami konsep passing parameter, by value dan by reference
6.
Memahami perbedaan fungsi dan prosedur dan mampu mengimplementasikan di dalam kasus
nyata
7.
II.
Memahami konsep fungsi secara lebih mendalam
DASAR TEORI
1.
PROSEDURE
a.
Pengertian Prosedur
Prosedur adalah sederetan instruksi algoritmik yang diberi nama dan akan menghasilkan efek
netto yang terdefinisi.
Kegunaan/keuntungan menggunakan prosedur adalah :
1)
Meningkatkan modularitas program
2)
Kemudahan menulis dan menemukan kesalahan (debug) program
Pada dasarnya prosedur membutuhkan input dan output. Input yang standar berasal dari
piranti input standar (standard input device), yaitu keyboard. Output yang standar berasal
dari piranti output standar (standard output device), yaitu monitor. Kedua piranti I/O standar
ini dijembatani penggunaannya dalam C oleh library stdio.h (standard I/O), yang
memperkenalkan printf untuk keperluan output dan scanf untuk keperluan input.
Berdasarkan darimana datangnya input dan output, prosedur dikategorikan ke dalam 4
macam:
Input
Output
Prosedur
Std dev
Parameter
Std dev
Parameter
Std dev
Std dev
Parameter
Parameter
Nai’ve
Semi Nai’ve
Semi Nai’ve
Nett Effect
Hanya ada satu jenis prosedur yang direkomendasikan, yaitu prosedur yang menghasilkan
efek netto (nett effect procedure). Kumpulan prosedur nett effect inilah yang akan dijadikan
pustaka/library kita di dalam menyelesaikan masalah/soal yang dipecahkan dalam body
program (main function). Dalam hal ini file .h digunakan sebagai penyimpan pustaka kita. Tentu
III - 1
saja, jika terpaksa, prosedur naive tetap dapat dibuat, hanya saja tidak merupakan bagian dari
solusi yang disimpan dalam pustaka, melainkan melulu merupakan pemangkasan panjang code
dalam main function.
b. Prosedur yang Menghasilkan Efek Netto
Prosedur dapat dipandang sebagai kotak hitam yang menerima inputan parameter dan yang
bertugas mengubah parameter output menjadi yang diinginkan. Ilustrasi di bawah dapat
membantu memahami prosedur.
Prosedur
Parameter output yang
belum jelas/sudah jelas
yang hendak diubah
(di dalamnya mengandung
proses-proses, yang pihak luar
tidak tahu)
Parameter output yang
sudah berubah dan jelas
Parameter input yang jelas isinya
Parameter Input : adalah parameter yang sudah Jelas isinya ketika dilakukan pemanggilan
prosedur. Parameter input ini harus dijamin isinya ada sebelum masuk ke prosedur, dan tidak
mengalami perubahan selama pemrosesan prosedur. Parameter input adalah parameter
suplai. Biasanya dalam assignment dia diletakkan di sebelah KANAN ‘sama dengan’.
Parameter Output : adalah parameter target yang hendak diubah. Parameter output
menjadi tujuan pengubahan oleh prosedur. Parameter ini dapat sudah jelas isinya atau belum
jelas isinya, yang jelas dia akan diubah di dalam prosedur. Biasanya di dalam assignment dia
diletakkan di sebelah KIRI ‘sama dengan’.
Parameter Input/Output : adalah parameter output yang juga sekaligus menjadi
parameter input. Parameter ini pastilah sudah jelas isinya ketika memasuki prosedur, karena
dia juga berperan sebagai parameter input.
Keyword yang perlu diingat :
1)
Perubahan parameter output. Tujuan prosedur haruslah melakukan perubahan.
Perubahan ini ditunjukkan pada perubahan yang terjadi pada parameter output.
Perubahan bersih, yaitu perbedaan antara parameter output sesudah dan sebelum
memasuki prosedur, itulah yang disebut efek bersih, atau efek netto.
2)
Bagi pihak luar, prosedur adalah black box. Isi body dari prosedur haruslah bukan concern
(perhatian) dari program pemanggil, tetapi spesifikasinyalah yang penting bagi pihak luar
(pihak pemanggil). Prosedur ini melakukan apa, lebih penting daripada bagaimana
prosedur ini melakukannya.
(Catatan : parameter output diletakkan di sebelah kiri dalam header prosedur, menyusul
parameter input di sebelah kanannya.)
III - 2
c.
Konteks Pendefinisian dan Konteks Pemanggilan
Aturan Pendefinisian Prosedur:
1)
Mulailah dengan void lalu nama prosedur lalu kurung (, lalu kumpulan tipe parameter
dan parameter-parametemya, lalu ditutup dengan kurung ).
Formula: void Procedure_Name (param_type param, param type param, ...)
2)
Khusus parameter output, gunakanlah pointer sebagai mekanisme passing by reference.
Letakkan pointer (*) di sebelah kiri parameter output (tanpa spasi), dan pertahankanlah
pointer ini di sepanjang body prosedur.
3)
Bukalah body prosedur dengan ‘{‘ dan tutuplah dengan ‘}’.
Aturan Pemanggilan Prosedur:
Prosedur dipanggil oleh program pemanggil. Program pemanggil ini bisa program utama
(main function) atau prosedur lain atau fungsi. Pemanggilan harus memperhatikan definisi
program. Jadi tidak bisa sembarangan cara memanggil prosedur. Prosedur harus dipanggil
dengan menuliskan nama prosedur tersebut tanpa void dan harus berdiri sendiri, atau
pemanggilan tidak dapat menempel pada statemen lain. Pada pemanggilan, prosedur output
(yang pada pendefinisian ditempeli ‘*’) ditempeli ‘&’ di sebelah kirinya. Parameter yang ada
dalam konteks pemanggilan disebut parameter aktual sedangkan parameter yang ada
dalam konteks pendefinisian adalah parameter formal.
Formula :
// pendefinisian
void HitungLuasLingkaran (float *hasil, float jejari)
1
//pemanggilan
2
3
float Luas, radius
radius = 9.8;
......
Pendefinisian VS Pemanggilan
HitungLuasLingkaran (&Luas, radius); 1. Nama prosedur harus sama persis (Case
......
Sensitive)
......
2. Parameter output, pendefinisian pakai *
printf ("%f\n",Luas);
tetapi pemanggilam pakai &. Nama dapat
3.
Contoh :
int main()
4.
{
......
float jejari = 9.0;
HitungLuasLingkaran (&hasil, jejari);
......
}
berbeda/sama, tetapi tipe harus sama
Parameter input dapat sama/beda nama,
tetapi tipe harus sama
Function Signature harus sama yaitu CACAH
parameter, TIPE prameter dan URUTAN
parameter harus sama
III - 3
d.
Jenis Prosedur Dasar
1) Prosedur SET atau UPDATE
Adalah prosedur yang digunakan untuk mengubah nilai parameter output menjadi yang
diinginkan (suplai oleh parameter input)
Contoh :
void setA(int *A, int masukan)
//IS: A bernilai sembarang, masukan terdefinisi ada isinya
//FS: A berisi value sesuai value masukan, dan masukan tetap valuenya
{
(*A)=masukan;
}
2) Prosedur AKUMULASI
Adalah prosedur yang digunakan untuk mengakumulasi suatu variable tertentu dengan value
tertentu.
Contoh:
void accuA(int *A, int masukan)
//IS: A sebagai param input/output harus terdefinisi dan berisi suatu value tertentu, masukan terdefinisi ada isinya
//FS: A ketambahan valuenya dengan value masukan, dan masukan tetap valuenya
{
(*A) = (*A) + masukan;
}
3) Prosedur KOMPUTASI
Adalah prosedur yang melakukan komputasi/ proses-proses penghitungan atau proses lain
yang diperlukan untuk menemukan hasil yang diinginkan. Hasil akan disimpan dalam
parameter output.
Contoh:
void hitungAverage(float *hasil, float a, float b, float c)
//IS: hasil bernilai sembarang, a,b,c terdefinisi ada isinya
//FS: hasil berisi rata-rata dari value a,b,c, dan a,b,c tetap valuenya
{
(*hasil)=(a+b+c)/3;
}
4) Prosedur CETAK
Adalah prosedur yang melakukan pencetakan ke layer, sesuai parameter input yang diterima.
Prosedur ini tidak mempunyai parameter output, karena outputnya langsung dicetak ke
monitor (standard output device). Inilah satu-satunya prosedur yang semi- naïve yang dapat
diterima.
void cetakA(float a)
//IS: a terdefinisi ada isinya
//FS: value a tercetak ke layar, dan a tetap valuenya
{
printf(”%f\n”,a);
}
III - 4
e.
Prosedur yang Menghasilkan Efek Netto
Prosedur yang direkomendasikan adalah prosedur yang menghasilkan efek netto {nett
effect procedure). Prosedur nett effect adalah yang tidak menggunakan standard device
untuk input dan outputnya, alias tidak ada printf dan scanf dalam prosedur tersebut.
Satu-satunya prosedur yang masih bisa diterima, meskipun menggunakan standard
device adalah prosedur CETAK, yaitu yang menggunakan printf untuk mencetak
informasi ke layar.
f.
Parameter
Parameter adalah variabel yang digunakan untuk mengirim nilai dari program pemanggil ke
prosedur atau sebaliknya. Ada 2 tipe parameter yaitu :
1. Parameter Aktual
Adalah parameter yang dipakai ketika melakukan pemanggilan terhadap prosedur.
Tambah1 (&C, D) ;
Perlu dingat di sini, karena variabel A mendapat tambahan '*', maka didalam pemanggilan
tersebut parameter actual harus didahului dengan '&'
2. Parameter Formal
Adalah parameter yang dipakai dalam pendefinisian prosedur. Parameter ini sifatnya
Optional.
Void Tambh1 (int *A, int B)
{
..........
}
Perlu diingat di sini, karena parameter formal A mendapat tambahan '*\ maka didalam
prsedur tersebut variabel A harus ditulis seperti ini: ( *A)
Berdasarkan maksud penggunaannya, terdapat 3 jenis parameter formal, yaitu :
1. Parameter input adalah parameter yang nilainya berlaku sebagai masukkan untuk
prosedur. Penggunaan parameter ini sering disebut sebagai passing parameter by value. Di
dalam assignment di body prosedur, parameter ini biasanya di sebelah KANAN 'sama
dengan'. Parameter ini harus sudah ada ISInya (sudah jelas) supaya dapat dipakai dalam
prosedur. Value parameter input tidak berubah, dari sebelum masuk sampai sesudah
keluar dari prosedur.
2. Parameter output adalah parameter yang menampung keluaran yahg dihasilkan prosedur.
Parameter ini mengalami perubahan dan efek netto dari prosedur. Di dalam assignment di
body prosedur, parameter ini biasanya di sebelah KIRI 'sama dengan'.
3. Parameter input/output adalah
parameter yang berfungsi sebagai masukkan sekaligus
keluaran bagi prosedur tersebut. Penggunaan parameter ini sering disebut passing
parameter by reference.
III - 5
g.
Pemanggilan
Karena prosedur bukan program yang dapat berdiri sendiri, maka prosedur harus dipanggil
oleh program lain dengan ketentuan sebagai berikut:
1. Dilakukan dari program lain yang menyatakan prosedur sebagai bagian dari program
tersebut.
2. Prosedur diakses dengan memanggil nama prosedur dari program pemanggil.
3. Prototipe prosedur harus dideklarasikan dalam kamus program pemanggil.
Hal yang penting dalam pemanggilan prosedur adalah antara parameter formal dan aktual
harus ada kesesuaian dalam hal function signature yaitu:
1. Jumlah parameter
2. Urutan parameter
3. Tipe data parameter
Contoh :
deklarasi prosedur
void Tambahl(int *A, int B);
definisi prosedur
void Tambahl(int *A, int B)
{
........
........
}
pemanggilan prosedur
Tambahl(&A,B);
Keterangan :
- Hilangkan keyword 'void'
- Hilangkan tipe data di daftar parameter
- Pada parameter aktual, variabel input/output yang di passing di depannya diberi tanda '&'
- Sesuaikan tipe data antara parameter aktual dam formal
h.
Variabel Lokal VS Parameter
Ada banyak kerancuan yang dialami mahasiswa, yaitu tentang kapan harus menggunakan
parameter input dan kapan cukup dengan menggunakan variable local saja untuk kasus-kasus
tertentu. Ada kunci yang dapat dipakai untuk memecahkan masalah ini, yaitu dengan
pertanyaan: apakah variable tersebut secara natural diperlukan prosedur dari
pihak luar prosedur? Jika jawabannya adalah perlu, maka harus dijadikan parameter input
dan oleh karenanya harus sudah diset valuenya di luar prosedur. Jika jawabannya tidak perlu,
maka harus dijadikan variable local.
Ingat, variable local tidak akan berisi apa-apa sampai diinisialisasi, makanya biasanya statemen
pertama terhadap variable local setelah deklarasi adalah inisialisasi.
III - 6
Contoh 1:
void swap(int *a, int *b)
{
int t-emp;
temp=*a?
*a=*b;
*b=temp';
}
Atau
Void swap (int *a, int *b, int temp)
{
Temp=*a;
*a=*b;
*b=temp;
}
mana yang benar? Jelaskan jawaban anda.
Contoh 2 :
void naikGaji (double * Gaji, double kenaikan)
{
(*Gaji)=(*Gaji)+ kenaikan;
}
Atau
void naikGaji (double *G).
{
Double kenaikan;
(*Gaji)-(*Gaji)+Kenaikan;
}
mana yang benar ? Jelaskan jawaban anda.
i.
Pemanggilan Prosedur Oleh Prosedur Lain
Prosedur dapat dipanggil darimana saja, dari main () function, dari fungsi lain, atau dari
prosedur lain. Berikut diberikan cara memanggil prosedur dari prosedur lain. Dipunyai
prosedur akumulasi, seperti berikut:
Void akumulasi (double *Hasil, double delta)
//IS : Hasil sudah ada isinya, hendak diakumulasikan dengan delta.
//
delta sudah terdefinisi dan ada isinya.
//FS : Hasil akan ketambahan sebesar delta. Delta tetap valuenya.
{
(*Hasil)=(*Hasil)+delta;
}
Lalu kita membutuhkan prosedur kenaikanGaji yang mengharuskan terjadinya akumulasi nilai
gaji dengan kenaikannya. Hanya saja dalam prosedur kenaikanGaji, diberikan gaji dan
persentase kenaikan dalam persen. Misalkan gajinya 5juta, lalu kenaikannya 10 persen, maka
gajinya akan berubah menjadi 5.5juta.
III - 7
Void kenaikanGaji (double *gaji, double persenkenaikan)
//IS : gaji sudah ada isinya, hendak diakumulasikan dengan
//
persenKenaikan dikalikan gaji. persenKenaikan sudah
//
terdefinisi dan ada isinya
//FS : gaji akan ketambahan sebesar persenKenaikan dikalikan gaji.
//
PersenKenaikan tetap valuenya.
{
Double kenaikan;
Kenaikan=(persenKenaikan/100.0)*(*gaji);
(*gaji)=(*gaji) + kenaikan;
}
Perhatikan code dalam prosedur kenaikanGaji, di situ terdapat proses yang sama persis
dengan akumulasi, yaitu mengakumulasikan gaji dengan kenaikannya. Hal ini dapat dikerjakan
dengan memanggil prosedur akumulasi. Prosedur berubah menjadi:
Void kenaikanGaji (doble *gaji, double persenKenaikan)
//IS : gaji sudah ada isinya, hendak diakumulasikan dengan
//
persenKenaikan dikalikan gaji. persenKenaikan sudah
//
terdefinisi dan ada isinya.
//FS : gaji akan ketambahan sebesar persenKenaikan dikalikan gaji.
//
persenKenaikan tetap valuenya.
{
Double kenaikan;
Kenaikan=(persenKenaikan/100.0)*(*gaji);
Akumulasi (&(*gaji), kenaikan); //pemanggilan proc akumulasi di
sini
}
III - 8
2.
FUNGSI
a.
Apa itu Fungsi ?
Fungsi pada hakekatnya adalah pemetaan dari setiap anggota himpunan yang disebut
domain kepada anggota himpunan yang disebut kodomain. Jadi sebuah anggota domain akan
dipetakan (oleh fungsi) kepada tepat satu anggota kodomain. Perhatikan gambar di bawah ini
:
Misalnya y=x2, maka setiap x dari domain integer (misalnya) akan dipetakan tepat satu
anggota kodomain y. Contoh, x=2 akan dipetakan kepada y=4, dan x=-3 akan dipetakan y=9.
Himpunan domain dan kodomain dapat dari himpunan yang sama atau berbeda.
Berikut diberikan contoh, himpunan domain dan kodomain yang berbeda. Misalnya fungsi
isGenap yang memetakan setiap integer kepada salah satu anggota boolean, yaitu genap
atau bukan genap (ganjil). Perhatikan gambar di bawah ini :
Kombinasi anggota himpunan domain juga dapat dipetakan oleh fungsi, misalnya fungsi
y=x12+2x2 yang memetakan x1 dan x2 tepat ke sebuah nilai y. Perhatikan gambar di bawah ini
:
Seperti halnya prosedur, fungsi juga merupakan modul program yang mempunyai tujuan
spesifik. Fungsi adalah modul program yang memberikan/mengembalikan
(return/anggota
kodomain) sebuah nilai dari tipe tertentu (tipe dasar atau tipe bentukan/himpunan kodomain).
Sebagaimana halnya dengan prosedur, fungsi diakses dengan memanggil namanya. Selain itu,
fungsi juga dapat mengandung daftar parameter formal.
III - 9
Parameter pada fungsi selalu merupakan parameter masukan (anggota himpunan domain).
Jenis parameter masukan pada fungsi disebabkan oleh kenyataan bahwa parameter pada fungsi
merupakan masukan yang digunakan oleh fungsi tersebut untuk menghasilkan nilai.
Ilustrasi dibawah ini dapat memberikan gambaran lebih jelas tentang fungsi.
Beberapa Input
b.
Fungsi
Satu Output
(black box proses)
Pendefinisian Fungsi
Sebagaimana halnya prosedur, struktur fungsi sama dengan struktur algoritma yang sudah
anda kenal. Ada bagian header yang berisi nama fungsi dan spesifikasi fungsi, bagian deklarasi,
dan badan fungsi. Setiap fungsi mempunyai nama yang unik serta daftar parameter formal
(bila ada).
Tipe data hasil return fungsi (disebut return type)
int Tambah (int a, int b)
Daftar parameter formal
Nama fungsi
{spesifikasi fungsi, menjelaskan apa yang dilakukan dan yang dikembalikan oleh fungsi. Berupa
apa INPUTnya dan apa OUTPUTnya/yang direturnkan}
DEKLARASI
{semua nama yang dipakai dalam algoritma fungsi di deklarasikan di sini. nama yang
didefinisikan hanya di kenal dan di pakai di dalam fungsi ini saja}
DESKRIPSI :
{badan fungsi, berisi instruksi-instruksi untuk menghasilkan nilai yang akan di kembalikan oleh
fungsi }
return hasil {pengembalian nilai yang dihasilkan dari fungsi}
: Alur logika Fungsi HARUS berakhir pada SATU buah return. Begitu return dipanggil, maka
fungsi berhenti, alur logika akan segera keluar fungsi.
Contoh :
int tambah (int a, int b)
{
int hasil;
hasil = a + b;
return hasil;
}
Harus sesuai tipenya
III - 10
c.
Pemanggilan Fungsi
Fungsi diakses dengan cara memanggil namanya dari program pemanggil, diikuti dengan daftar
parameter aktual (bila ada). Karena fungsi menghasilkan nilai/value, maka value tersebut
dapat diperlukan seperti value apa adanya. Misalkan disimpan dalam sebuah variable dengan
statemen assignment, dicetak ke layar dengan statemen printf, dijadikan operand dalam
kondisi, dioperasikan sesuai tipe pengembaliannya. Jadi, statemen pemanggilan fungsi TIDAK
BISA berdiri sendiri seperti procedure, melainkan harus dalam suatu statemen tertentu,
karena dia sesungguhnya value. Misalnya :
1. variable NamaFungsi(daftar parameter aktual) ;
contoh: x=Tambah(a,b);
2. write(NamaFungsi(daftar parameter aktual));
contoh: printf(”%d\n”,Tambah(a,b));
3. if NamaFungsi(daftar parameter aktual) < 10 then . . .
contoh: if(Tambah(a,b)<10) {....}
4. z 2 * NamaFungsi(daftar parameter aktual) – x + y ;
contoh: z=2*Tambah(a,b)-x+y;
Saat pemanggilan fungsi, harus memperhatikan header fungsi (atau spesifikasi fungsi)
saat pendefinisian. Contoh :
int tambah (int a, int b);
int main ()
{
.....
.....
z = tambah (a,b)
.....
.....
}
//header pendefinisian
Function Signature :
1. CACAH param
2. TIPE param
3. URUTAN param
HARUS SAMA
d. Perbedaan FUNGSI VS PROSEDUR
Pertanyaan yang seringkali muncul dalam pemrograman adalah : apakah sebuah modul
akan dibuat sebagai prosedur atau fungsi ? Jawaban untuk pertanyaan ini sebenarnya tidak
sulit. Fungsi digunakan apabila modul program mengembalikan sebuah nilai sementara
prosedur digunakan bila modul menghasilkan efek netto dari (satu atau) sekumpulan aksi.
Namun dalam praktiknya, seringkali perbedaan antara keduanya tidak jelas, karena sebuah
prosedur selalu dapat ditulis sebagai fungsi, demikian pula sebaliknya.
(Catatan : nama fungsi dimulai dengan kata kerja, nama procedure dimulai dengan katakerja yang
dibendakan, dalam bahasa Indonesia dengan imbuhan pe-an. Contoh fungsi tambah (a,b), setara dengan
procedure penambahan (c,a,b).)
III - 11
Prosedur Fungsi dengan Prosedur sangat jelas, berikut diberikan perbedaan keduanya maksud
untuk lebih memahami fungsi dan prosedur secara benar.
FUNGSI
Pendefinisian: tanpa void,
tetapi
dengan
tipe
pengembalian
Pendefinisian: Alur logika
dalam
body
fungsi
HARUS berakhir pada
SATU return
PROSEDUR
Pendefinisian: dengan
void
Pemanggilan:
menempel
statemen
Pemanggilan:
berdiri sendiri
Tidak
ada
return.
Paling tidak, tidak ada
return yang dimaksud
untuk mengembalikan
value ke luar.
harus
pada
by
design:parameter
input saja
Diperlukan sebagai value
harus
by design: parameter
input dan output
Diperlakukan sebagai
statemen.
CONTOH
Fungsi : int tambah(int a, int b)
Proc: void penambahan
(int*hasil, int a, int b)
Fungsi:
Int tambah(int a, int b)
(
return a+b;
)
Proc:
Void
penambahan(int
*hasil,
int a, int b)
(
(*hasil)=a+b;
)
Fungsi:
z=tambah(a,b));
Proc:
Penambahan(&hasil, a,b);
Fungsi :
Printf(“%d\n”,tambah(a,b));
Proc:
Penambahan(&hasil,a,b);
e. Pemanggilan Fungsi Oleh Fungsi Lain (Nested Function)
Sebuah fungsi dapat memanggil fungsi lain di dalam memproses parameternya untuk
mewujudkan tujuannya. Misalkan kita punya fungsi kuadrat, yaitu fungsi yang mengkuadratkan
bilangan real. Kita juga sudah mempunyai fungsi tambah untuk bilangan real. Kita diminta
membuat fungsi lain, yaitu fungsi menghitung panjang sisi miring suatu segitiga siku-siku.
Perhatikan gambar dibawah ini :
Sisi miring = ?
a
b
Rumus perhitungan panjang sisi miring segitiga siku-siku adalah dengan rumus pythagoras,
yaitu :
sisi miring = akar kuadrat (jumlah kuadrat sisi-sisi yang lain)
Untuk pastinya, kita buat lagi fungsi kuadrat dan tambah seperti pada contoh di bawah ini :
double tambah (double a, double b)
//I: a, b terdefinisi
//O: mereturnkan penjumlahan a dan b
{
return a+b;
}
III - 12
double kuadrat (double x)
//I: x terdefinisi
//O: mereturnkan kuadrat dari x
{
return x*x;
}
Lalu kita buat fungsi menghitung panjang sisi segitiga siku-siku, seperti berikut:
double hitungSisiPanjangS3 (double sisi1,double sisi2)
//I: sisi1 dan sisi2 terdefinisi
//O: mereturnkan panjang sisi miring yang panjang sisisisi
lainnya adalah sisi1dan sisi2.
//P: fungsi sqrt diambil dari pustaka fungsi dari math.h,
artinya akar kuadrat
yang
yang
{
return sqrt (tambah (kuadrat (sisi1), kuadrat (sisi2));
}
III - 13
III.
GUIDED PROSEDUR
1.
Program Menambah Angka
#include<stdio.h>
#include<conio.h>
//deklarasi prosedur
void Tambah(int *hasil, int bil1, int bil2);
//main program
int main()
{
int result, bil1, bi12;
printf (“masukan bilangan pertama :”); scanf(“%d”,&bil1);
printf (“masukan bilangan kedua :”); scanf(“%d”,&bil2);
Tambah (&result,bil1,bi12);//contoh pemanggilan prosedur
printf (“Hasil penambahan = %d\n”,result);
return 0;
}
// pendefinisian prosedur
void Tambah(int *hasil, int bil1, int bil2)
{
*hasil=bil1+bil2;
}
2.
Program Menghitung Luas Lingkaran
#include<stdio.h>
#include<conio.h>
//deklarasi prosedur
void HitungLuasLingkaran(float *hasil, float rujiruji);
//main program
int main()
{
float L,rujiruji;
printf(“masukkan ruji-ruji :”); scanf(“%d”,&rujiruji);
HitungLuasLingkaran(&L,rujiruji);//contoh pemanggilan prosedur
printf(”Luas Lingkaran : %f\n”,L);
return 0;
}
// pendefinisian prosedur
void HitungLuasLingkaran(float *hasil, float rujiruji)
{
*hasil=3.14 * rujiruji * rujiruji;
}
III - 14
IV.
UNGUIDED PROSEDUR
Buatlah sebuah program dengan prosedur untuk mengkonversi nilai angka menjadi nilai dalam
huruf.
Ketentuan:
 Nilai di atas 85 mendapat “A”
Nilai 85 ke bawah mendapat “B”
 Nilai 70 ke bawah mendapat “C”
Nilai 60 ke bawah mendapat “D”
 Nilai 50 ke bawah mendapat “E”
Jika nilai diatas 100 atau negative, maka
ditampilkan pesan kesalahan.
 Pada main program, setelah nilai huruf keluar, ditampilkan pesan “Apakah akan mengkonversi
nilai lagi? (Y/N)” Jika diinputkan “Y” maka otomatis akan mengulang proses untuk konversi
nilai lagi.
V.
GUIDED FUNGSI
1.
Program Menghitung Nilai pada Operasi Pangkat
#include <iostream.h>
int square( int ); // Function prototype
int main()
{
for ( int x = 1; x <= 10; x++ )
cout << square( x ) << " ";
cout << endl;
return 0;
}
// Function definition
int square( int y )
{
return y* y;
}
2.
Program Menentukan Nilai Maksimal
#include <iostream.h>
int maximum( int, int, int ); // function prototype
int main()
{
int a, b, c;
cout << "Enter three integers: ";
cin >> a >> b >> c;
// a, b and c below are arguments to the maximum function call
cout << "Maximum is: " << maximum( a, b, c ) << endl;
return 0;
}
// Function maximum definition x, y and z below are parameters to
// the maximum function definition
int maximum( int x, int y, int z )
{
int max = x;
if ( y > max )
max = y;
if ( z > max )
max = z;
return max
III - 15
3.
Program Kalkulator Sederhana
#include <stdio.h>
#include <conio.h>
int Tambah (int a,int b) ;
/*
Input : nilai a,b terdefinisi tidak kosong
Output: fungsi akan mengembalikan hasil penjumlahan dari a dan b
*/
int Kurang (int a,int b) ;
/*
Input : nilai a,b terdefinisi tidak kosong
Output: fungsi akan mengembalikan hasil pengurangan dari a dan b
*/
int Tambah (int a,int b)
{
int hasil;
hasil = a + b;
return hasil;
}
int Kurang(int a,int b)
{
return a – b ;
}
void main( )
{
int nilai1,nilai2;
int pilih;
do
{
system (”CLS”);
printf (”MENU\n\n”);
printf (”1.Penjumlahan\n”);
printf (”2.Pengurangan\n”);
printf (”0.EXIT\n”);
printf (”Input Pilihan : ”); scanf(”%d”,&pilih);
switch (pilih)
{
case 1 :
printf (“\nInput Bilangan 1 : ”);scanf(“%d”,&nilai1);
printf (“\nInput Bilangan 2 : ”);scanf(“%d”,&nilai2);
printf (”Hasilnya : %d ”,Tambah(nilai1,nilai2));
break;
case 2 :
printf (“\nInput Bilangan 1 : ”);scanf(“%d”,&nilai1);
printf (“\nInput Bilangan 2 : ”);scanf(“%d”,&nilai2);
printf (”\nHasilnya : %d ”,Kurang(nilai1,nilai2));
break;
default :
printf (”Input yang anda masukkan salah\n”);
break;
}
getch ();
}
while(pilih!=0);
}
III - 16
VI.
UNGUIDED FUNGSI
Buatlah sebuah program menu dengan memanggil fungsi-fungsi yang digunakan untuk
menghitungnya. Ketentuan Menunya adalah sbb:
MENU PERSEGI PANJANG
1.
Menu menghitung luas persegi panjang
2.
Menu menghitung keliling persegi panjang
3.
Menu menghitung panjang diagonal persegi panjang
4.
Keluar
Jika user menginputkan nomor menu 4, baru keluar program, tetapi jika user menginputkan 1/2/3
maka akan terpanggil menu yang terpilih (gunakan switch-case)
III - 17
Download