Kamis, 19 April 2012

Polimorfisme




Polimorfisme adalah kemampuan untuk memperoleh bentuk. Dua objek atau lebih dikatakan polimorfis, bila objek-objek itu mempunyai antar muka-antarmuka identik namun mempunyai perilaku-perilaku berbeda. Bentuk ini memungkinkan kita menganggap sekelompok objek dengan tipe-tipe berbeda seperti dimiliki oleh suatu tipe yang sama. Polimorfisme merupakan fitur yang terjadi karena interaksi setiap konsep pewarisan dan dynamic binding. Contohnya pintu dan jendela memiliki perilaku yang sama yaitu dapat dibuka dan ditutup, namun untuk menutup jendela dilakukan misalnya dari atas ke bawah (vetikal), sedangkan pintu dari depan ke belakang (horizontal).

Polimorfisme bias diartikan seperti kemampuan suatu variable untuk mengubah perangai sesuai dengan objek hasil instansiasi yang digunakan. Polimorfisme membiarkan lebih dari 1 objek dari sub class – sub class dan diperlakukan sebagai objek dari super class tunggal

contoh program:


public class StudentInfo{
   public static void main(String[] args){
   StudentGrad myStudent = new StudentGrad();
   myStudent.Write(56410702, 1,"Subhan","Rubyansyah", 2014,"Universitas Gunadarma");
   myStudent.Display();
   }
}
class Student {
   public void Write(int ID, int Grad, String Fname, String Lname) {
   m_ID = ID;
   m_Graduation = Grad;
   m_First = Fname;
   m_Last = Lname;
   }
   public void Display(){
      System.out.println("Student ID: " + m_ID);
      System.out.println("Student name : "+m_First + " " + m_Last);
      System.out.println("Graduated: " + m_Graduation);
   }
   private int m_ID, m_Graduation;
   private String m_First;
   private String m_Last;
}
class StudentGrad extends Student {
   public void Write(int ID, int Grad, String Fname, String Lname, int yrGrad, String unSch) {
      super.Write(ID, Grad, Fname, Lname);
      m_UndergradSchool = unSch;
      m_Grad = Grad;
      YearGraduated = yrGrad;
   }
   public void Display(){
      super.Display();
      System.out.println("Graduated From: "+ m_UndergradSchool);
      System.out.println("Graduation Year : "+ YearGraduated);
   }
   private Integer YearGraduated,m_Grad;
   private String m_UndergradSchool;
   private String m_Major;
}

OUTPUT:
init:
deps-jar:
Compiling 1 source file to C:\Documents and Settings\user\My Documents\NetBeansProjects\JavaApplication23\build\classes
Copied 1 empty directory to 1 empty directory under C:\Documents and Settings\user\My Documents\NetBeansProjects\JavaApplication23\build\classes
compile:
run:
Student ID: 56410702
Student name : Subhan Rubyansyah
Graduated: 1
Graduated From: Universitas Gunadarma
Graduation Year : 2014
BUILD SUCCESSFUL (total time: 4 seconds)




Selasa, 17 April 2012

Inheritance

Inheritance




Pewarisan (Inheritance) adalah penurunan sifat yang ada pada suatu kelas kepada kelas baru yang menjadi turunannya. Sifat-sifat suatu kelas ditentukan oleh data anggota dan metode, sehingga yang dimaksud penurunan sifat adalah penurunan sifat adalah penurunan data anggota atau metode. Kelas yang menurunkan sifat disebut kelas dasar disebut kelas turunan (derived class).

Dengan pewarisan dapat diciptakan suatu kelas baru yang mana kelas tersebut mewarisi seluruh sifat kelas dasar kelas yang mempunyai akses public atau protected ditambah sifat khusus dari kelas yang bersangkutan. Ketentuan utama dengan adanya pewarisan yaitu memungkinkan suatu kode yang telah ditulis mudah sekali untuk digunakan kembali. Kita telah membuat suatu kelas yang telah diuji. dan suatu hari nanti, kita ingin menerapkan kode tersebut pada sesuatu yang memiliki sifat-sifat kelas tersebut, tinggal mewariskan kelas yang telah ada di kelas baru (kelas turunan). Kita tidak perlu  mengotak ngatik kelas yang teruji, sehingga efek samping yang tidak diharapkan tidak terjadi. Dengan cara ini pengembangan program menjadi lebih efisien dan hemat waktu. Selain itu, kita dapat menambahkan sifat-sifat baru yang tidak ada pada kelas dasar atau bahkan dapat mengganti sifat-sifat pada kelas turunan, yang berbeda dengan sifat kelas dasar.


