RSS
Tidak ada Yang Tidak Mungkin Untuk Orang Yang Mau Berusaha
Text Select Onion Kun

Sabtu, 20 November 2010

menentukan jenis relasi himpunan dengan java

nah mudah mudahan bermanfaat bwat smuanya ..

langsung aja ya ...
tolong perhatikan lebih detail dikarenakan pada Java sensitive terhadap sesuatu yang dia anggap berbeda dari sistem induknya 

Kita akan membuat program untuk menentukan relasi yang dibentuk oleh 2 buah himpunan, dengan menggunakan program java

import java.io.*;
class relasi
{private static BufferedReader radzi = new BufferedReader (new InputStreamReader (System.in));
public static void main(String[] args) throws Exception{
System.out.print("masukan banyaknya himpunan A :");
String s = radzi.readLine();
int x = Integer.parseInt(s);
int himpA [] = new int [x];
for(int i = 0;i
{System.out.print("masukan element himpunan A ke - " +(i+1)+" :");
String a = radzi.readLine();
himpA [i] = Integer.parseInt(a);
}
System.out.print("A = {");
for (int i=0;i
{
System.out.print(himpA[i]);
if(i != x-1)
System.out.print(",");
}
System.out.println("}");
System.out.println();
System.out.println(" jenis relasi");
System.out.println("=================");
System.out.println("1. Reflektif Sederhana");
System.out.println("2. Simetris Sederhana");
System.out.println("3. Transitif Sederhana");
System.out.println("======================");
System.out.print("Masukan pilihan anda : ");
String r = radzi.readLine();
int d = Integer.parseInt(r);
switch (d)
{
case 1:
System.out.print("relasi R = { ");
for (int i= 0;i
{
for (int j =0;j
{
if (himpA [i]== himpA[j])
{
System.out.print("(" +himpA [i]+ "," +himpA [j]+ ")");
if (j != x-1)
System.out.print(",");
}
}
}
System.out.println("}");
break;

case 2:
System.out.print("relasi R = { ");
for (int i= 0;i
{
for (int j =0;j
{
if (himpA [i]!= himpA[j])
{
System.out.print("(" +himpA [i]+ "," +himpA [j]+ ")");
if (j != x-1)
System.out.print(",");
}}}
System.out.println("}");
break;

case 3 :
System.out.print("relasi R = { ");
for (int i= 0;i
{
for (int j =0;j
{
if (himpA [i]!= himpA[j])
{
if(i%2!=0)
{
if(j%2==0)
{
System.out.print("(" +himpA [i]+ "," +himpA [j]+ ")");
if (j != x-1)
System.out.print(",");
}
else
{
if(j%2 != 0)
{
System.out.print("(" +himpA [i]+ "," +himpA [j]+ ")");
if (j != x-1)
System.out.print(",");
}
}
}
}
}
}
System.out.println("}");
break;
default :
System.out.print("pilihan tidak ada dalam aftar");
break;
}
}
}
Listing diatas adalah listing dari beberapa sifat – sifat relasi, diantaranya :
- Sifat reflektif yang artinya untuk setiap anggota haru merupakan gabungan 2 anggota himpunan yang sama.dengan kata lain anggota untuk sifat ini, harus beranggotakan (a,a)
- Sifat simetris yang artinya untuk stiap yang anggota himpunan,hasilnya tidak boleh ada anggota dati relasi yang memiliki nilai (a,a), dan juga nila(a,b) tidak sama dengan nilai dari (b,a)
- Sifat transitif yang artinya tiga dari kumpulan bilangan harus merupakan anggota dari relasi R

Contoh : R = “x habis membagi y” pada A = {1,2,3}
- Berlaku sifat treflektif karena setiap elemant dari A berlaku (a,a) anggota relasi R. yaitu (1,1),(2,2),(3,3).
- berlaku sifat simetris karena bias dibentuk anggota (1,2),(2,1),(1,3),(3,1)…
- Tidak transitif karena seharusnya (a,b) anggota R, (b,c)anggota R, dan (b,c) anggota R juga. Tetapi sini. Anggota dari relasi R adalah { (1,2),(2,4)}. (1,2) anggota R, (2,4) anggota R, tetapi (1,4) bukan anggota dari relasi R

Diatas adalah sifat – sifat dari relasi yang akan telah buat programnya, berikut adalah logika dari program yang kiata buat :

• import java.io.*;
Statement diatas menjelaskan bahwa kita akan menggunakan java.io package mengandung kelas-kelas yang memungkinkan program untuk melakukan input dan output data.
• class relasi
nama class nya adalah relasi
• BufferedReader radzi = new BufferedReader (new radziStreamReader(System.in));
maksud statement diatas adalah variable yang di gunakan adalah BufferedReader yang digunakan untuk menginput data string ke dalam program
• public static void input() throws Exception
maksud statement ini adalah untuk memnungkin kan terjadi kesalahan dalam menginput data.
• System.out.print("masukan banyaknya himpunan A :");
String s = radzi.readLine();
int x = Integer.parseInt(s);
int himpA [] = new int [x];

statement di atas maksud nya adalah perintah untuk memasukan inputan dengan perintah nya adalah “masukan banyaknya himpunan A:” yang inputan tersebut adalah bentuk integer yg di lambang kan dengan x. himpA adalah x.
• for(int i=0; i
{
System.out.print("masukkan elemn A ke-"+(i+1)+" :");
String a=input.readLine();
himpA[i]=Integer.parseInt(a);
}
Statement ini adalah perintah pengulangan dalam penginputan himpunan A dengan syarat apakah i-=0 dan i
• System.out.print("A={");
for(int i=0;i
{
System.out.print(himpA[i]);
if(i!=x-1)
System.out.print(",");
}
System.out.println("}");
ini adalah perintah untuk mencetak kata “A={“ kemudian perintah pengulangan dengan syarat apakah i=0 dan i
● Lalu kita akan menentukan pilihan , sifat maan yang akan kita gunakan untuk mengolah data – data yang telah kita masukan :
System.out.println("1. Reflektif Sederhana");
System.out.println("2. Simetris Sederhana");
System.out.println("3. Transitif Sederhana");
System.out.println("======================");
System.out.print("Masukan pilihan anda : ");
String r = radzi.readLine();
int d = Integer.parseInt(r);
switch (d)
lalu pilihan yang kita masukan akan dismpan dalam variabel d, dan akan dieksekusi sesuai dengan pilihan yang kita masukan dengan menggunakan printah switch (d)

Case 1:
System.out.print("relasi R = { ");
for (int i= 0;i
{
for (int j =0;j
{
if (himpA [i]== himpA[j])
{System.out.print("(" +himpA [i]+ "," +himpA [j]+ ")");
if (j != x-1)
System.out.print(",");
}
}
}
System.out.println("}");
}

Ini adalah perintah untuk mencari dan mencetak relasi nya. Di mulai dari mencentak kata “relasi R = {“ dan slanjutnya syarat relasi dengan pengulangan, apakah i=0?? Dan i

Sesuai dengan sifat relasi nomor 1, yaitu reflektif yang artinya anggota hanay bernilai (a,a), sehingga kita menggunakan perintah if (himpA [i]== himpA[j]) , jadi nilai – nilai yang akan tercetak hanyalah apabila nilai dari himpA yang ke i bernilai sama dengan himpa yang ke j.
case 2:
System.out.print("relasi R = { ");
for (int i= 0;i
{
for (int j =0;j
{
if (himpA [i]!= himpA[j])
{
System.out.print("(" +himpA [i]+ "," +himpA [j]+ ")");
if (j != x-1)
System.out.print(",");
}}}
System.out.println("}"); break;
Pilihan kedua dari menu diatas adalah sifat simtris jadi kita harus membuat listing dengan karakteristik dari sifat tersebut.
- Membuat perintah for agar anggota himpunan dapat ditentukan, dengan nama variabel i.variabel i bernialai awal = 0, jika nilai i masih kurang dari nilai x(nilai awalyang tadi kita telah masukan) maka akan memproses variabel j.
- Jika nilai dari varibel j, masih kurang juga dari nilai x, maka perintha if akan dijalankan,
- Jika nilai dari himpA yang ke – i tidak sama dengan nilai dari himpA yang ke j, maka akan mencetak nilai dari himpA yang ke -I , nilai dari himpA yang ke- j.
- Lalu jika nilai j tidak sama dengan nilai x-1 maka akan mencetak koma. Lalu akan kembali lagi keatas dengna nilai i bertambah 1, namun jika nilai j sudah = nilai x-1 maka akan mencetak }, dan dan program akan berhenti, dengan perintah bresk, yang artinya case 2 telah selsai
Sesuai dengan karakteristiknya kita membuat, apabila nilai dari himpA yang ke i tidak sama dengan himpA yang ke j(agar tidak diahailkan anggota relasi dengan elemant yang sama) maka nilai itulah yang menjadi hasil dari karakteeristik sifat ini, kita telah membuatnya dengan perintah :

if (himpA [i]!= himpA[j])
{
System.out.print("(" +himpA [i]+ "," +himpA [j]+ ")");

case 3 :
System.out.print("relasi R = { ");
for (int i= 0;i
{
for (int j =0;j
{
if (himpA [i]!= himpA[j])
{
if(i%2!=0)
{
if(j%2==0)
{
System.out.print("(" +himpA [i]+ "," +himpA [j]+ ")");
if (j != x-1)
System.out.print(",");
}
else
{
if(j%2 != 0)
{
System.out.print("(" +himpA [i]+ "," +himpA [j]+ ")");
if (j != x-1)
System.out.print(",");
}
}
}
}
}
}
System.out.println("}");
break;


Dalam case 3 ini, kita akan menjalan kan sifat transitif, hampir sama dengan sifat simetris, dalam listing ini kita menambahkan keyword if, agar hanya beberapa angka saja yang akan dicetak,

- Dalam if yang pertama, jika nilai dari i dibagi dengan 2 tidak bersisa 0( bilangan ganjil) maka baru akan masuk kedalam if yang ke 2
- Dalam if yang ke 2 ini kita akan menyeleksi nilai dari j, apabila nilai j dibagi dengan 2, menyisakan 0(bilangan genap), maka nilai dari himpA yang ke i dan nilai dari himpA yang ke j, baru akan di cetak.
- Namun karena karakteristik dari sifat ini mengharuskan element dari anggota yang pertama harus bisa membagi habis anggota kedua element pertama, dan anggota ke 2 pada element manapun boleh bernilai apa saja, jika harus menambahkan keyword else, untuk mensortir nialai dari variabel j, artinya nilai dari variabel j, baik itu bilangan genap, ataupun ganjil, nilainya akan tetap dicetak, tetapi dengan penempatan tempat anggota yang berbeda

Kita menambahkan keyword if dan else, agar nilai – nilai dari variabel i dan j yang tercetak bisa sesuai dengan karakteristik dari difat ini.


default :

artinya, pilihan awal yang kita masukan tidak ada didalam program yang kita buat, dalam listing ini jika kita memasukan pilihan yang tidak ada didalam program maka akan mngeluaerkan tukisan :“ tidak ada dalam daftar “


Saat menentukan sifat mana yang akan kita gunakan, kita memilih pilihan ke 4, yang tidak ada dalam daftar menu, maka default inilah yang akan dijalankan.

Tidak ada komentar:

Posting Komentar