• Tidak ada hasil yang ditemukan

Modul Praktikum Bahasa Pemrograman I

N/A
N/A
Protected

Academic year: 2018

Membagikan "Modul Praktikum Bahasa Pemrograman I"

Copied!
8
0
0

Teks penuh

(1)

PRAKTIKUM 5

FUNGSI (SUB PROGRAM)

1. TUJUAN

1. Menjelaskan penggunaan sub program dalam bentuk fungsi dan prosedur 2. Mampu membuat fungsi dan prosedur

3. Mengerti dan mampu menggunakan parameter di fungsi dan prosedur

2. TEORI

Sub program adalah pemecahan program menjadi beberapa bagian yang lebih kecil. Sub program (modul atau sub rutin) terdiri atas fungsi dan prosedur. Dalam bahasa C, sub program disebut sebagai fungsi. Sifat fungsi seperti halnya di matematika adalah menghasilkan/ mengembalikan (return) suatu nilai dari tipe tertentu, sedangkan prosedur merupakan fungsi yang tidak menghasilkan nilai.

Fungsi merupakan suatu bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan terpisah program yang memanggilnya. Fungsi merupakan elemen utama dalam bahasa C karena, bahasa C sendiri terbentuk dari kumpulan fungsi-fungsi. Dalam setiap program bahasa C, minimal terdapat satu fungsi yaitu fungsi main(). Fungsi banyak diterapkan dalam program C yang terstruktur. Keuntungan penggunaan fungsi adalah program akan memiliki struktur yang jelas (mempunyaireadabilityyang tinggi) dan mereduksi penulisan bagian program yang sama. Dalam bahasa C fungsi dapat dibagi menjadi dua, yaitu fungsi pustaka atau fungsi yang telah tersedia dalam C++ dan fungsi yang didefinisikan atau dibuat oleh programmer. Beberapa fungsi yang telah tersedia di dalam bahasa C++, antara lain:printf, scanf, getch, sqrtdan sebagainya.

2.1 Membuat Fungsi Sendiri

Sebelum digunakan, suatu fungsi harus dideklarasikan dan didefinisikan terlebih dahulu. Bentuk umum pendeklarasian fungsi adalah :

tipe <NamaFungsi>(namaParameter);

Contoh:

float LuasSegitiga(float a, float t);

Hal-hal yang perlu diperhatikan dalam penggunaan fungsi :

1. Kalau tipe fungsi tidak disebutkan, maka akan dianggap sebagai fungsi dengan nilai keluaran bertipe integer.

2. Untuk fungsi yang memiliki keluaran bertipe bukan integer, maka diperlukan pendefinisian penentu tipe fungsi.

(2)

2.2 Parameter

Parameter adalah media pertukaran data antara prosedur dan titik dimana ia dipanggil. Parameter yang disebutkan dalam bagian deklarasi disebut parameter formal, sedangkan parameter yang disertakan dalam pemanggilan disebut parameter aktual.

Pada saat fungsi dipanggil, parameter aktual berkoresponden dengan parameter formal. Aturan dalam korespondesi satu-satu antara parameter aktual dan parameter formal adalah:

1. Jumlah parameter aktual harus sama dengan parameter formal 2. Tipe parameter aktual harus sama dengan parameter formal

Berdasarkan penggunaannya parameter formal terdiri atas dua tipe yaitu parameter masukan dan parameter masukan/keluaran. Parameter masukan (parameter by value) adalah parameter yang hanya mengirimkan nilai sebagai masukan bagi fungsi. Pengiriman parameter secara nilai adalah pengiriman searah, yaitu dari bagian program yang memanggil fungsi ke fungsi yang dipanggil.

Parameter masukan/keluaran adalah parameter yang berfungsi sebagai masukan dan keluaran bagi fungsi. Parameter ini disebut parameter by referencekarena, yang dikirimkan ke fungsi adalah alamat letak dari nilai datanya, bukan nilai datanya. Pengiriman parameter secara referensi adalah pengiriman dua arah, yaitu dari fungsi pemanggil ke fungsi yang dipanggil dan juga sebaliknya. Pada penggunaannya parameter masukan/keluaran menggunakan simbol&sebelum nama parameter.

Dalam penerapannya, fungsi hanya menggunakan parameter masukan, sementara untuk fungsi yang tidak menghasilkan nilai (prosedur) dapat menggunakan kedua tipe parameter formal ini.

2.3 Pemanggilan Fungsi

Untuk mengeksekusi fungsi, nama fungsi harus di panggil dari program pemanggil, misalnya dari program utama atau modul program lainnya. Agar fungsi dikenal oleh program pemanggil, makaprototype fungsi harus dideklarasikan di awal program. Prototype fungsi hanya berisi bagian judul (header).

Contoh:

#include <stdio.h> #include <conio.h>

float LuasSegitiga(float, float); //prototype fungsi main(){

int i,N; float a,t;

