Panduan Praktikum Algoritma dan Pemrograman Modul 6. Fungsi A. Tujuan Praktikan memahami penggunaan fungsi dalam pemecahan masalah dan mampu mentranslasi fungsi dari notasi algoritma pseudocode ke dalam bahasa C. B. Peralatan Perangkat keras: 1 set komputer dan 1 buah flashdisk. Perangkat lunak: Windows Xp, kompilator djgpp dan Notepad. C. Dasar Teori 1. Definisi Fungsi Sebuah fungsi adalah modul program yang mengerjakan tugas atau aktivitas yang spesifik dan mengembalikan sebuah nilai dari tipe tertentu, baik tipe dasar atau tipe bentukan. Baik fungsi maupun prosedur, keduanya merupakan pemrograman modular yang ekivalen, namun pada beberapa masalah ada kalanya kita lebih tepat menggunakan fungsi ketimbang prosedur, demikian juga sebaliknya. Prosedur yang mempunyai satu buah parameter keluaran dapat ditulis dengan cara menyatakan parameter keluaran sebagai nilai yang dikembalikan oleh fungsi. 2. Notasi Algoritmik function Nama_Fungsi (input parameter) { Berisi penjelasan apa yang dikembalikan fungsi } DEKLARASI { Semua nama yang dipakai di dalam fungsi } ALGORITMA: { Badan fungsi, berisi urutan instruksi } return ekspresi { Pengembalian nilai yang dihasilkan fungsi} Jurusan Teknik Elektro UIN Suska Riau Halaman 31 Panduan Praktikum Algoritma dan Pemrograman 3. Pemanggilan Fungsi Fungsi dipanggil dari program pemanggil dengan menuliskan nama_fungsi diikuti dengan parameter aktual. Nilai yang dikembalikan fungsi dapat diperlakukan dengan dua cara: 1. Nilai yang dikembalikan oleh fungsi dapat langsung dimanipulasi. 2. Nilai yang dikembalikan oleh fungsi ditampung dalam sebuah peubah yang bertipe sama dengan tipe fungsi. Contoh berikut adalah algoritma dimana nilai yang dikembalikan oleh fungsi langsung dimanipulasi: PROGRAM Genap_Ganjil { Menentukan apakah sebuah bilangan genap atau ganjil } DEKLARASI x : integer function Genap(input n : integer) int ALGORITMA: read (x) if Genap(x)=0 then write(‘genap’) else write(‘ganjil’) endif function Genap(input n : integer) int {Mengembalikan 0 jika n genap atau 1 jika ganjil } DEKLARASI {tidak ada} ALGORITMA: return (n mod 2) Contoh berikut adalah algoritma dimana nilai yang dikembalikan oleh fungsi ditampung dalam sebuah peubah yang bertipe sama dengan tipe fungsi: PROGRAM Hitung_Titik_Tengah { Menghitung koordinat antara dua titik } DEKLARASI type Titik : record < x,y : real > P1, P2,Pt : Titik {Pt titik tengah antara P1 dan P2} function Titik_Tengah(input P1,P2 : Titik) Titik Jurusan Teknik Elektro UIN Suska Riau Halaman 32 Panduan Praktikum Algoritma dan Pemrograman ALGORITMA: read (P1.x, P1.y) read (P2.x, P2.y) Pt Titik_Tengah(P1,P2) write (Pt.x,Pt.y) function Titik_Tengah(input P1,P2 : Titik) Titik { Mengembalikan titik tengah dari P1 dan P2 } DEKLARASI {tidak ada} ALGORITMA: Pt.x (P1.x + P2.x)/2 Pt.y (P1.y + P2.y)/2 return Pt D. Langkah Kerja 1. Ketiklah program berikut, simpan dalam flashdisk, kemudian kompilasi dan eksekusi menggunakan DOS prompt. /* PROGRAM Genap_Ganjil */ /* Menentukan apakah sebuah bilangan genap atau ganjil */ #include <stdio.h> int Genap(int n); void main() { int x; printf("Ketikkan sebuah bilangan:");scanf("%d",&x); if (Genap(x)== 0) printf("%d adalah bilangan genap \n", x); else printf("%d adalah bilangan ganjil \n", x); } int Genap(int n) { return (n % 2); } 2. Ketiklah program berikut, simpan dalam flashdisk, kemudian kompilasi dan eksekusi menggunakan DOS prompt. /* PROGRAM Hitung_Titik_Tengah */ /* Menghitung koordinat antara dua titik */ Jurusan Teknik Elektro UIN Suska Riau Halaman 33 Panduan Praktikum Algoritma dan Pemrograman #include <stdio.h> typedef struct (float x,y;) Titik; Titik Titik_Tengah(Titik P1, Titik P2); void main() { Titik P1,P2,Pt; printf(“ Masukkan koordinat titik P1: \n”); printf(“ x = ”);scanf(“%f”,&P1.x); printf(“ y = ”);scanf(“%f”,&P1.y); printf(“ Masukkan koordinat titik P2: \n”); printf(“ x = ”);scanf(“%f”,&P2.x); printf(“ y = ”);scanf(“%f”,&P2.y); Pt = Titik_Tengah(P1,P2); printf(“ Titik tengah : (%f,%f) \n”, Pt.x, Pt.y); } Titik Titik_Tengah(Titik P1, Titik P2) /* Mengembalikan titik tengah dari P1 dan P2 */ { Titik Pt; Pt.x = (P1.x + P2.x)/2; Pt.y = (P1.y + P2.y)/2; return Pt; } 3. Ketiklah program berikut, simpan dalam flashdisk, kemudian kompilasi dan eksekusi menggunakan DOS prompt. #include <stdio.h> float HitungLuas(float alas, float tinggi); void main() { int i, N; float a, t; printf("Masukkan banyaknya segitiga = "); scanf("%d",&N); for (i=1; i<=N; i++) { printf("Masukkan alas segitiga = "); scanf("%f",&a); printf("Masukkan tinggi segitiga = "); scanf("%f",&t); printf("Luas segitiga = %.2f \n", HitungLuas(a,t)); } } float HitungLuas(float alas, float tinggi) { return (alas*tinggi)*0.5; } Jurusan Teknik Elektro UIN Suska Riau Halaman 34 Panduan Praktikum Algoritma dan Pemrograman E. Tugas 1. Buatlah program C berdasarkan algoritma berikut yang membaca nilai x dan y kemudian memanggil fungsi pangkat yang menghitung perpangkatan xy dan mengembalikan nilai xy. Program juga menampilkan nilai xy tersebut di layar monitor PROGRAM Hitung_Pangkat { Program yang menghitung nilai x pangkat y } DEKLARASI x : integer function Pangkat (input x : integer) → integer ALGORITMA: read (x) write (xy = Pangkat(x)) function Pangkat (input x : integer) → integer { Menghitung nilai x pangkat y } DEKLARASI i,y, pangkat: integer ALGORITMA: read (y) pangkat ← 1 for (i←1 to y) do pangkat ← pangkat * x i←i+1 return pangkat 2. Buatlah program C berdasar algoritma berikut yang membaca nilai N kemudian memanggil fungsi deret yang menghitung 1 + 2 + 3 + ... + N dan mengembalikan nilai penjumlahan deret. Program juga menampilkan nilai penjumlahan deret tersebut di layar monitor. PROGRAM Hitung_Deret { Program yang menghitung nilai deret } DEKLARASI N : integer function Deret (input N : integer) → integer ALGORITMA: read (N) Jurusan Teknik Elektro UIN Suska Riau Halaman 35 Panduan Praktikum Algoritma dan Pemrograman write (Jumlah deret N = Deret(N)) function Deret (input N : integer) → integer { Menghitung nilai deret N } DEKLARASI i, deret : integer ALGORITMA: deret ← 0; for (i←1 to N) do deret ← deret + i i←i+1 return deret; 3. Buatlah program C berdasar algoritma berikut yang membaca nilai N, kemudian memanggil fungsi Faktorial yang menghitung N! = 1 x 2 x 3 x ... x N dan mengembalikan nilai N!. Program utama kemudian menampilkan nilai N! tersebut di akhir program. PROGRAM Hitung_Faktorial { Program yang menghitung nilai faktorial } DEKLARASI N : integer function Faktorial (input N : integer) → integer ALGORITMA: read (N) write (N! = Faktorial(N)) function Faktorial (input N : integer) → integer { Menghitung nilai N faktorial } DEKLARASI i, faktorial : integer ALGORITMA: faktorial ← 1; for (i←1 to N) do faktorial ← faktorial * i i←i+1 return faktorial Jurusan Teknik Elektro UIN Suska Riau Halaman 36