Pengertian Inheritance
• Inheritance merupakan salah satu dari tiga konsep dasar OOP.
• Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek / y dapat mempunyai entitas/obyek turunan.
• Dengan konsep inheritance, sebuah class dapat mempunyai class turunan.
• Suatu class yang mempunyai class turunan dinamakan parent class atau base class.
• Sedangkan class turunan itu sendiri seringkali disebut subclass atau child class.
Deklarasi Inheritance
• Dengan menambahkan kata kunci extends setelah deklarasi nama class, kemudian diikuti dengan nama parent class‐nya.
• Kata kunci extends tersebut memberitahu kompiler Java bahwa kita ingin melakukan perluasan class.





Contoh Program:


class mahasiswa {
    private int npm;
    private String nama;
    private buku bukunya[];
    private int jumlah;
    public mahasiswa(int n, String m){
        npm = n;
        nama = m;
        jumlah = 0;
        bukunya = new buku [3];
        System.out.println("Constructor mahasiswa "+nama);
    }    public void pinjam_buku(buku b){
        if (jumlah < 3){
            bukunya[jumlah] = b;
            jumlah++;
            System.out.println(nama+" pinjam buku "+b.get_judul()+" karangan "+b.get_pengarang());
        }
        else
        System.out.println("Sudah Penuh!");
    }
    public void daftar_buku(){
        System.out.println("Daftar Bukunya "+nama+":");
        for(int i=0; i<jumlah; i++){
            System.out.println(i+1+". "+bukunya[i].get_judul());
        }
    }
}
class buku {
    public String judul;
    public String pengarang;
    public String penerbit;
    public buku(){};
    public buku(String j, String p){
        judul = j;
        pengarang = p;
        System.out.println("Constructor buku "+judul);
    }
    public void milik_buku(){
        System.out.println("Method ini milik class induk");
    }
    public String get_judul(){
        return judul;
    }
    public String get_pengarang(){
        return pengarang;
    }
}
class buku_sejarah extends buku {
    public void view_buku_sejarah(){
        milik_buku();  
    }
    public void set_buku(String j, String p){
        judul = j;
        pengarang = p;
        System.out.println(judul+" "+pengarang);
    }
}
public class Main {
    public static void main(String[] args) {
        mahasiswa si = new mahasiswa(123,"Ruby");
        buku bp = new buku("Java","Arie");
        si.pinjam_buku(bp);
        buku pti = new buku("Pengantar IT","Rudi");
        si.pinjam_buku(pti);
        buku logika = new buku("Logika","Pulung");
        si.pinjam_buku(logika);
        buku komik = new buku("Naruto","One Piece");
        si.pinjam_buku(komik);
        si.daftar_buku();
        buku_sejarah bukuku = new buku_sejarah();
        bukuku.view_buku_sejarah();
        bukuku.set_buku("Sejarah Kita","Top Cerr");
    }

}




Output:



OUTPUT:


init:
deps-jar:
Compiling 1 source file to C:\Documents and Settings\user\My Documents\NetBeansProjects\JavaApplication21\build\classes
compile:
run:
Constructor mahasiswa Ruby
Constructor buku Java
Ruby pinjam buku Java karangan Arie
Constructor buku Pengantar IT
Ruby pinjam buku Pengantar IT karangan Rudi
Constructor buku Logika
Ruby pinjam buku Logika karangan Pulung
Constructor buku Naruto
Sudah Penuh!
Daftar Bukunya Ruby:
1. Java
2. Pengantar IT
3. Logika
Method ini milik class induk
Sejarah Kita Top Cerr
BUILD SUCCESSFUL (total time: 8 seconds)

Minggu, 01 April 2012

Contoh Program Enkapsulasi

Nama : Ari Surya Gunawan
NPM : 51410041


Nama : Subhan Rubyansyah
NPM : 56410702