printf("input banyak segitiga = "); scanf("%d",&N);

for(i=1;i<=N;i++){

(3)

}

getch(); }

float LuasSegitiga(float alas, float tinggi) { float luas;

luas = alas*tinggi/2; return luas;

}

Karena yang dipentingkan adalah nilainya, maka parameter aktual boleh berupa ekspresi atau konstanta dalam pemanggilannya

Contoh:

printf("%f\n",LuasSegitiga(a*0.2, t*0.1));

atau

printf("%f\n",LuasSegitiga(12, 6));

Penulisan fungsi LuasSegitiga dapat disederhanakan sebagai berikut:

float LuasSegitiga(float alas, float tinggi) { return alas*tinggi/2;

}

Pernyataanreturnberfungsi untuk memberikan nilai ke nama fungsi.

2.4 Variabel Lokal dan Global

Variabel lokal adalah variabel yang dideklarasikan di dalam fungsi. Sifat-sifat variabel lokal :

• Secara otomatis akan diciptakan ketika fungsi dipanggil dan akan lenyap ketika proses eksekusi terhadap fungsi berakhir.

• Hanya dikenal oleh fungsi tempat variabel dideklarasikan.

Variabel global adalah variabel yang dideklarasikan di luar fungsi. Sifat-sifat variabel global adalah dikenal (dapat diakses) oleh semua fungsi.

Berdasarkan contoh fungsi diatas, maka variabel luas disebut variabel lokal

sedangkan nama variabel yang dideklarasikan dalam program utama seperti i, N, a, t

disebut variabel global.

2.5 Prosedur

(4)

yang ada di dalam prosedur itu. Prosedur disebut juga dengan fungsi tanpa tipe (void).

Prosedur dapat menggunakan parameter atau tidak. Contoh prosedur tanpa parameter:

#include <stdio.h> #include <conio.h>

void HitungLuasSegitiga(); //prototype prosedur main(){

int i,N;

printf("input banyak segitiga = ");scanf("%d",&N); for(i=1;i<=N;i++)

HitungLuasSegitiga(); getch();

}

void HitungLuasSegitiga() { float alas, tinggi, luas;

printf("input alas dan tinggi = "); scanf("%f %f",&alas,&tinggi);

luas = alas*tinggi/2; printf("%f\n",luas); }

Contoh prosedur dengan parameter masukan:

#include <stdio.h> #include <conio.h>

void HitungLuasSegitiga(float alas, float tinggi); void main(){

int i,N; float a,t; scanf("%d",&N); for (i=1;i<=N;i++){

printf("input alas dan tinggi = ");scanf("%f %f",&a,&t); HitungLuasSegitiga(a,t);

}

getch(); }

void HitungLuasSegitiga(float alas, float tinggi){ float luas;

luas = alas*tinggi/2; printf("%f\n",luas); }

Contoh prosedur dengan parameter masukan/keluaran:

(5)

printf("%d\n",a); inc(a);

} while (a <= 10); getch();

}

void inc(int &x){ x = x + 1; }

Kasus:

Bandingkan hasil dari 2 program berikut!, program pertama memanggil prosedur dengan parameter masukan dan program kedua dengan parameter masukan/keluaran.

Program 1:

#include <stdio.h> #include <conio.h>

void Contoh(int x, int y); void main(){

int a = 5,b = 10; Contoh(a,b);

printf(“a = %d\nb = %d”,a,b); getch();

}

void Contoh(int x, int y){ x = x + 5;

y = y + 10; }

Berapakah output program ?

Program 2:

#include <stdio.h> #include <conio.h>

void Contoh(int &x, int &y); void main(){

int a = 5,b = 10; Contoh(a,b);

printf("a = %d\nb = %d",a,b); getch();

}

void Contoh(int &x, int &y){ x = x + 5;

y = y + 10; }

(6)

2.6 Ragam Contoh Program

Contoh fungsi untuk melakukan validasi terhadap pin ATM Bank

#include <stdio.h> #include <conio.h> bool Valid(int p); void main(){

int N,x,c=0;

printf("ATM Bank Mondar Mandir\n"); while (1) //selama true

{

printf("input pin : "); scanf("%d",&N);

x = Valid(N); if (x == false) {

c++;

if(c>=3) {

printf("anda sudah memasukkan pin 3 kali, maaf kartu anda kami blokir");

break; }

else

printf("pin anda salah\n"); }

else {

printf("pin benar, silahkan bertransaksi"); break;

} }

getch(); }

bool Valid(int p){ int pass=12345; if(pass == p)

return true; else

return false; }

Contoh prosedur yang menerima masukan berupa bilangan integer positif dan menampilkan nilai tersebut dalam kata-kata

(7)

scanf("%d",&a); Bilangan(a); getch(); }

