Blogger Tips and TricksLatest Tips For BloggersBlogger Tricks

Program untuk Mencari Fungsi


Listing Program:

import java.io.*;
import java.util.Scanner;
public class fungsi
{
                public static void main (String args[]) throws Exception{
                Scanner input = new Scanner(System.in);
                int anggotaA;
                int anggotaB;

                //masukkan anggota a
                System.out.print("\nmasukan Banyaknya AnggotaA : ");
                anggotaA = input.nextInt();
                int [] a = new int [anggotaA];
                System.out.println("Masukkan AnggotaA : ");
                for(int i=0 ; i <= anggotaA - 1 ; i++)
                                {
                   int L = i + 1;
                                System.out.print("Elemen ke-["+L+"] :");
                                 a[i] = input.nextInt();
                                }
               
               
                //masukkan anggota b
                System.out.print("\nmasukkan banyaknya AnggotaB : ");
                anggotaB = input.nextInt();
                int [] b = new int [anggotaB];
                System.out.println("Masukkan AnggotaB : ");
                for(int i=0 ; i <= anggotaB - 1 ; i++)
                                {
                    int L = i + 1;
                                 System.out.print("Elemen ke-["+L+"] :");
                                 b[i] = input.nextInt();
                                }
                System.out.println("\n");
               
                //tampil anggota a
                System.out.print("Anggota Himpunan A = { ");
                for(int i=0;i<=anggotaA - 1;i++){
                System.out.print(a[i]+"   ");
                }
                System.out.println("}");
               
                //tampil anggota b
                System.out.print("Anggota Himpunan B = { ");
                for(int i=0;i<=anggotaB - 1 ;i++){
                System.out.print(b[i]+ "  ");
                }
                System.out.println("}");

                //relasi
                int jumlahAB = anggotaA + anggotaB;
                String[] e = new String[jumlahAB];
                System.out.print("masukkan banyaknya relasi [ <= "+jumlahAB+" ] : " );
                int banyak = input.nextInt();
                char[] f = new char[banyak]; //array domain
                char[] g = new char[banyak]; //array kodomain
                char[] d = new char[banyak]; //array range
               
               
System.out.println("inputkan dengan cara  A,B ");
                DataInputStream bl = new DataInputStream(System.in);
                //int nb=0;
                try{
                for(int i=0;i<=banyak-1;i++)
                {
                e[i] = bl.readLine();
                }
               
                //mengambil karakter  
                for(int i=0;i<=banyak-1;i++)
                                {
                                e[i].getChars(0,1,f,i);
                                e[i].getChars(2,3,g,i);
                                }
                }catch (Exception ex) { System.out.println("ada kesalahan " );}
                //cek fungsi
                boolean cek1=false;
                boolean cek2=false;
                boolean cek3=false;
                for(int i=0;i<=banyak-1;i++)        /*dikatakan fungsi apabila anggota domain hanya mempunyai tepat 1 pasangan pada kodomain, maka dapat disimpulkan apabila domain memiliki pasangan lebih dari satu maka dia bukan fungsi, logikanya jika ditemukan nilai yg sama pada domain, maka bukan fungsi dan kemudian akan memberikan                               value untuk varibel cek1 adalah true*/
                {                              
                for(int j=i+1;j<=banyak-1;j++)  
                                {                             
                                if(f[i]==f[j])                       
                                                cek1=true;                         
                                    break;                              
                                }                          
                }                             
               
                for(int i=0;i<=banyak-1;i++)        /* meindikasikan fungsi pada, logikanya , jika ditemukan nilai yang sama pada kodomain maka dia fungsi pada*/     
                   {
                                for(int j=i+1;j<=banyak-1;j++)
                                                {
                                                if(g[i]==g[j])
                                                                cek2=true;
                                                    break;
                                                }
                                }             
                                                if((cek1==true)||(banyak!=anggotaA))
                                    {
                                                System.out.println("\nnilai yang diinputkan adalah bukan fungsi");
                                                cek3=true;   /* variabel ini digunakan untuk mengindikasikan pencetakan range dan domain, jika nilai bernilai "TRUE" maka  tidak akan dilakukan pencetakan nilai range dan domain*/
                                                }
                                                else
                                    {
                          System.out.println("nilai yang diinputkan adalah fungsi");
                                      if (cek2==true)
                                                  {System.out.println("merupakan fungsi pada");}
                                      else
                                      System.out.println("merupakan fungsi satu-satu");
                                    }
                               
                                if(cek3!=true)  // kondisi untuk dilakukan pencetakan range dan domain iya atau tidak
                                {
                                //Range
                                int x=0;
                                System.out.print("\nRange = { ");
                                for(int i=0;i<=banyak-1;i++)
                                                {
                                                for( int j=i+1;j<=banyak-1;j++)
                                                                {
                                                                 if(g[i]==g[j])
                                                                 ++i;
                                                                }
                                                d[x]=g[i];
                                                x++;
                                                }
       
                                                for (int i=0;i<x;i++ )
                                                {
                                                                System.out.print(d[i]+"  ");
                                                }
                                                System.out.println("}");
                                //domain
                                 System.out.print("Domain = { ");
                                 for(int i=0;i<=anggotaA-1;i++){
                                 System.out.print(a[i]+"   ");
                                 }
                                 System.out.println("}");
                                }
                }
}
Logika Program
Penjelasan program     :
Dengan menggunakan program ini kita bisa mengetahui apakah nilai yang diinputkan adalah suatu fungsi atau bukan. Pertama-tama kita harus membuat suatu program sesuai dengan listing di atas.
import java.io.*;
import java.util.Scanner;
public class fungsi
{
Sintaks ini merupakan pengontrolan kesalahan semua kelas yang berada pada suatu paket library java.io dan sebuah pendeklarasian variabel yang kita gunakan untuk membaca system input dalam program java. Tanpa adanya method ini program tidak dapat membaca inputan nilai.
Import java.util.Scanner digunakan untuk mendeklarasikan suatu system input agar kita dapat menggunakan fungsi utilitas java.
Program ini memiliki nama class fungsi. Class fungsi berguna untuk mendeklarasikan method-method yang ada dalam program tersebut. Nama class harus sama dengan nama filenya agar program dapat mengeksekusi semua method yang ada dan disimpan dengan nama fungsi.java. Dan tambahkan tanda kurung buka kurawal satu kali untuk memulai program tersebut.
                public static void main (String args[]) throws Exception{
                Scanner input = new Scanner(System.in);
                int anggotaA;
                int anggotaB;
Sintaks ini merupakan method utama dalam pemrograman java. Digunakan untuk melakukan pengontrolan pada bagian-bagian program lainnya atau disebut juga mekanisme penanganan eksepsi. Dan tambahkan juga buka kurung kurawal satu kali.

Scanner input… ini sama seperti DataInputStream hanya saja scanner itu biasa digunakan untuk beberapa method. input merupakan pendeklarasian objek dari fungsi Scanner, agar dapat melakukan inputan. System.in berfungsi untuk menangani pembacaan dari keyboard.
Selanjutnya adalah pendeklarasian variabel array anggotaA dan anggotaB yang bertipe data int.  
                //masukkan anggota a
                System.out.print("\nmasukan Banyaknya AnggotaA : ");
                anggotaA = input.nextInt();
                int [] a = new int [anggotaA];
                System.out.println("Masukkan AnggotaA : ");
                for(int i=0 ; i <= anggotaA - 1 ; i++)
                                {
                   int L = i + 1;
                                System.out.print("Elemen ke-["+L+"] :");
                                 a[i] = input.nextInt();
                                }
Sintaks            ini berisi komentar untuk memasukkan anggota a yang tidak akan berpengaruh pada eksekusi program. Kemudian akan mencetak perintah di baris selanjutnya “ masukan Banyaknya AnggotaA : ” dan anggotaA akan menampilkan sebuah perintah penginputan data. Sintaks ini merupakan pendeklarasian variabel array a dengan objek anggotaA yang bertipe data int dan memiliki indeks dengan elemen bebas. Hal itu tergantung pada berapa banyak anggotaA yang tadi sudah kita masukan.
Sintaks selanjutnya akan mencetak “Masukkan AnggotaA : “ ke baris selanjutnya. Lalu digunakan perulangan for untuk menampilkan elemen-elemen dan meminta kita untuk memasukkan nilai dari elemen-elemen tersebut. Setiap nilai yang diinputkan akan bertambah 1.
                //masukkan anggota b
                System.out.print("\nmasukkan banyaknya AnggotaB : ");
                anggotaB = input.nextInt();
                int [] b = new int [anggotaB];
                System.out.println("Masukkan AnggotaB : ");
                for(int i=0 ; i <= anggotaB - 1 ; i++)
                                {
                    int L = i + 1;
                                 System.out.print("Elemen ke-["+L+"] :");
                                 b[i] = input.nextInt();
                                }
                System.out.println("\n");
Sintaks            ini juga berisi komentar untuk memasukkan anggota b yang tidak akan berpengaruh pada eksekusi program. Kemudian akan mencetak perintah di baris selanjutnya “ masukan Banyaknya AnggotaB : ” dan anggotaB akan menampilkan sebuah perintah penginputan data. Sintaks selanjutnya adalah pendeklarasian variabel array b dengan objek anggotaB yang bertipe data int dan memiliki indeks dengan elemen bebas. Hal itu tergantung pada berapa banyak anggotaB yang tadi sudah kita masukan.
Sintaks selanjutnya akan mencetak “Masukkan AnggotaB : “ ke baris selanjutnya. Lalu digunakan perulangan for untuk menampilkan elemen-elemen dan meminta kita untuk memasukkan nilai dari elemen-elemen tersebut. Setiap nilai yang diinputkan akan bertambah 1. Dan sintaks tersebut akan mencetak enter  ke baris selanjutnya.
                //tampil anggota a
                System.out.print("Anggota Himpunan A = { ");
                for(int i=0;i<=anggotaA - 1;i++){
                System.out.print(a[i]+"   ");
                }
                System.out.println("}");
Sintaks ini berisi komentar untuk menampilkan anggota a yang tidak akan berpengaruh pada eksekusi program. Dan akan mencetak perintah, misalnya Anggota Himpunan A = { 1 2 4 5  nilai tersebut merupakan anggota  dari himpunan A yang tadi sudah diinputkan sebanyak 4 elemen. Kemudian akan mencetak tanda } untuk menutup sintaks tersebut.
//tampil anggota b
                System.out.print("Anggota Himpunan B = { ");
                for(int i=0;i<=anggotaB - 1 ;i++){
                System.out.print(b[i]+ "  ");
                }
                System.out.println("}");
Sintaks ini juga sama dengan sintaks di atas yaitu berisi komentar untuk menampilkan anggota b yang tidak akan berpengaruh pada eksekusi program. Dan akan mencetak perintah, misalnya Anggota Himpunan B = { 2 3 6 7 8  nilai tersebut merupakan anggota  dari himpunan B yang tadi sudah diinputkan sebanyak 5 elemen. Kemudian akan mencetak tanda } untuk menutup sintaks tersebut.
                //relasi
                int jumlahAB = anggotaA + anggotaB;
                String[] e = new String[jumlahAB];
                System.out.print("masukkan banyaknya relasi [ <= "+jumlahAB+" ] : " );
                int banyak = input.nextInt();
                char[] f = new char[banyak]; //array domain
                char[] g = new char[banyak]; //array kodomain
                char[] d = new char[banyak]; //array range
Sintaks            ini berisi komentar untuk menginformasikan kepada kita tentang sebuah relasi. Sintaks selanjutnya merupakan pendeklarasian variabel array yang bertipe data int bernama jumlahAB digunakan untuk mendeklarasikan dan mengalokasikan objek anggotaA + anggotaB.
String[] e adalah pendeklarasian object reference dari class String yang akan digunakan untuk mengakses class String dengan menggunakan keyword new dan membuat objek jumlahAB.
Kemudian akan mencetak perintah untuk memasukkan banyaknya relasi dari variabel array jumlahAB. Sintaks selanjutnya adalah pendeklarasian variabel array dengan objek banyak agar dapat melakukan inputan.
Objek f merupakan pendeklarasian variabel array yang menggunakan operator new dengan objek banyak untuk mencari nilai domain yang bertipe data char. Sama seperti objek f, objek g dan d merupakan pendeklarasian variabel array yang bertipe data char dengan objek banyak namun objek g digunakan untuk mencari nilai kodomain sedangkan objek d digunakan untuk mencari nilai range dari suatu fungsi tersebut dengan menggunakan operator new.
                System.out.println("inputkan dengan cara  A,B ");
                DataInputStream bl = new DataInputStream(System.in);
                //int nb=0;
                try{
                for(int i=0;i<=banyak-1;i++)
                {
                e[i] = bl.readLine();
                }
Sintaks ini akan mencetak perintah untuk menginputkan suatu nilai dengan ketentuan A,B jadi elemen-elemen yang ada di anggota himpunan a harus dipasangkan dengan anggota himpunan b.
DataInputStream merupakan method yang berfungsi untuk membaca inputtan data bilangan. Terdapat komentar untuk jumlah anggota b yang bertipe data int nb=0. Statement try berfungsi untuk menangkap suatu eksepsi java, blok yang diperkirakan terdapat kesalahan. Lalu kita menggunakan perulangan for yang bertipe data integer dengan nilai i=0 dan nilai i lebih kecil sama dengan objek banyak-1 serta nilai i yang selalu bertambah. Sintaks yang terakhir menjelaskan bahwa objek e pada indeks i memberikan nilai balik pada kelas bilangan yang bertipe data String, menyatakan sebuah baris data yang telah dibaca. Tambahkan tanda kurung tutp kurawal satu kali.
                //mengambil karakter  
                for(int i=0;i<=banyak-1;i++)
                                {
                                e[i].getChars(0,1,f,i);
                                e[i].getChars(2,3,g,i);
                                }
                } catch (Exception ex)
{
System.out.println("ada kesalahan " );
}
Terdapat komentar untuk mengambil karakter dengan menggunakan perulangan for, dengan sintaks getChars(…...); berfungsi untuk menyalin karakter objek f dan g pada StringBuffer dimulai dari posisi i ke array yang dirujuk oleh suatu karakter. Selanjutnya adalah statement catch jika terjadi kesalahan bisa ditangkap dengan eksepsi catch yaitu saat terjadi eksepsi Exception akan mencetak statement “ada kesalahan”. Tambahkan tanda kurung tutup kurawal satu kali.
//cek fungsi
                boolean cek1=false;
                boolean cek2=false;
                boolean cek3=false;
                for(int i=0;i<=banyak-1;i++)        /*dikatakan fungsi apabila anggota domain hanya mempunyai tepat 1 pasangan pada kodomain, maka dapat disimpulkan apabila domain memiliki pasangan lebih dari satu maka dia bukan fungsi, logikanya jika ditemukan nilai yg sama pada domain, maka bukan fungsi dan kemudian akan memberikan                               value untuk varibel cek1 adalah true*/
                {                              
                for(int j=i+1;j<=banyak-1;j++)  
                                {                             
                                if(f[i]==f[j])                       
                                                cek1=true;                         
                                    break;                              
                                }                         
                }                             
Selanjutnya merupakan komentar untuk mengecek suatu fungsi. Terdapat ekspresi Boolean yang menghasilkan nilai false pada objek cek1, 2 dan 3. Lalu terjadi perulangan for untuk objek dengan nilai i dan j. Apabila domain memiliki pasangan lebih dari satu maka dia bukan fungsi dan jika ditemukan nilai yang sama pada domain, maka bukan fungsi dan kemudian akan memberikan value untuk variable cek1 adalah true. Pernyataan break digunakan untuk mengendalikan eksekusi ke akhir pernyataan if.
                for(int i=0;i<=banyak-1;i++)        /* meindikasikan fungsi pada, logikanya , jika ditemukan nilai yang sama pada kodomain maka dia fungsi pada*/     
                   {
                                for(int j=i+1;j<=banyak-1;j++)
                                                {
                                                if(g[i]==g[j])
                                                                cek2=true;
                                                    break;
                                                }
                                }             
Disini juga terjadi perulangan for untuk objek g dengan nilai i dan j. Apabila domain memiliki pasangan satu maka dia fungsi pada dan jika ditemukan nilai yang sama pada kodomain, maka dia fungsi pada dan kemudian akan memberikan value untuk variable cek2 adalah true. Pernyataan break digunakan untuk mengendalikan eksekusi ke akhir pernyataan if.
                                                if((cek1==true)||(banyak!=anggotaA))
                                    {
                                                System.out.println("\nnilai yang diinputkan adalah bukan fungsi");
                                                cek3=true;   /* variabel ini digunakan untuk mengindikasikan pencetakan range dan domain, jika nilai bernilai "TRUE" maka  tidak akan dilakukan pencetakan nilai range dan domain*/
                                                }
                                           else
                                    {
                          System.out.println("nilai yang diinputkan adalah fungsi");
                                      if (cek2==true)
                                                  {System.out.println("merupakan fungsi pada");
}
                                                 else
                                      System.out.println("merupakan fungsi satu-satu");
                                    }
                               
                                if(cek3!=true)  // kondisi untuk dilakukan pencetakan range dan domain iya atau tidak
                                {
Sintaks tersebut menjelaskan jika variable cek1 bernilai true maka banyak factorial sama dengan anggotaA dan akan mencetak pernyataan nilai yang diinputkan adalah fungsi. Kemudian variable cek2 akan bernilai true dan mencetak pernyataan apakah merupakan fungsi pada atau fungsi satu-satu. Dan variable cek3 merupakan suatu kondisi untuk dilakukan pencetakan range dan domain iya atau tidak.

                               

//Range
                                int x=0;
                                System.out.print("\nRange = { ");
                                for(int i=0;i<=banyak-1;i++)
                                                {
                                                for( int j=i+1;j<=banyak-1;j++)
                                                                {
                                                                 if(g[i]==g[j])
                                                                 ++i;
                                                                }
                                                d[x]=g[i];
                                                x++;
                                                }
       
                                                for (int i=0;i<x;i++ )
                                                {
                                                                System.out.print(d[i]+"  ");
                                                }
                                                System.out.println("}");
Sintaks tersebut berisi komentar untuk mencari nilai range, dengan variabel x yang bernilai 0 dan bertipe data int. Kemudian akan mencetak pernyataan ke samping dengan menambahkan newline pada pernyataan Range = { yaitu daerah hasil dari domain yang dipasangkan pada kodomain. Misalnya Range = { 3 6 8 7 }
Lalu sintaks selanjutnya adalah bentuk perulangan for. Disini terjadi perulangan di dalam perulangan untuk variabel i bertipe data integer yang bernilai 0, dengan objek banyak dikurangi 1 dan nilai variabel i yang selalu bertambah. Dan variabel j juga bertipe data int namun memiliki array nilai i ditambah 1 dan selalu bertambah. Jika objek g yang menunjukan array kodomain pada varabel i dan variabel j sama maka nilai i dinaikkan sebesar satu.
Sedangkan jika pada objek d memiliki variabel x sama dengan objek g pada variabel i maka akan menghasilkan nilai sebesar x. Kemudian terjadi perulangan untuk variabel i yang bertipe data int dengan nilai 0, dimana variabel i lebih kecil dari variabel x maka nilai variabel i akan selalu bertambah. Dan tambahkan tanda kurung tutup kurawal.

//domain
                                 System.out.print("Domain = { ");
                                 for(int i=0;i<=anggotaA-1;i++){
                                 System.out.print(a[i]+"   ");
                                 }
                                 System.out.println("}");
                                }
                }
}
Sintaks ini berisi komentar untuk mencari nilai domain, akan mencetak pernyataan Domain = { dengan perulangan for yang memiliki variabel I bernilai 0 dengan nilai I lebih kecil sama dengan anggotaA yang dikurangi 1 maka nilai variabel I selalu bertambah. Lalu akan mencetak variabel array a dengan indeks I atau disebut juga daerah asal dan akan mencetak tanda }  misalnya Domain = { 1 2 4 5 } Dan diakhiri dengan tanda kurung tutup kurawal sebanyak tiga kali untuk mengakhiri sintaks program tersebut.
Setelah listing program tersebut dibuat selanjutkan disimpan dengan nama file fungsi.java sebelum di running terlebih dahulu dicompile dengan menggunakan javac fungsi.java . Dan akan menghasilkan tampilan output seperti di bawah ini.

Tampilan Output pada CMD


Listing Program:

import java.io.*;
import java.util.Scanner;
public class fungsi
{
                public static void main (String args[]) throws Exception{
                Scanner input = new Scanner(System.in);
                int anggotaA;
                int anggotaB;

                //masukkan anggota a
                System.out.print("\nmasukan Banyaknya AnggotaA : ");
                anggotaA = input.nextInt();
                int [] a = new int [anggotaA];
                System.out.println("Masukkan AnggotaA : ");
                for(int i=0 ; i <= anggotaA - 1 ; i++)
                                {
                   int L = i + 1;
                                System.out.print("Elemen ke-["+L+"] :");
                                 a[i] = input.nextInt();
                                }
               
               
                //masukkan anggota b
                System.out.print("\nmasukkan banyaknya AnggotaB : ");
                anggotaB = input.nextInt();
                int [] b = new int [anggotaB];
                System.out.println("Masukkan AnggotaB : ");
                for(int i=0 ; i <= anggotaB - 1 ; i++)
                                {
                    int L = i + 1;
                                 System.out.print("Elemen ke-["+L+"] :");
                                 b[i] = input.nextInt();
                                }
                System.out.println("\n");
               
                //tampil anggota a
                System.out.print("Anggota Himpunan A = { ");
                for(int i=0;i<=anggotaA - 1;i++){
                System.out.print(a[i]+"   ");
                }
                System.out.println("}");
               
                //tampil anggota b
                System.out.print("Anggota Himpunan B = { ");
                for(int i=0;i<=anggotaB - 1 ;i++){
                System.out.print(b[i]+ "  ");
                }
                System.out.println("}");

                //relasi
                int jumlahAB = anggotaA + anggotaB;
                String[] e = new String[jumlahAB];
                System.out.print("masukkan banyaknya relasi [ <= "+jumlahAB+" ] : " );
                int banyak = input.nextInt();
                char[] f = new char[banyak]; //array domain
                char[] g = new char[banyak]; //array kodomain
                char[] d = new char[banyak]; //array range
               
               
System.out.println("inputkan dengan cara  A,B ");
                DataInputStream bl = new DataInputStream(System.in);
                //int nb=0;
                try{
                for(int i=0;i<=banyak-1;i++)
                {
                e[i] = bl.readLine();
                }
               
                //mengambil karakter  
                for(int i=0;i<=banyak-1;i++)
                                {
                                e[i].getChars(0,1,f,i);
                                e[i].getChars(2,3,g,i);
                                }
                }catch (Exception ex) { System.out.println("ada kesalahan " );}
                //cek fungsi
                boolean cek1=false;
                boolean cek2=false;
                boolean cek3=false;
                for(int i=0;i<=banyak-1;i++)        /*dikatakan fungsi apabila anggota domain hanya mempunyai tepat 1 pasangan pada kodomain, maka dapat disimpulkan apabila domain memiliki pasangan lebih dari satu maka dia bukan fungsi, logikanya jika ditemukan nilai yg sama pada domain, maka bukan fungsi dan kemudian akan memberikan                               value untuk varibel cek1 adalah true*/
                {                              
                for(int j=i+1;j<=banyak-1;j++)  
                                {                             
                                if(f[i]==f[j])                       
                                                cek1=true;                         
                                    break;                              
                                }                          
                }                             
               
                for(int i=0;i<=banyak-1;i++)        /* meindikasikan fungsi pada, logikanya , jika ditemukan nilai yang sama pada kodomain maka dia fungsi pada*/     
                   {
                                for(int j=i+1;j<=banyak-1;j++)
                                                {
                                                if(g[i]==g[j])
                                                                cek2=true;
                                                    break;
                                                }
                                }             
                                                if((cek1==true)||(banyak!=anggotaA))
                                    {
                                                System.out.println("\nnilai yang diinputkan adalah bukan fungsi");
                                                cek3=true;   /* variabel ini digunakan untuk mengindikasikan pencetakan range dan domain, jika nilai bernilai "TRUE" maka  tidak akan dilakukan pencetakan nilai range dan domain*/
                                                }
                                                else
                                    {
                          System.out.println("nilai yang diinputkan adalah fungsi");
                                      if (cek2==true)
                                                  {System.out.println("merupakan fungsi pada");}
                                      else
                                      System.out.println("merupakan fungsi satu-satu");
                                    }
                               
                                if(cek3!=true)  // kondisi untuk dilakukan pencetakan range dan domain iya atau tidak
                                {
                                //Range
                                int x=0;
                                System.out.print("\nRange = { ");
                                for(int i=0;i<=banyak-1;i++)
                                                {
                                                for( int j=i+1;j<=banyak-1;j++)
                                                                {
                                                                 if(g[i]==g[j])
                                                                 ++i;
                                                                }
                                                d[x]=g[i];
                                                x++;
                                                }
       
                                                for (int i=0;i<x;i++ )
                                                {
                                                                System.out.print(d[i]+"  ");
                                                }
                                                System.out.println("}");
                                //domain
                                 System.out.print("Domain = { ");
                                 for(int i=0;i<=anggotaA-1;i++){
                                 System.out.print(a[i]+"   ");
                                 }
                                 System.out.println("}");
                                }
                }
}
Logika Program
Penjelasan program     :
Dengan menggunakan program ini kita bisa mengetahui apakah nilai yang diinputkan adalah suatu fungsi atau bukan. Pertama-tama kita harus membuat suatu program sesuai dengan listing di atas.
import java.io.*;
import java.util.Scanner;
public class fungsi
{
Sintaks ini merupakan pengontrolan kesalahan semua kelas yang berada pada suatu paket library java.io dan sebuah pendeklarasian variabel yang kita gunakan untuk membaca system input dalam program java. Tanpa adanya method ini program tidak dapat membaca inputan nilai.
Import java.util.Scanner digunakan untuk mendeklarasikan suatu system input agar kita dapat menggunakan fungsi utilitas java.
Program ini memiliki nama class fungsi. Class fungsi berguna untuk mendeklarasikan method-method yang ada dalam program tersebut. Nama class harus sama dengan nama filenya agar program dapat mengeksekusi semua method yang ada dan disimpan dengan nama fungsi.java. Dan tambahkan tanda kurung buka kurawal satu kali untuk memulai program tersebut.
                public static void main (String args[]) throws Exception{
                Scanner input = new Scanner(System.in);
                int anggotaA;
                int anggotaB;
Sintaks ini merupakan method utama dalam pemrograman java. Digunakan untuk melakukan pengontrolan pada bagian-bagian program lainnya atau disebut juga mekanisme penanganan eksepsi. Dan tambahkan juga buka kurung kurawal satu kali.

Scanner input… ini sama seperti DataInputStream hanya saja scanner itu biasa digunakan untuk beberapa method. input merupakan pendeklarasian objek dari fungsi Scanner, agar dapat melakukan inputan. System.in berfungsi untuk menangani pembacaan dari keyboard.
Selanjutnya adalah pendeklarasian variabel array anggotaA dan anggotaB yang bertipe data int.  
                //masukkan anggota a
                System.out.print("\nmasukan Banyaknya AnggotaA : ");
                anggotaA = input.nextInt();
                int [] a = new int [anggotaA];
                System.out.println("Masukkan AnggotaA : ");
                for(int i=0 ; i <= anggotaA - 1 ; i++)
                                {
                   int L = i + 1;
                                System.out.print("Elemen ke-["+L+"] :");
                                 a[i] = input.nextInt();
                                }
Sintaks            ini berisi komentar untuk memasukkan anggota a yang tidak akan berpengaruh pada eksekusi program. Kemudian akan mencetak perintah di baris selanjutnya “ masukan Banyaknya AnggotaA : ” dan anggotaA akan menampilkan sebuah perintah penginputan data. Sintaks ini merupakan pendeklarasian variabel array a dengan objek anggotaA yang bertipe data int dan memiliki indeks dengan elemen bebas. Hal itu tergantung pada berapa banyak anggotaA yang tadi sudah kita masukan.
Sintaks selanjutnya akan mencetak “Masukkan AnggotaA : “ ke baris selanjutnya. Lalu digunakan perulangan for untuk menampilkan elemen-elemen dan meminta kita untuk memasukkan nilai dari elemen-elemen tersebut. Setiap nilai yang diinputkan akan bertambah 1.
                //masukkan anggota b
                System.out.print("\nmasukkan banyaknya AnggotaB : ");
                anggotaB = input.nextInt();
                int [] b = new int [anggotaB];
                System.out.println("Masukkan AnggotaB : ");
                for(int i=0 ; i <= anggotaB - 1 ; i++)
                                {
                    int L = i + 1;
                                 System.out.print("Elemen ke-["+L+"] :");
                                 b[i] = input.nextInt();
                                }
                System.out.println("\n");
Sintaks            ini juga berisi komentar untuk memasukkan anggota b yang tidak akan berpengaruh pada eksekusi program. Kemudian akan mencetak perintah di baris selanjutnya “ masukan Banyaknya AnggotaB : ” dan anggotaB akan menampilkan sebuah perintah penginputan data. Sintaks selanjutnya adalah pendeklarasian variabel array b dengan objek anggotaB yang bertipe data int dan memiliki indeks dengan elemen bebas. Hal itu tergantung pada berapa banyak anggotaB yang tadi sudah kita masukan.
Sintaks selanjutnya akan mencetak “Masukkan AnggotaB : “ ke baris selanjutnya. Lalu digunakan perulangan for untuk menampilkan elemen-elemen dan meminta kita untuk memasukkan nilai dari elemen-elemen tersebut. Setiap nilai yang diinputkan akan bertambah 1. Dan sintaks tersebut akan mencetak enter  ke baris selanjutnya.
                //tampil anggota a
                System.out.print("Anggota Himpunan A = { ");
                for(int i=0;i<=anggotaA - 1;i++){
                System.out.print(a[i]+"   ");
                }
                System.out.println("}");
Sintaks ini berisi komentar untuk menampilkan anggota a yang tidak akan berpengaruh pada eksekusi program. Dan akan mencetak perintah, misalnya Anggota Himpunan A = { 1 2 4 5  nilai tersebut merupakan anggota  dari himpunan A yang tadi sudah diinputkan sebanyak 4 elemen. Kemudian akan mencetak tanda } untuk menutup sintaks tersebut.
//tampil anggota b
                System.out.print("Anggota Himpunan B = { ");
                for(int i=0;i<=anggotaB - 1 ;i++){
                System.out.print(b[i]+ "  ");
                }
                System.out.println("}");
Sintaks ini juga sama dengan sintaks di atas yaitu berisi komentar untuk menampilkan anggota b yang tidak akan berpengaruh pada eksekusi program. Dan akan mencetak perintah, misalnya Anggota Himpunan B = { 2 3 6 7 8  nilai tersebut merupakan anggota  dari himpunan B yang tadi sudah diinputkan sebanyak 5 elemen. Kemudian akan mencetak tanda } untuk menutup sintaks tersebut.
                //relasi
                int jumlahAB = anggotaA + anggotaB;
                String[] e = new String[jumlahAB];
                System.out.print("masukkan banyaknya relasi [ <= "+jumlahAB+" ] : " );
                int banyak = input.nextInt();
                char[] f = new char[banyak]; //array domain
                char[] g = new char[banyak]; //array kodomain
                char[] d = new char[banyak]; //array range
Sintaks            ini berisi komentar untuk menginformasikan kepada kita tentang sebuah relasi. Sintaks selanjutnya merupakan pendeklarasian variabel array yang bertipe data int bernama jumlahAB digunakan untuk mendeklarasikan dan mengalokasikan objek anggotaA + anggotaB.
String[] e adalah pendeklarasian object reference dari class String yang akan digunakan untuk mengakses class String dengan menggunakan keyword new dan membuat objek jumlahAB.
Kemudian akan mencetak perintah untuk memasukkan banyaknya relasi dari variabel array jumlahAB. Sintaks selanjutnya adalah pendeklarasian variabel array dengan objek banyak agar dapat melakukan inputan.
Objek f merupakan pendeklarasian variabel array yang menggunakan operator new dengan objek banyak untuk mencari nilai domain yang bertipe data char. Sama seperti objek f, objek g dan d merupakan pendeklarasian variabel array yang bertipe data char dengan objek banyak namun objek g digunakan untuk mencari nilai kodomain sedangkan objek d digunakan untuk mencari nilai range dari suatu fungsi tersebut dengan menggunakan operator new.
                System.out.println("inputkan dengan cara  A,B ");
                DataInputStream bl = new DataInputStream(System.in);
                //int nb=0;
                try{
                for(int i=0;i<=banyak-1;i++)
                {
                e[i] = bl.readLine();
                }
Sintaks ini akan mencetak perintah untuk menginputkan suatu nilai dengan ketentuan A,B jadi elemen-elemen yang ada di anggota himpunan a harus dipasangkan dengan anggota himpunan b.
DataInputStream merupakan method yang berfungsi untuk membaca inputtan data bilangan. Terdapat komentar untuk jumlah anggota b yang bertipe data int nb=0. Statement try berfungsi untuk menangkap suatu eksepsi java, blok yang diperkirakan terdapat kesalahan. Lalu kita menggunakan perulangan for yang bertipe data integer dengan nilai i=0 dan nilai i lebih kecil sama dengan objek banyak-1 serta nilai i yang selalu bertambah. Sintaks yang terakhir menjelaskan bahwa objek e pada indeks i memberikan nilai balik pada kelas bilangan yang bertipe data String, menyatakan sebuah baris data yang telah dibaca. Tambahkan tanda kurung tutp kurawal satu kali.
                //mengambil karakter  
                for(int i=0;i<=banyak-1;i++)
                                {
                                e[i].getChars(0,1,f,i);
                                e[i].getChars(2,3,g,i);
                                }
                } catch (Exception ex)
{
System.out.println("ada kesalahan " );
}
Terdapat komentar untuk mengambil karakter dengan menggunakan perulangan for, dengan sintaks getChars(…...); berfungsi untuk menyalin karakter objek f dan g pada StringBuffer dimulai dari posisi i ke array yang dirujuk oleh suatu karakter. Selanjutnya adalah statement catch jika terjadi kesalahan bisa ditangkap dengan eksepsi catch yaitu saat terjadi eksepsi Exception akan mencetak statement “ada kesalahan”. Tambahkan tanda kurung tutup kurawal satu kali.
//cek fungsi
                boolean cek1=false;
                boolean cek2=false;
                boolean cek3=false;
                for(int i=0;i<=banyak-1;i++)        /*dikatakan fungsi apabila anggota domain hanya mempunyai tepat 1 pasangan pada kodomain, maka dapat disimpulkan apabila domain memiliki pasangan lebih dari satu maka dia bukan fungsi, logikanya jika ditemukan nilai yg sama pada domain, maka bukan fungsi dan kemudian akan memberikan                               value untuk varibel cek1 adalah true*/
                {                              
                for(int j=i+1;j<=banyak-1;j++)  
                                {                             
                                if(f[i]==f[j])                       
                                                cek1=true;                         
                                    break;                              
                                }                         
                }                             
Selanjutnya merupakan komentar untuk mengecek suatu fungsi. Terdapat ekspresi Boolean yang menghasilkan nilai false pada objek cek1, 2 dan 3. Lalu terjadi perulangan for untuk objek dengan nilai i dan j. Apabila domain memiliki pasangan lebih dari satu maka dia bukan fungsi dan jika ditemukan nilai yang sama pada domain, maka bukan fungsi dan kemudian akan memberikan value untuk variable cek1 adalah true. Pernyataan break digunakan untuk mengendalikan eksekusi ke akhir pernyataan if.
                for(int i=0;i<=banyak-1;i++)        /* meindikasikan fungsi pada, logikanya , jika ditemukan nilai yang sama pada kodomain maka dia fungsi pada*/     
                   {
                                for(int j=i+1;j<=banyak-1;j++)
                                                {
                                                if(g[i]==g[j])
                                                                cek2=true;
                                                    break;
                                                }
                                }             
Disini juga terjadi perulangan for untuk objek g dengan nilai i dan j. Apabila domain memiliki pasangan satu maka dia fungsi pada dan jika ditemukan nilai yang sama pada kodomain, maka dia fungsi pada dan kemudian akan memberikan value untuk variable cek2 adalah true. Pernyataan break digunakan untuk mengendalikan eksekusi ke akhir pernyataan if.
                                                if((cek1==true)||(banyak!=anggotaA))
                                    {
                                                System.out.println("\nnilai yang diinputkan adalah bukan fungsi");
                                                cek3=true;   /* variabel ini digunakan untuk mengindikasikan pencetakan range dan domain, jika nilai bernilai "TRUE" maka  tidak akan dilakukan pencetakan nilai range dan domain*/
                                                }
                                           else
                                    {
                          System.out.println("nilai yang diinputkan adalah fungsi");
                                      if (cek2==true)
                                                  {System.out.println("merupakan fungsi pada");
}
                                                 else
                                      System.out.println("merupakan fungsi satu-satu");
                                    }
                               
                                if(cek3!=true)  // kondisi untuk dilakukan pencetakan range dan domain iya atau tidak
                                {
Sintaks tersebut menjelaskan jika variable cek1 bernilai true maka banyak factorial sama dengan anggotaA dan akan mencetak pernyataan nilai yang diinputkan adalah fungsi. Kemudian variable cek2 akan bernilai true dan mencetak pernyataan apakah merupakan fungsi pada atau fungsi satu-satu. Dan variable cek3 merupakan suatu kondisi untuk dilakukan pencetakan range dan domain iya atau tidak.

                               

//Range
                                int x=0;
                                System.out.print("\nRange = { ");
                                for(int i=0;i<=banyak-1;i++)
                                                {
                                                for( int j=i+1;j<=banyak-1;j++)
                                                                {
                                                                 if(g[i]==g[j])
                                                                 ++i;
                                                                }
                                                d[x]=g[i];
                                                x++;
                                                }
       
                                                for (int i=0;i<x;i++ )
                                                {
                                                                System.out.print(d[i]+"  ");
                                                }
                                                System.out.println("}");
Sintaks tersebut berisi komentar untuk mencari nilai range, dengan variabel x yang bernilai 0 dan bertipe data int. Kemudian akan mencetak pernyataan ke samping dengan menambahkan newline pada pernyataan Range = { yaitu daerah hasil dari domain yang dipasangkan pada kodomain. Misalnya Range = { 3 6 8 7 }
Lalu sintaks selanjutnya adalah bentuk perulangan for. Disini terjadi perulangan di dalam perulangan untuk variabel i bertipe data integer yang bernilai 0, dengan objek banyak dikurangi 1 dan nilai variabel i yang selalu bertambah. Dan variabel j juga bertipe data int namun memiliki array nilai i ditambah 1 dan selalu bertambah. Jika objek g yang menunjukan array kodomain pada varabel i dan variabel j sama maka nilai i dinaikkan sebesar satu.
Sedangkan jika pada objek d memiliki variabel x sama dengan objek g pada variabel i maka akan menghasilkan nilai sebesar x. Kemudian terjadi perulangan untuk variabel i yang bertipe data int dengan nilai 0, dimana variabel i lebih kecil dari variabel x maka nilai variabel i akan selalu bertambah. Dan tambahkan tanda kurung tutup kurawal.

//domain
                                 System.out.print("Domain = { ");
                                 for(int i=0;i<=anggotaA-1;i++){
                                 System.out.print(a[i]+"   ");
                                 }
                                 System.out.println("}");
                                }
                }
}
Sintaks ini berisi komentar untuk mencari nilai domain, akan mencetak pernyataan Domain = { dengan perulangan for yang memiliki variabel I bernilai 0 dengan nilai I lebih kecil sama dengan anggotaA yang dikurangi 1 maka nilai variabel I selalu bertambah. Lalu akan mencetak variabel array a dengan indeks I atau disebut juga daerah asal dan akan mencetak tanda }  misalnya Domain = { 1 2 4 5 } Dan diakhiri dengan tanda kurung tutup kurawal sebanyak tiga kali untuk mengakhiri sintaks program tersebut.
Setelah listing program tersebut dibuat selanjutkan disimpan dengan nama file fungsi.java sebelum di running terlebih dahulu dicompile dengan menggunakan javac fungsi.java . Dan akan menghasilkan tampilan output seperti di bawah ini.

Tampilan Output pada CMD