Upload
duongnhi
View
235
Download
5
Embed Size (px)
Citation preview
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;
public static void main(String args[]) {
int rusuk;
rusuk = inputSisi();
volume = volumeKubus(rusuk);
cetakHasil();
}
Variabel global
Penyederhanaan struktur program
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();
int volume = volumeKubus(rusuk);
cetakHasil(volume);
}
Penyederhanaan struktur program
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
• Ulangi – Input pilih – Jika pilih: – 1. Input Data – 2. Proses Data – 3. Cetak Data – 9. Keluar
• Sampai pilih = 9
do
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. Input Data 2. Urut Data Terkecil (QuickSort) 3. Urut Data Terbesar (BubbleSort) 4. Cetak Data 5. 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. Input Data (array n) 2. Urut Terkecil (QuickSort) 3. Urut Terbesar (BubbleSort) 4. Cetak Data 5. 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. Input Data 2. Urut Terkecil (QuickSort) 3. Urut Terbesar (BubbleSort) 4. Cetak Data 5. 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)