PROGRAM  ENKAPSULASI



List coding:


class Mahasiswa {


private String nama;
private String npm;


public Mahasiswa(String n, String npm) {
this.nama = n;
this.npm = npm;
}


public String tampilkanNama() {
return nama;
}


public String tampilkanNpm() {
return npm;
}


public void makan() {
System.out.println("Nyam... Nyam... Nyam...");
}


public void minum() {
System.out.println("ahhhhh segaaarrrr......");
}


public void olahraga() {
System.out.println("Sehat sehat sehat");
}


public void Belajar() {
System.out.println("Pintar pintar pintar");
}
}


class main {


public static void main(String[] args) {
Mahasiswa subhan = new Mahasiswa("Subhan Rubyansyah", "56410702");
System.out.println("Nama \t : " + subhan.tampilkanNama());
System.out.println("NPM \t : " + subhan.tampilkanNpm());
subhan.makan();
subhan.minum();
subhan.Belajar();
subhan.olahraga();
System.out.println();


Mahasiswa anda = new Mahasiswa("Ari Surya Gunawan", "51410041");
System.out.println("Nama \t : " + anda.tampilkanNama());
System.out.println("NPM \t : " + anda.tampilkanNpm());
anda.makan();
anda.minum();
anda.Belajar();
anda.olahraga();
System.out.println();


Mahasiswa kamu = new Mahasiswa("Kamu", "55555555");
System.out.println("Nama \t : " + kamu.tampilkanNama());
System.out.println("NPM \t : " + kamu.tampilkanNpm());
kamu.makan();
kamu.minum();
kamu.Belajar();
kamu.olahraga();
System.out.println();
}
}


Gambar:






OUTPUT


init:
deps-jar:
Compiling 1 source file to C:\Documents and Settings\user\My Documents\NetBeansProjects\JavaApplication15\build\classes
compile:
run:
Nama : Subhan Rubyansyah
NPM : 56410702
Nyam... Nyam... Nyam...
ahhhhh segaaarrrr......
Pintar pintar pintar
Sehat sehat sehat


Nama : Ari Surya Gunawan
NPM : 51410041
Nyam... Nyam... Nyam...
ahhhhh segaaarrrr......
Pintar pintar pintar
Sehat sehat sehat


Nama : Kamu
NPM : 55555555
Nyam... Nyam... Nyam...
ahhhhh segaaarrrr......
Pintar pintar pintar
Sehat sehat sehat


BUILD SUCCESSFUL (total time: 10 seconds)




LOGIKA:


enkapsulasi adalah suatu program yang dibuat untuk melindungi program khusus dari diakses dan intervensi dari program yang mempengaruhi pada tiap classnya. Untuk membuat program enkapsulasi dalam class-nya pada listingnya menggunakan private String pada nama dan npm yang difungsikan untuk pengkhususan pada block pada tiap class yang akan dipanggil pada system.out.print, dengan public Mahasiswa string n, string npm, yang akan dimasukan kedalam output biodatanya.


