Academia.eduAcademia.edu

Modul Praktikum Bahasa Pemrograman I

Modul Praktikum Bahasa Pemrograman I 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 (mempunyai readability yang 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, sqrt dan 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. 3. Untuk fungsi yang tidak mempunyai nilai keluaran (prosedur) digunakan tipe void 4. Pernyataan yang diberikan memberikan nilai akhir kepada fungsi adalah return. PSMI FMIPA Universitas Riau 36 Modul Praktikum Bahasa Pemrograman I 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 memanggil fungsi ke fungsi yang dipanggil. bagian program yang Parameter masukan/keluaran adalah parameter yang berfungsi sebagai masukan dan keluaran bagi fungsi. Parameter ini disebut parameter by reference karena, 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, maka prototype 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++){ printf("input alas = ");scanf("%f",&a); printf("input tinggi = ");scanf("%f",&t); PSMI FMIPA Universitas Riau 37 Modul Praktikum Bahasa Pemrograman I printf("%f\n",LuasSegitiga(a,t)); } 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; } Pernyataan return berfungsi untuk memberikan nilai ke nama fungsi. 2.4 Variabel Lokal dan Global lokal : • • Variabel lokal adalah variabel yang dideklarasikan di dalam fungsi. Sifat-sifat variabel 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 Prosedur merupakan suatu bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan letaknya terpisah dari program yang memanggilnya. Perbedaan fungsi dan prosedur adalah, fungsi menghasilkan/mengembalikan nilai, sedangkan prosedur tidak mengembalikan nilai tertentu, tapi dapat memberikan hasil PSMI FMIPA Universitas Riau 38 Modul Praktikum Bahasa Pemrograman I 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: #include <stdio.h> #include <conio.h> void inc(int &x); void main(){ int a = 0; PSMI FMIPA Universitas Riau 39 Modul Praktikum Bahasa Pemrograman I do{ 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; } Berapakah output program ? PSMI FMIPA Universitas Riau 40 Modul Praktikum Bahasa Pemrograman I 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 #include <stdio.h> #include <conio.h> void Satuan(int x); void Puluhan(int x); void Bilangan(int x); void main(){ int a; PSMI FMIPA Universitas Riau 41 Modul Praktikum Bahasa Pemrograman I printf(“input bilangan sampai nilai puluhan”); 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); } PSMI FMIPA Universitas Riau 42 Modul Praktikum Bahasa Pemrograman I 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. 2. Berilah kesimpulan hasil praktikum. PSMI FMIPA Universitas Riau 43