Jenis File Dalam Basis Data

JENIS FILE

 

File dapat digunakan untuk menyimpan data untuk periode waktu yang tidak tentu, atau file dapat digunakan untuk menyimpan data sementara untuk tujuan khusus. Master File merupakan file dalam bentuk tabel yang digunakan untuk menyimpan data untuk periode lama. File sementara biasanya disebut file transaksi, file kerja, atau file laporan.

 

  1. Master File.

Master file memuat record untuk sekumpulan entitas. Atribut dapat sering diperbaharui, tapi record sendiri relatif permanen. Setiap record biasanya memuat kunci utama dan beberapa kunci kedua. File master diisi seperti tabel dengan basisdata atau seperti indeks atau indeks berurut.

 

  1. File Tabel.

Sebuah file tabel memuat data yang digunakan untuk menghitung banyak data atau tampilan hitungan. File table biasanya hanya dibaca oleh sebuah program.

 

  1. File Transaksi.

Sebuah file transaksi digunakan untuk memasukkan perubahan yang memperbaharui file master dan menghasilkan laporan-laporan.

 

  1. File Kerja

Sebuah program kadang kala dapat berjalan lebih efisien jika digunakan sebuah file kerja. Contoh umu dari file kerja adalah file yang diurut kembali, sehingga record dapat diakses lebih cepat.

 

  1. File Laporan

Jika perlu untuk menjalankan sebuah program, tetapi tidak ada mesin pencetak yang tersedia (atau mesin pencetak sedang sibuk mencetak pekerjaan lain), maka digunakan file laporan. Mengirim keluaran ke sebuah file daripada ke mesin pencetak disebut spooling.




Menghubungkan Dua Form Dalam Java

Dalam tutorial  kali ini, kita akan belajar bagaimana cara menghubungkan / memanggil sebuah form melalui form yang lain dalam Java. Langkah pertama yang harus dilakukan adalah membuat dua buah form terlebih dulu, misalnya FormPertama dan FormKedua.

Caranya klik

File > New Project > Java Application

Beri nama project, misalnya PanggilForm. Hilangkan tanda cek pada Create Main Class, lalu klik finish.

Kemudian buat dua buah from, klik kanan pada project tadi, kemudian pilih

New > JFrame Form

Ubah nama form tersebut menjadi FormPertama. Lakukan hal yang sama untuk membuat FormKedua dan tempatkan pada package yang sama dengan FormPertama. Tambahkan sebuah button pada FormPertama yang nantinya dipakai untuk memanggil FormKedua, ganti nama button tersebut dengan butonPanggil. Tambahkan pula sebuah button pada FormKedua yang nantinya berguna untuk menutup form tersebut, ganti nama buton tersebut dengan butonTutup. Modifikasi kedua form sehingga tampilannya seperti gambar di bawah ini.

 

 

Klik kanan pada butonPanggil > Events > Action > actionPerformed

Anda akan dibawa ke jendela source dan akan menemukan kode program seperti ini:
private void butonPanggilActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

Ubah kode tersebut sehingga menjadi :

private void butonPanggilActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
new FromKedua().setVisible(true);
}

Klik kanan pada butonTutup > Events > Action > actionPerformed

Anda akan dibawa ke jendela source dan akan menemukan kode program seperti ini :

private void butonTutupActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

Ubah kode tersebut sehingga menjadi :

private void butonTutupActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
dispose();
}

Kemudian Run File FromPertama.java dalam jendela project tree anda. Pada FormKedua, ubah property defaultCloseOperatioin menjadi DISPOSE agar saat tanda close pada FormKedua diklik, jendela yang di-close hanya jendela FromKedua saja, jendela FormPertama tetap aktif.

 

Happy Coding

 

 




Kompleksitas Algoritma

›Sebuah masalah dapat mempunyai banyak algoritma penyelesaian. Contoh: masalah pengurutan (sort), ada puluhan algoritma pengurutan.

Sebuah algoritma tidak saja harus benar, tetapi juga harus efisien. Algoritma yang bagus adalah algoritma yang efisien. Efisiensi suatu algoritma diukur dari berapa jumlah waktu dan ruang (space) memori yang dibutuhkan untuk menjalankannya. Algoritma yang efisien adalah algoritma yang meminimumkan kebutuhan waktu dan ruang.

Kebutuhan waktu dan ruang suatu algoritma bergantung pada ukuran masukan (n), yang menyatakan jumlah data yang dip roses. Efisiensi algoritma dapat digunakan untuk menilai algoritma yang terabit. Mengapa Kita Memerlukan Algoritma yang Efisien ?