void Satuan(int x){ switch(x) {

case 1 : printf("satu ");break; case 2 : printf("dua ");break; case 3 : printf("tiga ");break; case 4 : printf("empat ");break; case 5 : printf("lima ");break; case 6 : printf("enam ");break; case 7 : printf("tujuh ");break; case 8 : printf("delapan ");break; case 9 : printf("sembilan ");break; }

}

void Puluhan(int x){ if(x<10)

Satuan(x); else if(x==10)

printf("sepuluh "); else if(x==11)

printf("sebelas "); else if(x>=12 && x<=19){

Satuan(x%10); printf("belas "); }

else if(x>=20 && x<=99){ Satuan(x/10);

printf("puluh "); Satuan(x%10); }

}

void Bilangan(int x) { if (x <= 9)

Satuan(x);

if (x >= 10 && x <= 99) Puluhan(x);

if (x >= 100 && x <= 999) Ratusan(x);

if(x >= 1000 && x <= 9999) Ribuan(x);

(8)

3. TUGAS

1. Jelaskan keuntungan menggunakan fungsi

2. Apa perbedaan antara deklarasi fungsi/prosedur dengan defenisinya ? 3. Dimana deklarasi fungsi/prosedur diletakkan?

4. Apa perbedaan penggunaan parameter parameter by value and by reference? 5. Apa yang salah dari deklarasi berikut: int f(int a,int b=0,c);

6. Modifikasi contoh prosedur yang menerima masukan berupa bilangan integer positif dan menampilkan nilai dalam kata-kata dengan menambahkan prosedur Ratusan dan Ribuan

4. LATIHAN

1. Buatlah prosedur yang menghasilkan nilai rata-rata dari 5 data

2. Tulislah prosedur dengan 2 parameter aktual yang bertugas untuk menukarkan nilai dua parameter tersebut. Contoh Tukar(a,b) dengan a=4,b=5, setelah prosedur selesai dijalankan a=5, b=4

3. Modifikasi soal no 1, membuat prosedur yang menghitung rata-rata nilai dari sekumpulan data bilangan bulat yang dibaca secara berulang-ulang dari keyboard, sampai data yang diinputkan bernilai 99.

4. Tulislah fungsi dengan parameter masukan char, dengan aturan, bila nilai parameter p , fungsi menghasilkan nilai 1 dan w nilai 0.

5. Tulislah prosedur yang menerima masukan bilangan desimal dan mencetak bilangan binernya

6. Tinjau algortima euclidean dengan menuliskannya ke fungsi yang menghasilkan nilai faktor persekutuan terbesar

7. Menggunakan fungsi FPB dari soal no 6, tulislah prosedur yang menyederhanakan bilangan rasional atau pecahan berbentuk a/b dimana a dan b adalah bilangan bulat dan a < b. Contoh, masukan 5/10 akan menghasilkan ½, 60/90 akan menghasilkan 2/3, dst. Prosedur ini menerima dua parameter bilangan bulat yaitu pembilang dan penyebut dari bilangan rasional. Algoritmanya adalah panggil fungsi FPB didalam prosedur dengan parameter pembilang dan penyebut, kemudian bagi pembilang dan penyebut dengan FPB. Contoh FPB(5,10) = 5, Pembilang = 5/5 = 1, Penyebut = 10/5 = 2.

5. LAPORAN

1. Buatlah laporan yang berisi jawaban dari tugas dan listing program dari latihan yang anda lakukan.

Referensi

Dokumen terkait

Majlis Pelancaran Kempen Kami Prihatin - &#34;Apakah Dosaku&#34; Peringkat Institusi Pengajian Tinggi (IPT) mi adalah anjuran Kementerian Pengajian Tinggi Malaysia

Faktor yang mempengaruhi peningkatan dan penyebaran kasus Demam Berdarah Dengue sangat kompleks, yaitu (1) Pertumbuhan penduduk yang tinggi (2) Urbanisasi yang

TBHP bila direaksikan dengan katalis molybdenum-complex dapat menghasilkan propilena oksida dan menghasilkan hasil samping berupa tert-butyl alcohol yang biasa

Ketebalan lapisan juga merupakan fungsi dari tingkat kecerahan lapisan, karena bila dibandingkan antara Gambar 3 (Grafik hubungan waktu pelapisan nikel dengan iluminasi

131 Pengadaan Jasa Konsultansi Pengawasan/Supervisi Peningkatan Jalan Paleuh - Cemplang Kec... 133 Peningkatan Jalan Bandung -

In Philosophy Through Video Games , Jon Cogburn and Mark Silcox— philosophers with game industry experience—investigate the aesthetic appeal of video games, their effect on our

(3) Perencanaan penanggulangan bencana di daerah sebagaimana dimaksud pada ayat (1) dilakukan melalui penyusunan data tentang risiko bencana pada suatu wilayah dalam

Menurut Sutabri (2012, h.38) Sistem Informasi adalah suatu sistem di dalam suatu organisasi yang mempertemukan kebutuhan pengolahan transaksi harian yang mendukung