Pada public String tampilkanNama() { dan return nama disini difungsikan untuk pemanggilan program output yang telah dikhususkan kedalam classnya dan public String tampilkanNpm() sama. Pada pemanggilan awalnya digunakan class main sebagai patokan class yang akan diisi. 



Mahasiswa subhan = new Mahasiswa("Subhan Rubyansyah", "56410702");
System.out.println("Nama \t : " + subhan.tampilkanNama());
System.out.println("NPM \t : " + subhan.tampilkanNpm());
subhan.makan();
subhan.minum();
subhan.Belajar();
subhan.olahraga();
System.out.println();


Pada coding ini mahasiswa subhan mempunyai sebuah biodata nama dan npm-nya, terdapat kata-kata sintax  subhan.makan(), subhan.minum(), subhan.Belajar(), subhan olahraga(), ini dimaksudkan jika pada kata makan maka akan keluar outputnya seperti "nyam nyam nyam" yang dipanggil dari public void begitu pula yang lainnya dengan perantara public void pada class main yang dipanggil.












Sabtu, 31 Maret 2012

Enkapsulasi




Enkapsulasi adalah pembungkus, pembungkus disini dimaksudkan untuk menjaga suatu proses program agar tidak dapat diakses secara sembarangan atau di intervensi oleh program lain. Konsep enkapsulasi sangat penting dilakukan untuk menjaga kebutuhan program agar dapat diakses sewaktu-waktu, sekaligus menjaga program tersebut.

Dalam kehidupan sehari hari enkapsulasi dapat dimisalkan sebagai arus listrik pada generator, dan sistem perputaran generator untuk menghasilkan arus listrik. Kerja arus listrik tidak mempengaruhi kerja dari sistem perputaran generator, begitu pula sebaliknya. Karena didalam arus listrik tersebut, kita tidak perlu mengetahui bagaimana kinerja sistem perputaran generator, apakah generator berputar kebelakang atau ke depan atau bahkan serong. Begitu pula dalam sistem perputaran generator, kita tidak perlu tahu bagaimana arus listrik, apakah menyala atau tidak.

Begitulah konsep kerja dari enkapsulasi, dia akan melindungi sebuah program dari akses ataupun intervensi dari program lain yang mempengaruhinya. Hal ini sangat menjaga keutuhan program yang telah dibuat dengan konsep dan rencana yang sudah ditentukan dari awal.

Perbedaan Pemrograman Terstruktur & Berbasis Objek

Pemrograman Berorientasi Objek

Konsep utama Berorientasi objek yaitu melakukan permodelan objek dari kehidupan nyata ke dalam type data Abstrak. Pemrograman berorientasi objek (object-oriented programming disingkat OOP) merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya.

Bahasa pemrograman yang mendukung OOP antara lain:
1. Visual Foxpro
2. Java
3. C++
4. Pascal (bahasa pemrograman)
5. Visual Basic.NET
6. SIMULA
7. Smalltalk
8. Ruby
9. Python
10. PHP
11. C#
12. Delphi
13. Eiffel
14. Perl
15. Adobe Flash AS 3.0

Pemrograman Terstruktur


Pemrograman Terstruktur adalah suatu proses untuk mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah dalam bentuk program. Dalam pemrograman yang terstruktur, pendekatan pembuatan program adalah dengan menganut konsep "top-down". pada konsep ini, program dimulai dengan gambaran global, yang dinyatakan dengan nama-prosedur (sub-rutin) dan bukan isi detailnya. Selanjutnya prosedur sendiri bisa dipecah-pecah lagi menjadi prosedur yang lain. Konsep ini sangat memudahkan dalam pemodifian program.
Selain pengertian diatas Pemrograman Terstruktur adalah suatu aktifitas pemrograman dengan memperhatikan urutan langkah-langkah perintah secara sistematis, logis , dan tersusun berdasarkan algoritma yang sederhana dan mudah dipahami.
Prinsip dari pemrograman terstruktur adalah Jika suatu proses telah sampai pada suatu titik / langkah tertentu , maka proses selanjutnya tidak boleh mengeksekusi langkah sebelumnya / kembali lagi ke baris sebelumnya, kecuali pada langkah – langkah untuk proses berulang (Loop).

Bahasa pemrograman yang mendukung pemrograman terstruktur:
1. Cobol Turbo Prolog
2. C
3. Pascal
4. Delphi
5. Borland Delphi

refrensi : wikipedia.org

Minggu, 18 Maret 2012

TUGAS PBO

Nama : Subhan Rubyansyah
NPM : 56410702

Nama : Ari Surya Gunawan
NPM : 51410041




PROGRAM STATISTIKA

mencari mean, median, modus
*coding:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class Stat {
public static void main(String args[]) {
BufferedReader B=new BufferedReader (new InputStreamReader(System.in));
int arrInput []; arrInput = new int[100];
int arrUrut []; arrUrut = new int[100];
int arrModus [][]; arrModus = new int[100][3];
int inputCount=0;
int N;
int i, a, b, c, d, j, temp;

/*----mean*/
float jumlah;
float mean=0;
try {
System.out.print("Masukkan banyaknya data : ");
N=Integer.parseInt (B.readLine());
System.out.println();
jumlah = 0;
try {
for (i=1; i<=N; i++) {
System.out.print("Masukkan data ke " + i + " : ");
arrInput[i]=Integer.parseInt (B.readLine());
jumlah = jumlah + arrInput[i];
arrUrut[i] = arrInput[i];
}
mean = jumlah/N;

//pengurutan
for (a=1; a<=N; a++){
b=a;
while ((b>0 ) && (arrUrut[b]<arrUrut[b-1] )) {
temp = arrUrut[b];
arrUrut[b] = arrUrut[b-1];
arrUrut[b-1] = temp;
b--;
}
}
int Nm = N/2;
int median = arrUrut[(N+1)/2];
int Q1 = arrUrut[(median+1)/2];
int Q3 = arrUrut[(N+median)/2];
int lastEmpty = 1;
int posx;
for (i=1; i<=N; i++) {
posx = 0;
for (j=1; j<=N; j++) {
if (arrInput[i]==arrModus[j][1]) posx = j;
}
if (posx!=0) {
arrModus[posx][2]++;
} else {
arrModus[lastEmpty][1] = arrInput[i];
arrModus[lastEmpty][2] = 1;
lastEmpty++;
}
}
int modus = 0;
int banyak = 0;
for (i=1; i<=N; i++) {
if (arrModus[i][2]>banyak) {
modus = arrModus[i][1];
banyak = arrModus[i][2];
}
}
System.out.println("\nData terurut::");
for (i=1; i<=N; i++) {
System.out.print(" "+ arrUrut[i]);
}
System.out.println("\n");
System.out.println("Mean = " + mean);
System.out.println("Median = " + median);
System.out.println("Q1 = " + Q1);
System.out.println("Q3 = " + Q3);
System.out.println("Modus = " + modus);
} catch (IOException e) {
System.out.println ("Error!" +e);
}
} catch (IOException e) {
System.out.println ("Error!" +e);
}
System.exit(0);
}
}




OUTPUT
init:
deps-jar:
Compiling 1 source file to C:\Documents and Settings\user\My Documents\NetBeansProjects\dws\build\classes
Copied 1 empty directory to 1 empty directory under C:\Documents and Settings\user\My Documents\NetBeansProjects\dws\build\classes
compile:
run:
Masukkan banyaknya data :
5

Masukkan data ke 1 :
2
Masukkan data ke 2 :
2
Masukkan data ke 3 :
4
Masukkan data ke 4 :
5
Masukkan data ke 5 :
6

Data terurut::
 2 2 4 5 6

Mean = 3.8
Median = 4
Q1 = 2
Q3 = 5
Modus = 2
BUILD SUCCESSFUL (total time: 26 seconds)



LOGIKA

Dalam pengerjaan Program Statistika mencari Mean, Median, Modus dengan menggunakan program Java, aplikasi yang dipakai menggunakan Netbean, dengan sintax code import java.io = BufferedReader, IOException, InputStreamReader, tanpa public class untuk pengolahan masukkan coding pada satu project didalam netbean, dengan menggunakan sintax BufferedReader B=new BufferedReader (new InputStream Reader(System.in)) dengan integer 100 dengan tujuan menghasilkan integer hingga mencapai 100 dalam pemasukan angka input. dengan penjelasan BufferedReader adalah kelas abstrak yang menangani baca tulis ke suatu media. Kelas ini membutuhkan kelas lain sebagai pekerjanya, yaitu InputStreamReader Dan InputStreamReader membutuhkan media tempat baca tulis dilakukan, yaitu System.


Type data float, yang berisikan jumlah dan nilai, yg merupakan tipe data numerik yang berisi bagian bagian terkecil. Yang direpresentasikan dengan adanya angka desimal. Nilai dengan menggunakan float pada java, maka java akan otomatis akan mengubah type tersebut menjadi double, apabila ingin membuat suatu type data float. Jika kita lupa dengan aturannya, maka saat kita melakukan kompilasi akan terjadi eror. float jumlah; ,float mean=0;,try { untuk try disini difungsikan sebagai pencobaan fungtion buatan,

Pada sintax “for (i=1; i<=N; i++)” digunakan dalam penambahan data urut yang diinputkan secara numerik. Dan pada sintax ini “System.out.print("Masukkan data ke " + i + " : ") digunakan pada pemasukkan awal data yang ingin kita masukkan pada output. “jumlah = jumlah + arrInput[i]; , arrUrut[i] = arrInput[i]; } mean = jumlah/N;” coding tersebut digunakan untuk rumus mean pada pengolahan nilai rata rata di Statistika.




int median = arrUrut[(N+1)/2];
int Q1 = arrUrut[(median+1)/2];
int Q3 = arrUrut[(N+median)/2];
int lastEmpty = 1;
Dalam sintax tersebut memiliki rumus untuk mencari Median dalam data, Q1 dan Q3 adalah nilai tengah pada bagian kedua median data.
arrModus[lastEmpty][1] = arrInput[i];

arrModus[lastEmpty][2] = 1;
lastEmpty++;
Dalam sintax ini digunakan untuk model rumus dalam pencarian nilai Modus, angka yang sering muncul pada data statistika, lastEmpty untuk menjelaskan fungsi atau field bersangkutan.



PROGRAM RELASI


*mencari data relasi

listing:


import javax.swing.*;
class relasi {
public static void main ( String [] args ) {
int [] a = new int [10];
int [] b = new int [10];
int x = Integer.parseInt(JOptionPane.showInputDialog("masukkan jumlah elemen dari A >>> "));
for (int i = 0 ; i < x ; i++ ) {
int w = Integer.parseInt(JOptionPane.showInputDialog("masukkan elemen ke >>> " + ( i + 1)));
a[i] = w; }
int y = Integer.parseInt(JOptionPane.showInputDialog("masukkan jumlah elemen dari B >>>"));
for (int j = 0 ; j < y ; j++ ) {
int z = Integer.parseInt(JOptionPane.showInputDialog("masukkan elemen ke >>> " + ( j + 1)));
b[j] = z; }
System.out.print(" A = { ");
for (int i = 0 ; i < x ; i++ ) {
if (i==(x-1)) {
System.out.print(a[i]); }
else { System.out.print(a[i] + " , "); }}
System.out.print(" } ");
System.out.print("\t" + "\t" + " B = { ");
for (int j = 0 ; j < y ; j++ ) {
if (j==(y-1)) {
System.out.print(b[j]); }
else { System.out.print(b[j] + " , "); }}
System.out.println(" } ");
System.out.println("kemungkinan relasi...");
for (int i = 0 ; i < x ; i++ ) {
for (int j = 0 ; j < y ; j++ ) {
System.out.println(" { "+a[i]+" } " + " >>> " + " { "+b[j]+" } ");}}}}

pada gambar:



OUTPUT:

init:
deps-jar:
Compiling 1 source file to C:\Documents and Settings\user\My Documents\NetBeansProjects\JavaApplication7\build\classes
Copied 1 empty directory to 1 empty directory under C:\Documents and Settings\user\My Documents\NetBeansProjects\JavaApplication7\build\classes
compile:
run:
 A = { 1 , 2 } B = { 3 , 3 , 3 }
kemungkinan relasi...
 { 1 }  >>>  { 3 }
 { 1 }  >>>  { 3 }
 { 1 }  >>>  { 3 }
 { 2 }  >>>  { 3 }
 { 2 }  >>>  { 3 }
 { 2 }  >>>  { 3 }
BUILD SUCCESSFUL (total time: 17 seconds)


LOGIKA

- pada program ini menggunakan JOptionPane.. agar pemasukan input melalui kotak dialog berisi kotak input.

- membuat 2 array untuk pembuatan relasi, dimaksudkan agar tiap elemen array yang satu akan dihubungkan ada elemen lain pada array yang lain
- dibuat batasan array agar jumpah output tidak terlalu banyak,
- setelah membuat bahan input, membuat kode dari banyaknya elemen yang ada dari 0 sampai jumlah angka yang terinput
- array tersebut di samakan oleh variabel hasil dari input sehingga dapat dihubungkan pada kalkulasi lain
- membuat susunan elemen menggunakan metode if, dimana input elemen pertama disortir sampai input terakhir sesuai urutan penginputan
- membuat kemungkinan relasi,, didapat menggunakan pengggabungan array yang pertama dengan yang kedua
  menggunakan metode for,,, dimana setiap elemen dari array mendapatkan masing elemen dari array yang satunya.
  hasil output menjadikan relasi antara elemen pertama yang mendapatkan masing2 elemen kedua......