Model Perhitungan Kebutuhan Waktu/Ruang

  • Kita dapat mengukur waktu yang diperlukan oleh sebuah algoritma dengan menghitung banyaknya operasi/instruksi yang dieksekusi.
  • Jika kita mengetahui besaran waktu (dalam satuan detik) untuk melaksanakan sebuah operasi tertentu, maka kita dapat menghitung berapa waktu sesungguhnya untuk melaksanakan algoritma tersebut.

Contoh 1. Menghitung ratarata

a1 a2 a3 an

Array/Larik bilangan bulat

a. Operasi pengisian nilai (jumlah=0,  k=1, jumlah=jumlah+ak, k=k+1, dan r =jumlah/n). Jumlah seluruh operasi pengisian nilai adalah  t1 = 1 + 1 + n + n + 1 = 3 + 2n

b. Operasi penjumlahan (jumlah+ak, dan k+1).  Jumlah seluruh operasi penjumlahan adalah  t2n + n = 2n

c.  Operasi pembagian (jumlah/n). Jumlah seluruh operasi pembagian adalah  t3 = 1

Total kebutuhan waktu algoritma HitungRataRata:     t = t1 + t2 + t3 = (3 + 2n)a + 2nb + c  detik

Model perhitungan kebutuhan waktu seperti di atas kurang dapat diterima:

  1. Dalam praktek kita tidak mempunyai informasi berapa waktu sesungguhnya untuk melaksanakan suatu operasi tertentu
  2. Komputer dengan arsitektur yang berbeda akan berbeda pula lama waktu untuk setiap jenis operasinya.

Selain bergantung pada komputer, kebutuhan waktu sebuah program juga ditentukan oleh compiler bahasa yang digunakan.

Model abstrak pengukuran waktu/ruang harus independen dari pertimbangan mesin dan compiler

Besaran yang dipakai untuk menerangkan model abstrak pengukuran waktu/ruang ini adalah kompleksitas algoritma.

Ada dua macam kompleksitas algoritma, yaitu kompleksitas waktu dan kompleksitas ruang.

  • Kompleksitas waktu, T(n), diukur dari jumlah tahapan komputasi yang dibutuhkan untuk menjalankan algoritma sebagai fungsi dari ukuran masukan n.
  • Kompleksitas ruang, S(n), diukur dari memori yang digunakan oleh struktur data yang terdapat di dalam algoritma sebagai fungsi dari ukuran masukan n.

Dengan menggunakan besaran kompleksitas waktu/ruang algoritma, kita dapat menentukan laju peningkatan waktu (ruang) yang diperlukan algoritma dengan meningkatnya ukuran masukan n.

Kompleksitas Waktu

Dalam praktek, kompleksitas waktu dihitung berdasarkan jumlah operasi abstrak yang mendasari suatu algoritma, dan memisahkan analisisnya dari implementasi.

Contoh 2.

Tinjau algoritma menghitung ratarata pada Contoh 1. Operasi yang mendasar pada algoritma tersebut adalah operasi penjumlahan elemen-elemen ak (yaitu jumlah=jumlah+ak),

Kompleksitas waktu HitungRataRata adalah  T(n) = n.

Contoh 3. Algoritma untuk mencari elemen terbesar di dalam sebuah larik (array) yang berukuran n elemen.

     

procedure CariElemenTerbesar(input a1, a2, …, an : integer, output maks : integer)

{ Mencari elemen terbesar dari sekumpulan elemen larik integer a1, a2, …, an.

  Elemen terbesar akan disimpan di dalam maks.

  Masukan: a1, a2, …, an

  Keluaran: maks (nilai terbesar)

}

Deklarasi

k : integer

 

Algoritma

maks=a1

k=2

while k <= n do

if ak > maks then

maks=ak

endif

i-i+1

endwhile

{ k > n }

 

Kompleksitas waktu algoritma dihitung berdasarkan jumlah operasi perbandingan elemen larik (A[i] > maks).

Kompleksitas waktu CariElemenTerbesar :  T(n) = n – 1.

Kompleksitas waktu dibedakan atas tiga macam :

  1. Tmax(n) : kompleksitas waktu untuk kasus terburuk (worst case) –> kebutuhan waktu maksimum.
  1. Tmin(n) : kompleksitas waktu untuk kasus terbaik (best case) –> kebutuhan waktu minimum.
  1. Tavg(n): kompleksitas waktu untuk kasus rata-rata (average case) –> kebutuhan waktu secara rata-rata

 

