if184982 pengantar logika dan pemrograman pertemuan ke-7 · 2018-11-03 · kucing k = new kucing();...

64
IF184982 Pengantar Logika dan Pemrograman Pertemuan ke - 7 Misbakhul Munir IRFAN SUBAKTI 司馬伊凡 Мисбакхул Мунир Ирфан Субакти

Upload: buikhanh

Post on 07-Mar-2019

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

IF184982Pengantar Logika dan Pemrograman

Pertemuan ke-7Misbakhul Munir IRFAN SUBAKTI

司馬伊凡Мисбакхул Мунир Ирфан Субакти

Page 2: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Javadoc

• Pembangkit dokumentasi yang dibuat oleh Sun Microsystem untuk Bahasa Java (sekarangdimiliki oleh Oracle Corporation) untuk membangkitkan dokumentasi API (Application Programming Interface – kumpulan definisi, protokol dan alat bantu untuk pembuatanperangkat lunak) dalam format HTML (Hypertext Markup Language – standar bahasaweb) dari kode program Java

• Komentar (comment) Javadoc dimulai dari kode yang berasal dari tag (penanda) komentar jamak (multi-line comment) /* dan */ • Semua komentar berada di dalam tanda /* … */ untuk komentar jamak• Sedangkan komentar 1 baris dimulai dari tag (penanda) //

• Tag (penanda) dimulainya Javadoc adalah /** dan diakhiri dengan */

• Penanda keterangan (descriptive tag):• @param → parameter dari fungsi (function/method)• @return → apa yang dikembalikan oleh fungsi• @throws → eksepsi/protes yang dihasilkan oleh fungsi• @see → “see also”

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

2

Page 3: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Javadoc dari NetBeans

• Dari NetBeans, Javadoc dengan mudahdapat dibangkitkan dari program yang mengandung Javadoc

• Klik menu Run > Generate Javadoc

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

3

Page 4: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Javadoc dari NetBeans (lanjutan)

• NetBeans akan membangkitkan file Javadoc dengan nama index.htmldan kemudian memanggil internet browser yang tersedia untukmenampilkan file ini

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

4

