IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing();...
Transcript of IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-7 · 2018-11-03 · Kucing k = new Kucing();...
IF184982Pengantar Logika dan Pemrograman
Pertemuan ke-7Misbakhul Munir IRFAN SUBAKTI
司馬伊凡Мисбакхул Мунир Ирфан Субакти
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
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
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
Javadoc dari NetBeans (lanjutan)
2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti
5
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
ArrayList: Latihan
2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti
25
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.
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
Soal 1 (lanjutan)
2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti
28
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
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
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
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
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
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
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
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
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
Soal 2 (lanjutan)
2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti
38
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
Soal 3 (lanjutan)
2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti
40
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
Soal 4 (lanjutan)
2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti
42
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
ListKu
2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti
44
ListKu (lanjutan)
2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti
45
Fungsi di List: ListKuFungsi
2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti
46
Fungsi di List: ListKuFungsi (lanjutan)
2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti
47
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)
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
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
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
UTS: Test Soal 1 (lanjutan)
2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti
52
• Sunting (edit) menjadiseperti di samping ini
UTS: Test Soal 1 (lanjutan)
2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti
53
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
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
UTS: Test Soal 2
2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti
56
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]
UTS: Test Soal 3
2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti
58
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
UTS: Test Soal 4
2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti
60
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
UTS: Test Soal 5
2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti
62
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]
UTS: Test Soal 6
2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti
64