Contoh 4. Algoritma sequential search.

 

procedure PencarianBeruntun(input a1, a2, …, an : integer, x : integer,

output idx : integer)

Deklarasi

k : integer

ketemu : boolean   { bernilai true jika x ditemukan atau false jika x tidak ditemukan }

 

Algoritma:

  k=1

ketemu = false

while (k <= n) and (not ketemu) do

if ak = x then

ketemu=true

else   

k = k + 1

endif

endwhile

{ k > n or ketemu }

 

if ketemu then   { x ditemukan }

idx=k

else

idx= 0       { x tidak ditemukan }

endif

 

Jumlah operasi perbandingan elemen tabel:

  1. Kasus terbaik: ini terjadi bila a1 = x

                          Tmin(n) = 1

       2.  Kasus terburuk: bila an = x   atau    tidak ditemukan.

                          Tmax(n)  = n

  1. Kasus rata-rata: Jika x ditemukan pada posisi ke-j, maka operasi perbandingan (ak = x) akan dieksekusi sebanyak j kali.

                           Tavg(n) = (1+2+3+..+n)/n = (1/2n(1+n))/n = (n+1)/2

 

Contoh 5. Algoritma pencarian biner (bynary  search).

 

procedure PencarianBiner(input a1, a2, …, an : integer, x : integer,

output idx : integer)

Deklarasi

i, j, mid : integer

ketemu : boolean

 

Algoritma

i=1

j=n

ketemu=false

while (not ketemu) and ( i <= j) do

mid = (i+j) div 2

if amid = x then

ketemu = true

else

if amid < x then    { cari di belahan kanan }

i=mid + 1

else                  { cari di belahan kiri }

j=mid – 1;

endif

endif

endwhile

{ketemu or i > j }

 

if ketemu then

idx=mid

else

idx=0

endif

 

1. Kasus terbaik :  Tmin(n) = 1

  1. Kasus terburuk :  Tmax (n) = 2log n

 

Contoh 6. Algoritma algoritma pengurutan pilih (selection sort).

 

procedure Urut(input/output a1, a2, …, an : integer)

Deklarasi

i, j, imaks, temp : integer

 

Algoritma

for i=n downto 2 do   { pass sebanyak n – 1 kali }

imaks=1

for j=2 to i do

if aj > aimaks then

imaks=j

endif

endfor

{ pertukarkan aimaks dengan ai }

temp=ai

ai=aimaks

aimaks=temp

 

endfor

 

a.  Jumlah operasi perbandingan element. Untuk setiap pass ke-i,

         i = 1 –>  jumlah perbandingan  = n – 1

        i = 2 –>  jumlah perbandingan = n – 2

        i = 3  –> jumlah perbandingan = n – 3

:

        i = k –>  jumlah perbandingan = nk

:

        i = n – 1  –> jumlah perbandingan = 1

Jumlah seluruh operasi perbandingan elemen-elemen larik adalah    T(n) = (n – 1) + (n – 2) + … + 1

Ini adalah kompleksitas waktu untuk kasus terbaik dan terburuk, karena algoritma Urut tidak bergantung pada    batasan apakah data masukannya sudah terurut atau acak.

 

b.  Jumlah operasi pertukaran

Untuk setiap i dari 1 sampai n – 1, terjadi satu kali pertukaran elemen, sehingga jumlah operasi pertukaran seluruhnya   adalah   T(n) = n – 1.

Jadi, algoritma pengurutan maksimum membutuhkan n(n – 1 )/2 buah operasi perbandingan elemen dan n – 1  buah operasi pertukaran.

 




Menyelesaikan Knapsack Problem dengan menggunakan Algoritma Greedy

Knapsack Problem

  • Knapsack dapat diartikan sebagai karung atau kantung.
  • Karung digunakan untuk memuat sesuatu.
  • Dan tentunya tidak semua objek dapat ditampung di dalam karung. Karung tersebut hanya dapat menyimpan beberapa objek dengan total ukurannya (weight) lebih kecil atau sama dengan ukuran kapasitas karung.
  • Setiap objek itupun tidak harus kita masukkan seluruhnya. Tetapi bisa juga sebagian saja.
  • knapsack 0/1, yaitu suatu objek diambil seluruh bagiannya atau tidak sama sekali.
  • Setiap objek mempunyai   nilai   keuntungan   atau   yang   disebut   dengan
  • Tujuan ingin mendapatkan profit yang Untuk   mendapatkan profit maksimal Belum   tentu   menggunakan banyak   objek   yang   masuk akan menguntungkan. Bisa saja hal yang sebaliknya yang terjadi.
    • Cara terbaik agar menguntungkan : bukan hanya dari hasilnya optimal tetapi juga banyaknya langkah yang dibutuhkan

 

