TEL 2112 Dasar Komputer & Pemograman Fungsi Dosen: Abdillah, S.Si, MIT Email: abdill01@gmail.com Website: http://abdillah.mahyuddin.web.id Website: http://abdill01.wordpress.com
Tujuan Mahasiswa mampu memecah sebuah program besar menjadi sejumlah fungsi dan mengkonversi prosedur menjadi fungsi atau sebaliknya. Untuk mencapai suatu tujuan besar, maka tujuan tsb harus dibagi-bagi menjadi tujuan kecil sampai tujuan kecil itu merupakan tujuan yang dapat dicapai berdasarkan potensi yang dimiliki saat itu (Al Khuwarizmi)
Apa itu 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 modul program yang ekivalen, namun pada beberapa masalah ada kalanya kita lebih tepat menggunakan fungsi ketimbang prosedur, demikian juga sebaliknya.
Notasi Algoritmik Fungsi function Nama_Fungsi (input parameter) { Berisi penjelasan apa yang dikembalikan fungsi } DEKLARASI { Semua nama yang dipakai di dalam fungsi } ALGORITMA: { Badan prosedur, berisi urutan instruksi } return ekspresi { Pengembalian nilai yang dihasilkan fungsi}
Pemanggilan Fungsi Fungsi dipanggil dari program pemanggil dengan menuliskan nama_fungsi diikuti dengan parameter aktual. Nilai yang dikembalikan fungsi dapat diperlakukan dengan dua cara: Nilai yang dikembalikan oleh fungsi ditampung dalam sebuah peubah yang bertipe sama dengan tipe fungsi. Nilai yang dikembalikan oleh fungsi dapat langsung dimanipulasi.
Mengubah Fungsi menjadi Prosedur Sebuah fungsi dapat dikonversi sebagai prosedur dengan cara menyatakan nilai yang dikembalikan oleh fungsi tersebut sebagai parameter keluaran pada prosedur.
Mengubah Prosedur menjadi Fungsi Prosedur yang mempunyai satu buah parameter keluaran dapat ditulis dengan cara menyatakan parameter keluaran sebagai nilai yang dikembalikan oleh fungsi.
Contoh #1 Algoritma Fungsi function Genap(input n : integer) Boolean {Mengembalikan true jika n genap atau false jika ganjil } DEKLARASI {tidak ada} ALGORITMA: return (n mod 2 = 0)
Contoh #1 Algoritma Program Pemanggil PROGRAM Genap_Ganjil { Menentukan apakah sebuah bilangan genap atau ganjil } DEKLARASI x : integer function Genap(input n : integer) boolean ALGORITMA: read (x) if Genap(x) then write(‘genap’) else write(‘ganjil’) endif
boolean Genap(int n) return (n % 2 = = 0); /* PROGRAM Genap_Ganjil */ { Menentukan apakah sebuah bilangan genap atau ganjil } #include <stdio.h> typedef enum(0=false,1=true) boolean; boolean Genap(int n); main() { int x; printf(“Ketikkan sebuah bilangan:”);scanf(“%d”,&x); if (Genap(x)) printf(“genap \n”); else printf(“ganjil \n”); } boolean Genap(int n) return (n % 2 = = 0);
Contoh #2 Algoritma Fungsi 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
Contoh #2 Algoritma Program Pemanggil 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 ALGORITMA: read (P1.x, P1.y) read (P2.x, P2.y) Pt Titik_Tengah(P1,P2) write (Pt.x,Pt.y)
/* PROGRAM Hitung_Titik_Tengah */ { Menghitung koordinat antara dua titik } #include <stdio.h> /* DEKLARASI GLOBAL */ typedef struct (float x,y;) Titik; Titik Titik_Tengah(Titik P1, Titik P2); /* Mengembalikan titik tengah dari P1 dan P2 /* 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); }
Lanjutan Program 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; }