Page 5: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Javadoc dari NetBeans (lanjutan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

5

Page 6: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Inheritance: Pewarisan Sifat Suatu Class

• Inheritance: proses di mana suatu kelas (class) akan mendapatkan properti(method/function dan fields/sifat-sifat) dari kelas yang lain → pewarisan sifat

• Dengan adanya pewarisan sifat ini maka informasi dapat dikelola dengan baik dalamurutan hirarkinya

• Kelas yang mewarisi properti kelas yang lain disebut dengan subclass/sub kelas/kelasanak (derived class, child class) → sedangkan kelas yang mewariskan disebut dengansuperclass/kelas induk (base class, parent class)

class Induk {

}

class Anak extends Induk {

}

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

6

Page 7: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Inheritance: Penggunaan extends

class Kalkulator {

public double tambah(double a, double b) {

return a + b;

}

public double kurang(double a, double b) {

return a - b;

}

}

class KalkulatorKu extends Kalkulator {

public double kali(double a, double b) {

return a * b;

}

public static void main(String args[]) {

KalkulatorKu kal = new KalkuatorKu();

System.out.println(kal.tambah(3, 5));

System.out.println(kal.kurang(7, 3));

System.out.println(kal.kali(3, 7));

}

}

Keluaran:

8

4

21

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

7

Page 8: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Inheritance: Penggunaan super

• Kata kunci super mirip dengan kata kunci this

• super digunakan untuk• Membedakan anggota superclass dari anggota subclass→ jika mereka

mempunyai nama yang sama

• Memanggil constructor dari superclass dari subclass

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

8

Page 9: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Inheritance: Penggunaan super (lanjutan)

class Induk {

int angka = 9;

public void cetak() {

System.out.println(“cetak dari kelas Induk”);

}

}

class Anak extends Induk {

int angka = 13;

public void cetak() {

System.out.println(“cetak dari kelas Anak”);

}

public static void main(String args[]) {

Anak anak = new Anak();

anak.cetak();

super.cetak();

System.out.println(“angka di kelas Anak: ” + anak.angka);

System.out.println(“angka di kelas Induk: ” + super.angka);

}

}

Keluaran:

cetak dari kelas Anak

cetak dari kelas Induk

13

9

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

9

Page 10: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Inheritance: Penggunaan super (lanjutan)

class Induk {

int nrp;

Induk(int nrp) {

this.nrp = nrp;

}

public void cetakNRP() {

System.out.println(“Nilai nrp di kelas Induk: ” + nrp);

}

}

class Anak extends Induk {

Anak(int nrp) {

super(nrp);

}

public static void main(String args[]) {

Anak anak = new Anak(1009);

anak.cetakNRP();

}

}

Keluaran:

Nilai nrp di kelas Induk: 1009

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

10

Page 11: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Inheritance: Penggunaan instanceOf

class Binatang {

}

class Mamalia extends Binatang {

}

class Reptil extends Binatang {

}

class Kucing extends Mamalia {

public static void main(String args[]) {

Binatang b = new Binatang();

Mamalia m = new Mamalia();

Kucing k = new Kucing();

System.out.println(m instanceOf Binatang);

System.out.println(k instanceOf Mamalia);

System.out.println(k instanceOf Binatang);

}

}

Keluaran:

true

true

true

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

11

Page 12: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

abstract: Class & Method/Fungsi

• Sebuah class yang dideklarasi sebagai abstract→ abstract class• Dapat memiliki abstract dan non-abstract method

• Perlu di-extend (dengan kata kunci extends) oleh class lain dan method/function/fungsinya harus diimplementasikan oleh class yang meng-extend tadi

• Sebuah method/function/fungsi yang dideklarasi sebagai abstract→abstract method• Harus diimplementasikan oleh class yang meng-extend class yang sebelumnya

dideklarasikan sebagai abstract

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

12

Page 13: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

interface

• interface adalah reference type (jenis referensi) di Java

• Serupa dengan class (kelas)

• Collection (koleksi) dari dari abstract methods

• Suatu kelas (class) mengimplementasi suatu interface→mendapatkan pewarisan sifatabstract methods dari interface

• Seperti halnya dengan abstract methods, interface juga memiliki constants (konstanta), default method (fungsi default), static methods dan nested types (tipe bersarang).• Badan dari method/function hanya ada untuk default methods dan static methods

• Pembuatan interface serupa dengan pembuatan class• Class →menjelaskan atribut (attributes) dan perilaku (behaviours) suatu obyek• Interface →menjelaskan perilaku (behaviours) di mana nantinya suatu class harus

mengimplementasikannya

• Kecuali untuk class yang mengimplementasikan suatu interface adalah abstract class→semua fungsi/methods dari suatu interface harus didefinisikan dalam class itu

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

13

Page 14: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

interface & class

• Interface serupa dengan class, yaitu:• Interface dapat memiliki sejumlah method/fungsi

• Interface ditulis dalam file .java, dengan nama interface = nama file

• Byte code suatu interface muncul dalam file .class

• Interface muncul dalam package, dan file byte code terkait harus ada di dalam strukturdirektori yang bersesuaian dengan nama package-nya

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

14

Page 15: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

interface vs class

• Interface berbeda dengan class, yaitu:• Interface tidak bisa di-instantiate (inisiasi/pembuatan suatu obyek baru)

• Interface tidak punya constructor

• Semua method/fungsi di interface adalah abstract

• Suatu interface tidak bisa memiliki instance fields (variabel instance). Fields yang boleh ada di dalam interface harus dideklarasikan baik sebagai static dan juga final

• Interface tidak di-extend dengan suatu class→ interface diimplementasikan oleh suatu class

• Interface dapat meng-extend multiple interface (interface jamak)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

15

Page 16: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

inheritance, abstract,

interface: Contoh// Salam.java

public interface Salam {

public static final String salam = “Salam!”;

public String ucapan();

}

// SalamIndonesia.java

public class SalamIndonesia implements Salam {

public String ucapan() {

return “Halo”;

}

}

// SalamInggris.java

public class SalamInggris implements Salam {

public String ucapan() {

return “Hello”;

}

}

// Pisah.java

public interface Pisah {

public String ucapanPisah();

}

// Perpisahan.java

public interface Perpisahan extends Pisah {

public String penghormatan();

}

// Etika.java

public class Etika {

public String negara = "Indonesia";

}

// EtikaPergaulan.java

public abstract class EtikaPergaulan extends Etika implements Salam, Perpisahan {

public abstract String doa();

}

// EtikaPergaulanImplementasi.java

public class EtikaPergaulanImplementasi extends EtikaPergaulan {

public String ucapan() {

return “Salam kenal!”;

}

public String ucapanPisah() {

return “Selamat tinggal!”;

}

public String penghormatan() {

return “Jabat tangan.”;

}

public String doa() {

return “Semoga berbahagia!”;

}

}

// Test.java

public class Test {

public static void main(String args[]) {

EtikaPergaulanImplementasi e = new

EtikaPergaulanImplementasi();

System.out.println(e.negara);

System.out.println(EtikaPergaulanImplementasi.salam);

System.out.println(e.ucapan());

System.out.println(e.ucapanPisah());

System.out.println(e.penghormatan());

System.out.println(e.doa();

}

}

Keluaran:

Indonesia

Salam!

Salam kenal!

Selamat tinggal!

Jabat tangan.

Semoga berbahagia!

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

16

Page 17: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

List

• Java List interface, java.util.List→ serangkaian obyek terurut

• Elemen yang berada dalam List dapat disisipkan, diakses, diiterasi dan dihapusberdasarkan urutan yang muncul secara internal di dalam List→ cara pengurutanelemen-elemen inilah mengapa struktur data tersebut disebut dengan List

• Setiap elemen dalam List memiliki indeks→ elemen pertama memiliki indeks 0, elemen kedua memiliki indeks 1, dst.

• Indeks→ berapa jauh/jarak elemen dari awal list

• Sembarang obyek Java dapat ditambahkan ke dalam List

• Jika List tidak mempunyai tipe tertentu, dengan menggunkan Java Generics→ obyekyang berbeda dapat dicampur pada List yang sama→ walaupun praktek ini jarangdilakukan

• List merupakan Java interface standar, subtype dari Java Collection interface → Listditurunkan dari Collection

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

17

Page 18: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

List: interface→ implementasi

• Karena List adalah interface (tidak bisa langsung digunakan, harus diimplementasikandulu) → perlu memanggil dan menggunakan implementasi kongkrit dari interface tersebut agar dapat menggunakannya

• Implementasi dari List adalah sebagai berikut• java.util.ArrayList• java.util.LinkedList• java.util.Vector• java.util.Stack

List listAList = new ArrayList();

List listLList = new LinkedList();

List listVector = new Vector();

List listStack = new Stack();

listAlist.add(“Elemen ke-1”);

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

18

Page 19: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Array vs ArrayList

• Array sebagai standar di Java memiliki panjang yang tetap. Sekali array dibuat, maka ia tidak dapat bertambah atau berkurang ukurannya →harus tahu lebih dulu berapa elemen yang bisa ditangani

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

19

Page 20: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Array vs ArrayList (lanjutan)

• Class ArrayList adalah hasil pengembangan (extend) dari class AbstractListdan hasil implementasi (implement) dari List interface

• Mendukung array dinamik yang dapat berkembang (bertambah atau berkurangukurannya) sesuai dengan kebutuhan

• Dibuat dengan ukuran awal→ begitu ukurannya menjadi lebih besar, makacollection (koleksi) akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya dihapus, maka array akan diperkecil

ArrayList()→ constructor membuat array list kosong

ArrayList(Collection c)→ constructor membuat array list yang diinisialisasi dengan elemen-elemen dari collection c

ArrayList(int capacity)→ constructor membuat array list dengankapasitas awal tertentu. Capacity (kapasitas) adalah ukuran array yang digunakanuntuk menyimpan elemen-elemen. Kapasitas akan bertumbuh otomatis di saatelemen-elemen ditambahkan ke array list

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

20

Page 21: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Array vs ArrayList (lanjutan)

• Function/method yang ada di ArrayList:• void add(int index, Object element)→ sisipkan elemen tertentu

pada indeks posisi tertentu dalam list ini. IndexOutOfBoundsException akandihasilkan jika indeks tersebut di luar jangkauan yang ditentukan (index < 0 || index > size())

• boolean add(Object o)→menambahkan elemen tertentu di bagian akhirdari list ini

• boolean addAll(Collection c)→menambahkan semua elemen pada collection tertentu di bagian akhir dari list ini, dalam urutan tertentu menurutcollection’s iterator (penanda iterasi koleksi). NullPointerException akandihasilkan jika collection tersebut bernilai null.

• boolean addAll(int index, Collection c)→menyisipkan semuaelemen pada collection tertentu di list ini, dimulai pada urutan tertentu. Menghasilkan NullPointerException jika collection tersebut bernilai null.

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

21

Page 22: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Array vs ArrayList (lanjutan)

• void clear()→menghapus semua elemen dari list ini

• Object clone()→memberikan shallow copy (menyalin nilai-nilai darireferensi suatu class. Deep copy menyalin nilai-nilai itu sendiri) dari ArrayList ini

• boolean contains(Object o)→mengembalikan true jika list inimengandung elemen yang dimaksud. Lebih formalnya mengembalikan true jikadan hanya jika list ini mengandung paling tidak satu elemen e sehingga (o == null ? e == null : o.equals(e))

• void ensureCapacity(int minCapacity)→meningkatkan kapasitasdari instance ArrayList ini, jika dibutuhkan, untuk memastikan bahwa ia dapatmenangani paling tidak sejumlah elemen tertentu seperti yang dimaksudkan oleh argument minimum capacity minCapacity

• Object get(int index)→mengembalikan elemen di posisi tertentu pada list ini. Menghasilkan IndexOutOfBoundException jika indeks tersebutadalah di luar jangkauan (index < 0 || index >= size())

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

22

Page 23: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Array vs ArrayList (lanjutan)

• int indexOf(Object o)→mengembalikan indeks pertama yang dapat ditemuidari elemen tertentu dari list ini, atau -1 jika list ini tidak mengandung elemen tersebut

• int lastIndexOf(Object o)→mengembalikan indeks terakhir dari elementertentu dari list ini, atau -1 jika list ini tidak mengandung elemen tersebut

• Object remove(int index)→menghapus elemen pada posisi tertentu pada list ini. Menghasilkan IndexOutOfBoundException jika indeks tersebut adalah di luarjangkauan (index < 0 || index >= size())

• protected void removeRange(int fromIndex, int toIndex)→menghapus semua elemen dengan indeks di antara fromIndex (indeks ini juga ikutdihapus) dan toIndex (indeks ini tidak ikut dihapus)

• Object set(int index, Object element)→menggantikan elemen pada posisi tertentu pada list ini dengan elemen tertentu. MenghasilkanIndexOutOfBoundException jika indeks tersebut adalah di luar jangkauan(index < 0 || index >= size())

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

23

Page 24: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Array vs ArrayList (lanjutan)

• int size()→mengembalikan jumlah elemen yang ada di dalamlist ini

• Object[] toArray()→mengembalikan array dari semuaelemen dari list ini dengan urutan yang benar. MenghasilkanNullPointerException jika array tersebut adalah null

• Object[] toArray(Object[] a)→mengembalikan array dari semua elemen dari list ini dengan urutan yang benar. Jenis/tiperuntime dari array yang dihasilkan tergantung pada array yang dimaksudkan

• void trimToSize()→Memangkas kapasitas instance dariArrayList menjadi sesuai dengan kapasitas list sekarang

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

24

Page 25: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

ArrayList: Latihan

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

25

Page 26: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

ArrayList: Latihan (lanjutan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

26

• Dengan menggunakan permulaan kode program seperti di bawah ini. Kita akan bahas penyelesaian dari soal-soal berikut.

Page 27: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Soal 1

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

27

• Buatlah program yang dapat mencetak kata (string) terpanjang dalamaList.

• Contoh hasil:

Masukkan kata (ketik "#" untuk mengakhiri): aku

Masukkan kata (ketik "#" untuk mengakhiri): generasi

Masukkan kata (ketik "#" untuk mengakhiri): milenia

Masukkan kata (ketik "#" untuk mengakhiri): #

Kata terpanjang: generasi

Page 28: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Soal 1 (lanjutan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

28

Page 29: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Debugging/Tracing/Penelusuran Program

• Dalam pembuatan program, pasti dibutuhkan prosedur untukmenelusuri (kesalahan) jalannya program

• Proses penelusuran program yang biasanya dilakukan untuk melihatadanya kesalahan yang terjadi di waktu program berjalan (running program) → debugging/tracing

• NetBeans sebagai IDE (Integrated Development Environment) menyediakan sarana yang nyaman untuk debugging/tracing

• Namun sebelumnya, pastikan NetBeans sedang mengolah project & file Java yang ingin kita lakukan debugging

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

29

Page 30: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Debugging Program (lanjutan)

• Klik menu Run > Set Project Configuration > Customize…

• Pilih Main Class yang diinginkan

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

30

Page 31: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Debugging Program (lanjutan)

• Contoh: Soal1.java

• Klik menu Debug > Step Into F7

• Kemudian kita bisa menelusurijalannya program• Tekan tombol F8 (Step Over) untuk

menelusuri baris program langkahdemi langkah

• Jika ingin langsung menelusurijalannya program di posisi cursor→tekan tombol F4 (Run to Cursor)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

31

Page 32: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Debugging Program (lanjutan)

• Tekan tombol F8 (Step Over) untuk menelusuri baris program langkah demi langkah

• Jika ingin langsung menelusurijalannya program di posisi cursor→ tekan tombol F4 (Run to Cursor)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

32

Page 33: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Debugging Program (lanjutan)

• Jika ingin langsung menelusurijalannya program di posisi cursor→ tekan tombol F4 (Run to Cursor)

• Misal cursor kita tempatkan di baris 18, lalu tekan tombol F4

• Di bagian output (debug) kita isidengan masukan kata-kata:

aku

generasi

milenial

#

• Setelah tanda # diketik dan tombol enter ditekan, makadebugging akan lompat ke baris18

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

33

Page 34: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Debugging Program (lanjutan)

• Kita bisa masukkan variabel apa yang ingin diamati/dimonitor dengan memilihmenu Window > Debugging > Watches

• Masukkan variabel yang ingin diamati→misal “kata”, “i”, “ukuranTerpanjang”, “kataTerpanjang”• Kita bisa klik satu kali atau klik ganda di

menu <Enter new watch> di jendela(window) Watches untuk memasukkansuatu variabel yang ingin diamati

• Tekan tombol F8 (Step Over) untukmenelusuri baris program langkah demi langkah→ sekaligus mengamatiperubahan nilai variabel di jendela(window) Watches

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

34

Page 35: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Debugging Program (lanjutan)

• Tekan tombol F8 (Step Over) untukmenelusuri baris program langkah demi langkah→ sekaligus mengamatiperubahan nilai variabel di jendela(window) Watches

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

35

Page 36: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Debugging Program (lanjutan)

• Dengan mengamati perubahannilai variabel di jendela (window) Watches, kita bisa menelusurijalannya program dan menemukan serta memperbaikikesalahan yang terjadi→mendapatkan hasil yang diharapkan

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

36

Page 37: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Soal 2

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

37

• Buatlah program yang dapat mencetak kata (string) dalam aList dalamurutan terbalik.

• Contoh hasil:Masukkan kata (ketik "#" untuk mengakhiri): aku

Masukkan kata (ketik "#" untuk mengakhiri): generasi

Masukkan kata (ketik "#" untuk mengakhiri): milenia

Masukkan kata (ketik "#" untuk mengakhiri): #

milenia

generasi

aku

Page 38: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Soal 2 (lanjutan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

38

Page 39: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Soal 3

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

39

• Buatlah program yang hanya mencetak 2 karakter pertama dari kata (string) dalam aList, bila kata tersebut memiliki lebih dari 2 karakter.

• Contoh hasil:Masukkan kata (ketik "#" untuk mengakhiri): aku

Masukkan kata (ketik "#" untuk mengakhiri): generasi

Masukkan kata (ketik "#" untuk mengakhiri): milenia

Masukkan kata (ketik "#" untuk mengakhiri): #

ak

ge

mi

Page 40: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Soal 3 (lanjutan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

40

Page 41: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Soal 4

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

41

• Buatlah program yang membuat ArrayList baru yang mengandung setiap kata dariaList sebelumnya, tanpa ada perulangan kata satu pun di dalamnya. Artinya hanyaada satu kata dari aList di ArrayList yang baru.

• Contoh hasil:Masukkan kata (ketik "#" untuk mengakhiri): aku

Masukkan kata (ketik "#" untuk mengakhiri): generasi

Masukkan kata (ketik "#" untuk mengakhiri): aku

Masukkan kata (ketik "#" untuk mengakhiri): milenia

Masukkan kata (ketik "#" untuk mengakhiri): aku

Masukkan kata (ketik "#" untuk mengakhiri): #

aku

generasi

milenia

Page 42: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Soal 4 (lanjutan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

42

Page 43: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

List yang Didefinisikan Sendiri: ListKu

• Kita akan membuat kelas (class) ListKu yang merupakan kelas list yang kita definisikan sendiri

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

43

Page 44: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

ListKu

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

44

Page 45: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

ListKu (lanjutan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

45

Page 46: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Fungsi di List: ListKuFungsi

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

46

Page 47: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

Fungsi di List: ListKuFungsi (lanjutan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

47

Page 48: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

UTS extends ListKuFungsi: Soal 1

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

48

• Berdasarkan class ListKu dan ListKuFungsi yang sudah dibuat, buatlah method/function/fungsiyang mentransformasikan array ke dalambentuk ListKu• Nama fungsi: public static ListKuarrayKeListKu(int array[], int indeks)

• array[]: input/masukan array • indeks: indeks awal array yang akan

ditransformasikan menjadi ListKu

• Contoh:Dari array →

int[] a1 = {2,-5,8,0};

Ubah menjadi →

ListKu: l1 = (2,-5,8,0)

Page 49: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

UTS: Test Soal 1

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

49

• Kita bisa melakukan testing (pengecekan) terhadapkebenaran dari program yang kita buat denganmemanfaatkan framework JUnit Test• Klik menu Tools >

Create/Update Tests

Page 50: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

UTS: Test Soal 1 (lanjutan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

50

• Klik menu Tools > Create/Update Tests

• Terima nama default yang diusulkan NetBeans ataupilih nama lain

• Tekan/klik OK

Page 51: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

UTS: Test Soal 1 (lanjutan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

51

• NetBeans akanmembangkitkan berbagaimacam kode untukpengecekan/testing program kita

Page 52: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

UTS: Test Soal 1 (lanjutan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

52

• Sunting (edit) menjadiseperti di samping ini

Page 53: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

UTS: Test Soal 1 (lanjutan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

53

Page 54: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

UTS: Test Soal 1 (lanjutan)

• Jalankan testing file dengan cara pilihmenu Run > Test File Ctrl+F6, atau tekantombol Ctrl+F6

• NetBeans akan mengetes benar tidakprogram kita• Contoh: dari pernyataanassertEquals(), assertTrue(), assertFalse() yang bersesuaian denganfungsi yang ingin dites kebenarannya→benar tidaknya program kita

• Dapat dilakukan perbaikan sehingga program berjalan dengan benar

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

54

Page 55: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

UTS: Soal 2

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

55

• Buat method/fungsi rekursif (fungsi yang di dalamnya memanggil dirinya sendiri) yang menghasilkan pemangkatanbilangan bulat (integer)• Nama fungsi: public static int pangkat(int m, int n)

• m = bilangan yang dipangkatkan, m >= 0 (positif)• n = pangkat bilangan, n >= 0 (positif)

• Contoh:

pangkat(2, 3) → 23 = 8

Pangkat(2, 0) → 20 = 1

Page 56: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

UTS: Test Soal 2

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

56

Page 57: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

UTS: Soal 3

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

57

• Berdasarkan class ListKu dan ListKuFungsi yang sudah dibuat, buatlahmethod/function/fungsi yang menegasikan semua elemen dalam list asli• Nama fungsi: public static ListKunegasikanSemua(ListKu a)

• a: list bertipe ListKu yang semua nilaielemennya akan diubah menjadi nilai negasinya

• Contoh:[8,-6,5,-10] → [-8,6,-5,10]

[2,3,-5,8,-2] → [-2,-3,5,-8,2]

Page 58: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

UTS: Test Soal 3

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

58

Page 59: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

UTS: Soal 4

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

59

• Berdasarkan class ListKu dan ListKuFungsi yang sudah dibuat, buatlah method/function/fungsiyang mencari posisi elemen e di dalam list, yaitu yang ditemukan pertama kali. Jika e tidakditemukan, maka eksepsiIllegalStateException akan dihasilkan.• Nama fungsi: public static int cari(int e, ListKu a)

• e: elemen yang dicari• a: list bertipe ListKu di mana e dicari

• Contoh:e: -6 a: [8,-6,5,-10]→ 1

e: 10 a: [-8,6,-5,10]→ 3

e: 7 a: [2,4,-2,10] → IllegalStateException

Page 60: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

UTS: Test Soal 4

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

60

Page 61: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

UTS: Soal 5

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

61

• Berdasarkan class ListKu dan ListKuFungsi yang sudah dibuat, buatlahmethod/function/fungsi yang mengecek apakah semua elemen di dalam list bernilai positif.• Nama fungsi: public static boolean positifSemua(ListKu a)

• a: list bertipe ListKu di mana akan dicek elemennya apakah positif semuanya atau tidak

• Contoh:a: [8,-6,5,-10] → false

a: [2,4,12,10] → true

Page 62: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

UTS: Test Soal 5

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

62

Page 63: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

UTS: Soal 6

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

63

• Berdasarkan class ListKu dan ListKuFungsi yang sudah dibuat, buatlahmethod/function/fungsi yang mendapatkan list dari semua elemenlist yang bernilai positif.• Nama fungsi: public static ListKu positif(ListKu a)

• a: list bertipe ListKu di mana akan dicari semua elemennya yang bernilai positif

• Contoh:a: [8,-6,5,-10] → [8,5]

a: [-8,6,-5,10] → [6,10]

a: [2,4,-2,10] → [2,4,10]

Page 64: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing(); System.out.println ... akan secara otomatis ditambahi. Jika obyek (elemen) di dalamnya

UTS: Test Soal 6

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

64