Knapsack 0/1

Diberikan n buah objek dan sebuah knapsack dengan  kapasitas  bobot  W.

Setiap  objek  memiliki properti bobot (weigth) wi dan keuntungan(profit) pi.

persoalan  adalah  memilih  objek-objek    yang    dimasukkan    ke    dalam    knapsack sedemikian sehingga  memaksimumkan keuntungan. Total   bobot   objek   yang   dimasukkan   ke dalam   knapsack   tidak   boleh   melebihi   kapasitas knapsack.

 

Solusi  persoalan  dinyatakan  sebagai  vektor n-tupel:

X = {x1, x2, …  , xn}

xi = 1 jika objek ke-i dimasukkan ke dalam knapsack,

xi = 0 jika objek ke-i tidak dimasukkan.

 

Persoalan  0/1  Knapsack  dapat  kita  pandang  :

sebagai   mencari   himpunan   bagian   (subset)   dari  keseluruhan objek yang muat ke dalam knapsack dan memberikan total keuntungan terbesar.

 

Penyelesaian dengan Greedy:

  1. Greedy by Profit

Pada setiap langkah Knapsack diisi dengan obyek yang mempunyai keuntungan terbesar.

Strategi ini mencoba memaksimumkan keuntungan dengan memilih objek yang paling menguntungkan  terlebih dahulu.

Pertama kali dilakukan adalah menurutkan secara menurun obyek-obyek berdasarkan profitnya .  Kemudian obyek-obyek yang dapat ditampung oleh knapsack diambil satu persatu sampai knapsack penuh atau (sudah tidak ada obyek lagi yang bisa dimasukan).

Data awal :

w1  = 6;    p1  = 12

w2  = 5;    p2  = 15

w3  = 10;  p3  = 50

w4  = 5;    p4  = 10

Kapasitas knapsack W = 16

 

  1. Greedy by Weight

Pada setiap langkah, knapsack diisi dengan objek yang mempunyai berat paling ringan.  Strategi ini mencoba memaksimumkan keuntungan dengan memasukan sebanyak mungkin objek kedalam knapsack.

Pertama kali yang dilakukan adalah mengurutkan secara menaik objek-objek berdasarkan weight-nya. Kemudian obyek-obyek yang dapat ditampung oleh knapsack diambil satu persatu sampai knapsack penuh atau (sudah tidak ada obyek lagi yang bisa dimasukan).

 

  1. Greedy By Density

Pada setiap langkah, knapsack diisi dengan obyek yang mempunyai densitas terbesar (perbandingan nilai dan berat terbesar).

Strategi ini mencoba memaksimumkan keuntungan dengan memilih objek yang mempunyai keuntungan per unit berat terbesar.

Pertama kali yang dilakukan adalah mencari nilai profit per unit/ density dari tiap-tiap objek. Kemudian obyek-obyek diurutkan berdasarkan densitasnya.

Kemudian obyek-obyek yang dapat ditampung oleh knapsack diambil satu persatu sampai knapsack penuh atau (sudah tidak ada obyek lagi yang bisa dimasukan).

 

CONTOH:

Kapasitas M=20, dengan jumlah barang =3

Berat Wi masing-masing barang (W1,W2,W3) sebesar (18,15,10)

Nilai Profit masing-masing barang (P1,P2,P3) sebesar  (25,24,15)

 

Pilih Barang dengan nilai profit maksimal

P1=25 –>  x1=1.  batas atas nilai

P2=24  –> x2=2/15.

P3=15 –>  x3 =0. batas bawah nilai.

 

Pilih barang dengan berat minimal

W1 = 18  –>  x1=0.  batas bawah

W2=15  –>  x2 = 2/3

W3=10 –>  x3=1. batas atas.

 

Pilih barang dengan menghitung perbandingan yang terbesar dari profit dibagi Berat (Pi/Wi) diurut secara tidak naik.

 

P1/w1=25/18   (1.38)  –> x1=0. karena terkecil x1=0

P2/w2=24/ 15   (1.6) –> x2=1.    karena terbesar x2=1

P3/w3=15/10  (1.5) –> x3=1/2    dicari dengan fungsi pembatas x3=1/2.

 

Tabel

