Method Pemrograman Dasar Sistem Informasi PTIIK Herman Tolle
Definisi Metode: Sekumpulan baris kode program yang mempunyai fungsi tertentu dan dapat dipanggil dari fungsi utama, • Dapat dipanggil berulang kali • dapat memproses data (variabel) yang dikirim dari main function
Manfaat Method / Function Prosedur • Menyederhanakan struktur program • Mempermudah kendali program jika bekerja dengan source code yang panjang Fungsi • Mendefiniskan fungsi-fungsi tertentu Prosedur/Fungsi • Dapat digunakan secara berulang dalam main program
Tipe Method • Prosedur: – sekumpulan proses – fungsi yang tidak mengembalikan suatu nilai
• Fungsi: – Sekumpulan proses dan mengembalikan nilai tertentu
• Dalam bahasa Java / C++, semua method disebut sebagai function (fungsi).
Deklarasi Method Modifier – return value – namaMethod –(parameter/argumen) { Block Statement } public static void main (String[] args) { //statement-statement }
Keterangan • Modifier = Hak Akses Terdiri dari public, protected, private • static dan non static • return value = Nilai balikan jika metode melakukan suatu kalkulasi dan mempunyai nilai yang disimpan, jika tidak ada return maka menggunakan kata kunci void • Parameter/Argumen = Variabel yang dilewatkan dari luar metode atau yang digunakan di dalam metode
Contoh public static void main (String[] args) { //statement-statement }
Fungsi yang tidak mengembalikan nilai modifier – void – namaMethod – [parameter/argumen] { // Block Statement } private static void InputData() { }
Contoh: Program Menghitung Volume Kubus class VolumeKubus public static void main(String args[]) { Scanner masukan = new Scanner(System.in); // Input panjang sisi System.out.print("Masukkan panjang sisi: "); int sisi = masukan.nextInt(); // hitung volume int volume = sisi*sisi*sisi; // cetak hasil System.out.printf(“Volume Kubus = %d \n“,volume); }
Program Hitung Volume Kubus dengan Fungsi import java.util.Scanner; public class VolumeKubus { private static int volume;
Variabel global
public static void main(String args[]) { int rusuk; rusuk = inputSisi(); Penyederhanaan struktur program volume = volumeKubus(rusuk); cetakHasil(); }
private static int inputSisi() { Scanner masukan = new Scanner(System.in); System.out.print("Masukkan panjang sisi: "); int sisi = masukan.nextInt(); return sisi; } private static int volumeKubus(int sisi) { int hasil = sisi*sisi*sisi; return hasil; } private static void cetakHasil() { System.out.printf("Volume Kubus = %d \n", volume); } }
Program Hitung Volume Kubus dengan Fungsi import java.util.Scanner; public class VolumeKubus { // private static int volume; public static void main(String args[]) { int rusuk; rusuk = inputSisi(); Penyederhanaan int volume = volumeKubus(rusuk);struktur program cetakHasil(volume); }
private static int inputSisi() { Scanner masukan = new Scanner(System.in); System.out.print("Masukkan panjang sisi: "); int sisi = masukan.nextInt(); return sisi; } private static int volumeKubus(int sisi) { int hasil = sisi*sisi*sisi; return hasil; } private static void cetakHasil(int vol) { System.out.printf("Volume Kubus = %d \n", vol); } }
Memanggil Method • Prosedur Tanpa Parameter: nama_method(); • Prosedur Dengan Parameter nama_method (parameter1,parameter2);
• Fungsi yang ditampung hasilnya volume = volumeKubus(rusuk);
• Output langsung hasil fungsi System.out.println(“Hasil = “+ volumeKubus(rusuk)); System.out.printf(“Hasil = %d“, volumeKubus(rusuk));
Cakupan Variabel • Variabel Lokal: variabel yang hanya digunakan dalam scope blok program terbatas • Variabel Global: variabel yang dapat digunakan pada seluruh bagian dari program dalam satu class yang sama
Overloading Function • Satu nama Fungsi tetapi memiliki beberapa implementasi yang dapat dibuat berdasarkan perbedaan parameter input atau perbedaan tipe data keluaran • Misalnya: public static int max(int x, int y) { if x>y return x else return y } public static double max(double x, double y) { if x>y return x else return y }
public class Lingkaran { public static void main(String []args) { int r = inputJejari(); double Luas = luasLingkaran(r); double Luas2 = luasLingkaran(5.5); cetakLuas(Luas2); } private static double luasLingkaran(int r) { return (3.14*r*r); } private static double luasLingkaran(double r) { return (3.14*r*r); } private static int inputJejari() { Scanner masukan = new Scanner(System.in); System.out.print("Masukkan Jejari: "); int jejari = masukan.nextInt(); return jejari; } private static void cetakLuas(double luas) { System.out.print(“Luas Lingkaran = %f“, luas); }
Mempermudah Kendali Program • Menggunakan fungsi dan prosedur untuk kendali program berbasis menu do
• Ulangi – – – – – –
Input pilih Jika pilih: 1. Input Data 2. Proses Data 3. Cetak Data 9. Keluar
• Sampai pilih = 9
System.out.print(“Pilih Menu = ”); pilih = input.nextInt(); switch (pilih) { case 1: InputData(); break; case 2: UrutData(); break; case 3: CetakData(); break; case 9: CetakExit(); break; default: System.out.println(“Pilihan salah”);
} while (pilih<>9)
Tugas Kelas D • Membuat Program dengan Menu: 1. 2. 3. 4. 5.
• • • •
Input Data Urut Data Terkecil (QuickSort) Urut Data Terbesar (BubbleSort) Cetak Data Keluar
Gunakan function (prosedur) untuk setiap item menu. Deadline: 1 Desember 2013, dikirim ke email dosen File Laporan (doc) + screenshot Format judul email: SID-nim-tugas5
Tugas Kelas F • Membuat Program dengan Menu: 1. 2. 3. 4. 5.
• • • •
Input Data (array n) Urut Terkecil (QuickSort) Urut Terbesar (BubbleSort) Cetak Data Keluar
Gunakan function (prosedur) untuk setiap item menu. Deadline: 9 Desember 2013, dikirim ke email dosen (
[email protected]) File Laporan (doc) + screenshot Format judul email & nama file doc: SIF-nim-tugas5
Tugas Kelas E • Membuat Program dengan Menu: 1. 2. 3. 4. 5.
• • • •
Input Data Urut Terkecil (QuickSort) Urut Terbesar (BubbleSort) Cetak Data Keluar
Gunakan function (prosedur) untuk setiap item menu. Deadline: 26 November 2013, dikirim ke email dosen File Laporan (doc) + screenshot Format judul email: SIE-nim-tugas5
Input Data Array Cetak Data Array INPUT Tanya Jumlah Data Ulangi Sebanyak Jumlah Data, untuk Tanya data ke-i, baca data ke-i
CETAK Ulangi Sebanyak Jumlah Data, untuk Cetak data ke-i
FUNGSI REKURSIF
REKURSIF • Rekursif merupakan salah satu metode dalam dunia matematika dimana definisi sebuah fungsi mengandung fungsi itu sendiri. • Dalam dunia pemrograman, rekursif diimplementasikan dalam sebuah fungsi yang memanggil dirinya sendiri dan tergolong dalam dynamic programming.
FUNGSI REKURSIF • Metoda rekursif adalah metoda yang memanggil dirinya sendiri. • Digunakan pada fungsi yang dapat dieksekusi secara iteratif (berulang) • Metoda ini memanggil dirinya sendiri sehingga dapat melakukan proses berulang-ulang. • Kasus sederhana yang sering muncul adalah proses berulang-ulang menghitung hasil faktorial. • 0! = 1; n! = n × (n – 1), n> 0!
• Faktorial dari 5 adalah 1 x 2 x 3 x 4 x 5. • Dari proses itu kita ketahui bahwa untuk menghitung factorial 5 manualnya seperti 1 x 2 = 2, lalu hasil 2 ini dikalikan 3 sehingga hasilnya adalah 6, lalu hasil 6 ini dikalikan lagi dengan 4 sehingga hasilnya adalah 36, lalu hasil 36 ini dikalikan dengan 5 sehingga hasilnya adalah 120. • 0! = 1; n! = n × (n – 1), n> 0!
Contoh class faktorialDemo{ public static void main(String args[]){ System.out.println("Hitung Faktorial dengan Rekursif"); System.out.println("Faktorial dari 4 adalah : "+ fak_rekursif(4));
System.out.println("Hitung Faktorial dengan Perulangan"); System.out.println("Faktorial dari 4 adalah : "+ fak_perulangan(4)); } }
private static int fak_perulangan(int n) { int t; int Hasil; Hasil = 1; for(t=1; t<=n; t++) Hasil *= t; return Hasil; } private static int fak_rekursif(int n) { int Hasil; if(n==1 || n==0) return 1; Hasil = fak_rekursif(n-1) * n; return Hasil; }
Case: Deret Fibonaci Deret : 0 1 1 2 3 5 8 13 21 34 55 89 ... indeks: 0 1 2 3 4 5 6 7 8 9 10 11 • Deret Fibonacci dimulai dengan 0 dan 1, dan hasil penjumlahan dua nilai deret sebelumnya menjadi nilai indeks yang berikut. • Deret ini dapat didefinisikan rekursif sebagai berikut: fib(0) = 0; fib(1) = 1; fib(index) = fib(index-2) + fib(index-1);
utk index >= 2
Latihan • Buat algoritma dan kode program fungsi rekursif untuk perhitungan x pangkat y • Contoh: – Input : x,y – Proses: x^y = 1, jika y = 0 – x^y = x * x^(y-1), jika y > 0
class Pangkat { public static int pangkatRekursif(int x, int y) { if (y == 0) { return 1; } else { return x * pangkatRekursif(x, y - 1); } } public static void main(String[] args) { System.out.println("10 dipangkatkan 3 = “ + pangkatRekursif(10,3)); } }
Fraktal
• FPB (Faktor Persekutuan Terbesar) dalam bahasa inggris dinamakan Greatest Common Divisor (GCD). • FPB dari dua bilangan adalah bilangan bulat positif terbesar yang membagi habis kedua bilangan. Bilangan yang dibandingkan tersebut berupa bilangan bulat atau integer. • Dalam definisi tersebut yaitu membagi habis kedua bilangan bulat positif, berarti harus dihitung modulo-nya (sisa hasil bagi dari kedua bilangan).
• FPB x dan y memiliki pola sebagai berikut: • Jika x dibagi y sama dengan 0, maka FPB dari x dan y adalah y • Jika x dibagi y tidak sama dengan 0, maka y dibagi dengan sisa pembagian x dan y • Formulanya adalah: • x % y = 0, FPB x dan y adalah y • x % y != 0 , maka y dibagi dengan hasil dari (x % y)