Solusi (x1,x2,x3) Σwixi  Σpixi
Pi max 1,2/15,0 20 28.2
Wi min 0,2/3,1 20 31.0
Pi/Wi max 0,1,1/2 20 31.5

 

Nilai profit maksimal  = 31.5.




Metode Greedy

Metode Greedy digunakan untuk memecahkan persoalan optimasi.

Persoalan optimasi adalah persoalan mencari solusi optimum.

Persoalan optimasi ada 2 yaitu persoalan Maksimasi dan persoalan Minimasi.

 

Contoh Masalah Optimasi:

 

 

 

Pada Kasus Penukaran Uang

Diberikan uang senilai A. Tukar A dengan koin-koin uang yang ada.

Berapakah jumlah minimum koin yang diperlukan untuk penukaran uang tersebut. Ini adalah contoh Persoalan Minimasi.

 

Contoh:

Terdapat koin 5, 10, 25, 50. Jika sejumlah uang sebesar 65 ingin ditukarkan dengan koin, berapa minimal koin yang didapat.

 

65 = 5 + 5 + … + 5                                     (13 koin)

65 = 10 + 5 + 5 + 5 + 5 + .. + 5            (12 koin)

65 = 10 + 10 + 5 + 5 + 5 + .. + 5          (11 koin)

65 = 10 + 10 + .. + 10 + 5                       (7 koin)

65 = 25 + 25 + 10 + 5                              (4 koin)

65 = 50 + 5 + 5 + 5                                   (4 koin)

65 = 50 + 10 + 5                                        (3 koin)

Minimum: 65 = 50 + 10 + 5                (3 koin)

 

Jika pertanyaannya berapa maksimal koin yang didapat maka jawabannya adalah 13 koin dengan kombinasi 5 + 5 + 5 + 5 + .. + 5

 

Greedy = rakus, tamak

Algoritma greedy membentuk solusi langkah  per langkah. Pada setiap langkah terdapat banyak pilihan yang perlu dieksplorasi. Sehingga, pada setiap langkah harus dibuat keputusan yang terbaik dalam menentukan pilihan (keputusan yang telah diambil pada suatu langkah tidak dapat diubah lagi pada langkah selanjutnya). Pada setiap langkah  membuat pilihan optimum lokal dengan harapan bahwa langkah sisanya mengarah kesolusi optimum global.

 

Metode  Greedy dapat digunakan dalam menyelesaikan permasalahan:

  • Optimal Storage on Tapes Problem
  • Knapsack Problem
  • Minimum Spanning Tree Problem
  • Shortest Path Problem



Density Based Methods

Density Based Methods

Merupakan metode yang dikembangkan berdasarkan density (kepadatan) tertentu.  Metode ini menganggap cluster sebagai suatu area yang berisi objek-objek yang padat/sesak, yang dipisahkan oleh area yang memiliki kepadatan rendah (merepresentasikan noise).

1.      DBSCAN : A Density-Based Clustering Method Based on Connected Regions with Sufficiently High Density

DBSCAN (Density-Based Spatial Clustering of Applications with Noise), algoritma menumbuhkan area-area dengan kepadatan yang cukup tinggi ke dalam clustercluster and menemukan clustercluster dalam bentuk yang sembarang dalam suatu database spatial yang memuat noise. DBSCAN mendefinisikan cluster sebagai himpunan maksimum dari titik-titik kepadatan yang terkoneksi (density-connected). Semua objek yang tidak masuk ke dalam cluster manapun dianggap sebagai noise.

Prinsip-prinsip dasar dari metode density based clustering adalah sebagai berikut :

  • Neighborhood yang terletak di dalam radius Ө disebut –neighorhood dari objek data.
  • Jika –neighborhood dari suatu objek berisi paling sedikit suatu angka yang minimum, MinPts dari suatu objek, objek tersebut disebut core objek.
  • Suatu objek p adalah density reachable dari objek q dengan respek ke dan MinPts dalam suatu set objek D jika terdapat suatu rantai objek p1, p2,…,pn, dimana p1 = q dan pn = p, di mana pi+1 density reachable secara langsung dari pi dengan respek ke dan MinPts, untuk 1 £ i £ n, pi anggota D.
  • Suatu objek p adalah density connected ke objek q dengan respek ke dan MinPts dalam suatu set objek D jika terdapat suatu objek o anggota D di mana ke dua p dan q adalah density reachable dari o dengan respek ke dan MinPts.

DBSCAN menemukan clustercluster dengan cara :

  • DBSCAN menelusuri clustercluster dengan memeriksa –neighborhood dari tiap-tiap point dalam database. Jika –neighborhood dari point p mengandung lebih dari MinPts, cluster baru dengan p sebagai core object
  • Kemudian DBSCAN secara iteratif mengumpulkan secara langsung objek-objek density reachable dari core object tersebut, di mana mungkin melibatkan penggabungan dari beberapa cluster-cluster density reachable.

 

2.      DENCLUE : Clustering Based on Density Distribution Functions

DENCLUE (Density Based Clustering) adalah merupakan metode clustering yang berdasarkan suatu set fungsi distribusi density. Metode ini dibangun dengan beberapa ide antara lain :

  • Pengaruh tiap-tiap data point dapat secara formal dimodelkan dengan menggunakan fungsi matematika, yang disebut influence function, yang menyatakan pengaruh dari data point terhadap neighborhood-nya.
  • Keseluruhan density dari space data dapat dimodelkan secara analitik sebagai jumlah influence function dari semua data point.
  • Cluster-cluster kemudian dapat ditentukan secara matematik dengan mengidentifikasi density atractor (penarik), yang mana density atractor adalah maksimum lokal dari seluruh density function.

 

Fitur – Fitur Utama Metode DENCLUE :

  • Secara total berdasarkan matematika
  • Baik untuk sekumpulan data yang mmuat banyak noise
  • Selalu mengikuti deskripsi matematik untuk sembarang bentuk cluster dalam data berdimensi tinggi
  • Lebih cepat dibandingkan metode yang lain (DBSCAN)
  • Membutuhkan banyak parameter

 

Referensi:

  • Han, Jiawei & Kamber, Micheline, Data Mining – Consepts and Techniques, Simon Fraser University, USA : Morgan Kaufmann, 2001.
  • jbptunikompp-gdl-selvialore-23379-14-14.perte-s

 




Membuat Aplikasi Peta Wisata Bandung berbasis Android menggunakan AppInventor

Hello World …

Mari kita membuat aplikasi “Peta Wisata Bandung” dengan menggunakan AppInventor

Ketik ai2.appinventor.mit.edu di browser untuk membuka aplikasi app inventor.
Klik “Create” button pada App Inventor website.
Log in to App Inventor dengan gmail (atau google) user name dan password.
Klik “Continue” untuk menutup splash screen.
Start new project.
Beri nama project dengan “Peta Wisata Bandung”.
Sekarang kita berada pada layar Designer.

Buat tampilan seperti di bawah ini pada layar Designer :

 

Buat Code Blocks:

 

Jika sudah selesai, connect dengan menggunakan AI Companion, Emulator atau USB untuk melihat hasil output aplikasi yang telah kita buat.

Jika sudah selesai dan tidak ada error klik build aplikasi untuk install file apk ke device smartphone atau tablet android.

Aplikasi Peta Wisata Bandung sudah terinstall dan dapat digunakan di smartphone atau tablet kita.

 

 

Happy Coding ..




JOptionPane untuk input dan output data dalam program Java

Ada beberapa cara untuk melakukan input dan menampilkan output  dalam program Java, salah satunya adalah dengan menggunakan GUI (Graphical User Interface).

Jika kita menggunakan GUI maka syntax yang digunakan untuk memasukan data atau menampilkan data adalah dengan menggunakan JOptionPane.

Contoh program :

import java.util.Scanner;
import javax.swing.JOptionPane;

public class HitungKellSegitigaBox {

public static void main(String[] args) {

double alas, tinggi, sisimiring, keliling;

alas = Double.parseDouble(JOptionPane.showInputDialog(null,”Alas : “));
tinggi = Double.parseDouble(JOptionPane.showInputDialog(null,”Tinggi : “));

sisimiring = Math.sqrt(alas*alas + tinggi*tinggi);
keliling = alas + tinggi + sisimiring;

JOptionPane.showMessageDialog(null, “Alas : ” + alas + “\nTinggi : “+tinggi+
“\nSisi Miring : “+sisimiring+”\nKeliling : “+keliling,
“SEGITIGA”,JOptionPane.INFORMATION_MESSAGE);
}
}

Jika program di atas dijalankan maka akan tampil :

Jika Alas dan Tinggi telah diinput maka akan dihasilkan output sebagai berikut :

 

Happy Coding ..




Penggunaan Scanner dan Fungsi Math dalam program Java

Pada pertemuan kali ini saya akan memberikan contoh program menghitung keliling segitiga siku-siku.

Input alas dan tinggi melalui keyboard menggunakan kelas Scanner, agar kelas Scanner dapat digunakan maka di awal program harus menyertakan perintah : “import java.util.Scanner”.

Sedangkan untuk mencari akar dalam menghitung sisi miring digunakan fungsi math sqrt(arg).

Contoh program:

import java.util.Scanner;
public class HitungKelilingSegitiga {

public static void main(String[] args) {
double alas, tinggi, sisimiring, keliling;

// Buat objek Scanner
Scanner scan = new Scanner(System.in);

System.out.println(“Menghitung Keliling Segitiga”);

System.out.print(“Alas : “);
alas = scan.nextDouble();

System.out.print(“Tinggi : “);
tinggi = scan.nextDouble();

sisimiring = Math.sqrt(alas*alas + tinggi*tinggi);
keliling = alas + tinggi + sisimiring;

System.out.println(“Sisi Miring = ” + sisimiring);
System.out.println(“Keliling = ” + keliling);

// Tutup object Scanner

scan.close();

}

}

Output yang dihasilkan adalah sebagai berikut:

Menghitung Keliling Segitiga
Alas : 3
Tinggi : 4
Sisi Miring = 5.0
Keliling = 12.0

 

Happy Coding ..

 




Metode Fuzzy Logic (Logika Fuzzy) untuk Mendukung Keputusan

 Fuzzy Logic (Logika Fuzzy)

  1. Himpunan Crisp Dan Himpunan Fuzzy 

Himpunan Crisp didefinisikan oleh item-item yang ada pada himpunan itu. Jika a anggota dari A, maka nilai yang berhubungan dengan a adalah 1. Namun, jika a bukan anggota dari A, maka nilai yang berhubungan dengan a adalah 0. Notasi A = {x P(x)} menunjukkan bahwa A berisi item x dengan P(x) benar. Jika XA merupakan fungsi karakteristik A dan properti P, maka dapat dikatakan bahwa P(x) benar, jika dan hanya jika XA(x) = 1.

Himpunan fuzzy didasarkan pada gagasan untuk memperluas jangkauan fungsi karakteristik sedemikian sehingga fungsi tersebut akan mencakup bilangan real pada interval [0,1]. Nilai keanggotaannnya menunjukkan bahwa suatu item dalam semesta pembicaraan tidak hanya berada pada 0 atau 1, namun juga nilai yang terletak diantaranya. Dengan kata lain, nilai kebenaran suatu item tidak hanya bernilai benar atau salah. Nilai 0 menunjukkan salah, nilai 1 menunjukkan benar dan masih ada nilai-nilai yang terletak antara benar dan salah. Beberapa hal yang perlu diketahui dalam memahami sistem fuzzy :

  • Variabel Fuzzy. Merupakan variabel yang hendak dibahas dalam suatu sistem fuzzy, contoh : umur, temperature, permintaan dan sebagainya.
  • Himpunan Fuzzy. Merupakan suatu grup yang mewakili suatu kondisi atau keadaan tertentu dalam suatu variabel fuzzy,
    • contoh : –   Variabel umur dibagi menjadi 3 himpunan fuzzy : muda, parobaya, tua.

–  Variabel temperature ibagi menjadi 5 himpunan fuzzy : dingin, sejuk, normal, hangat dan panas.

  • Semesta Pembicaraan. Keseluruhan nilai yang diperbolehkan untuk dioperasikan dalam suatu variabel fuzzy, contoh : semesta pembicaraan untuk variabel temperature : [0 40].
  • Domain. Keseluruhan nilai yang diinginkan dalam semesta pembicaraan dan boleh dioperasikan dalam suatu himpunan fuzzy.
  • Nilai Ambang Alfa-Cut. Merupakan nilai ambang batas domain yang didasarkan pada nilai keanggotaan untuk tiap-tiap domain, dimana α – cut memiliki 2 kondisi :    α -cut lemah dapat dinyatakan sebagai : μ (x) ≥ α,  α – cut kuat dapat dinyatakan sebagai : μ (x) > α [2]

                     

  1. Fungsi Keanggotaan 

Fungsi Keanggotaan. Fungsi keanggotaan (membership function) adalah suatu kurva yang menunjukkan pemetaaan titik-titik input data kedalam nilai keanggotaannya (sering disebut dengan derajat keanggotaan) yang memiliki interval antara 0 sampai 1.

Fungsi keanggotaan dapat dibuat kedalam beberapa bentuk kurva diantanya,

a. Representasi Linier

Pada representasi linier, permukaan digambarkan sebagai suatu garis lurus. Bentuk ini paling sederhana dan menjadi pilihan yang baik untuk mendekati suatu konsep yang kurang jelas. Ada 2 kemungkinan keadaan himpunan fuzzy yang linier. Pertama, kenaikan himpunan dimulai pada nlai dominan yang memiliki derajat keanggotaan nol [0] bergerak kekanan menuju ke nilai domain yang memiliki derajat keanggotaan lebih tinggi.

b. Representasi Kurva Segitiga

Kurva segitiga pada dasarnya merupakan gabungan antara 2 garis linier

 

 

  1. Sistem Interferensi Fuzzy

Metode Penalaran Monoton

Metode penalaran monoton digunakan sebagai dasar untuk teknik implikasi fuzzy. Meskipun penalaran dengan menggunakan teknik ini sudah jarang sekali digunakan, namun terkadang masih digunakan untuk penskalaan fuzzy. Jika 2 daerah direlasikan dengan implikasi sederhana sebagai berikut:

IF x is A THEN y is B

Transfer fungsi:

y = f ( (x , A) , B )

Maka sistem fuzzy dapat berjalan tanpa harus melalui komposisi dan dekomposisi fuzzy. Nilai output dapat diestimasi secara langsung dari derajat keanggotaan yang berhubungan dengan antesendennya.

 

  1. Metodologi Desain Sistem Fuzzy

Untuk melakukan perancangan suatu sistem fuzzy perlu dilakukan beberapa tahapan berikut ini :

a. Mendefinisikan karakteristik model secara fungsional dan operasional.

Pada bagian ini perlu diperhatikan karakteristik apa saja yang dimiliki oleh sistem yang ada, kemudian dirumuskan karakteristik operasi-operasi yang akan digunakan pada model fuzzy.

b. Melakukan dekomposisi variabel model menjadi himpunan fuzzy

Dari variabel-variabel yang telah dirumuskan, dibentuk himpunan-himpunan fuzzy yang berkaitan tanpa mengesampingkan domainnya.

c. Membuat aturan fuzzy

Aturan pada fuzzy menunjukkan bagaimana suatu sistem beroperasi. Cara penulisan aturan secara umum adalah : If (X1 is A1) . … . (Xa is An) Then Y is B dengan ( . ) adalah operator (OR atau AND), X adalah scalar dan A adalah variabel linguistik.

 

Hal yang perlu diperhatikan dalam membuat aturan adalah :

– Kelompokkan semua aturan yang memiliki solusi pada variabel yang sama.

–  Urutkan aturan sehingga mudah dibaca.

– Gunakan identitas untuk memperlihatkan struktur aturan.

–  Gunakan penamaan yang umum untuk mengidentifikasi variabel-variabel pada kelas yang  berbeda.

–  Gunakan komentar untuk mendeskripsikan tujuan dari suatu atau sekelompok aturan.

–  Berikan spasi antar aturan.

–  Tulis variabel dengan huruf-huruf besar-kecil, himpunan fuzzy dengan huruf besar dan elemen-elemen bahasa lainnya dengan huruf kecil.

 d. Menentukan metode defuzzy untuk tiap-tiap variabel solusi

Pada tahap defuzzy akan dipilih suatu nilai dari suatu variabel solusi yang merupakan konsekuen dari daerah fuzzy. Metode yang paling sering digunakan adalah metode centroid, metode ini memiliki konsistensi yang tinggi, memiliki tinggi dan lebar total daerah fuzzy yang sensitif.

 

  1. Metode Tsukamoto

Pada Metode Tsukamoto, setiap konsekuen pada aturan yang berbentuk IF-Then harus direpresentasikan dengan suatu himpunan fuzzy dengan fungsi keanggotaan yang monoton. Sebagai hasilnya, output hasil inferensi dari tiap-tiap aturan diberikan secara tegas (crisp) berdasarkan α-predikat (fire strength). Hasil akhirnya diperoleh dengan menggunakan rata-rata terbobot.

 

Referensi:

Kusumadewi, Sri (2003). Artificial Intelligence (Teknik dan Aplikasinya). Edisi Pertama. Penerbit Graha Ilmu, Jakarta.

T. Sutojo, E. Mulyanto dan V. Suhartono, 2011. “Kecerdasan Buatan”, Ed. I, Penerbit ANDI, Yogyakarta.

Kusumadewi. S dan H. Purnomo. (2004). Aplikasi Logika Fuzzy Untuk Mendukung Keputusan. Graha Ilmu, Yogyakarta.