• Tidak ada hasil yang ditemukan

Dasar-Dasar Pemrograman

N/A
N/A
Protected

Academic year: 2021

Membagikan "Dasar-Dasar Pemrograman"

Copied!
53
0
0

Teks penuh

(1)

Dasar-Dasar Pemrograman

Fakultas Ilmu Komputer, Universitas Indonesia

Version 3.0 - Internal Use Only

Arrays and ArrayLists

(2)

2

Tujuan Pembelajaran

 Memahami dan dapat menggunakan arrays dan array lists  Mempelajari mengenai wrapper classes, auto boxing, dan

generalized for loop

 Mengetahui beberapa algoritma array

 Mempelajari bagaimana cara menggunakan two-dimensional arrays

 Memahami perbedaan penggunaan arrays dan array lists pada program

(3)

3

Arrays

 Digunakan ketika kita ingin menyimpan beberapa data yang memiliki tipe yang sama.

 Deklarasi array (array adalah object)

 double[] array1;

 Cara membuat sebuah object array yang berisi 10 elemen bertipe double :

 array1 = new double[10];

 int[] array2 = {1, 3, 5, 7};

 Nilai yang disimpan pada array bergantung pada tipe dari array tersebut.

(4)

4

Deklarasi Arrays

Big Java by Cay Horstmann

Copyright © 2009 by John Wiley & Sons. All rights reserved.

(5)

5

Akses Arrays

 Elemen pada array diakses melalui indeks

 Indeks menunjukkan posisi elemen pada array

 Gunakan simbol “[]” untuk mengakses sebuah elemen

pada array : values[2] = 29.95;

Indeks dimulai dari nol

Indeks terakhir di ukuran array - 1

(6)

6

(7)

7

Arrays

 Menggunakan nilai yang disimpan pada array :

 System.out.println(“Nilai elemen ketiga adalah " +

values[2]);

 Panjang dari array (banyaknya data yang disimpan)

 values.length  bukan sebuah method!

 Mengakses elemen yang tidak ada akan menghasilkan error

 double[] values = new double[10];  values[10] = 29.95; // ERROR

(8)

8

Self Check

 What elements does the data array contain after the following statements?

double[] values = new double[10];

for (int i = 0; i < values.length; i++) values[i] = i * i;

(9)

9

Arrays of Objects

 Kita dapat membuat array yang memiliki tipe objects BankAccount[] accounts = new BankAccount[10]; accounts[3] = new BankAccount(…);

(10)

10

Don’t: Parallel Arrays!

 Jangan memisahkan data yang merupakan suatu kesatuan di array yang berbeda.

 Gunakan arrays of objects!

 Why?

 Apabila kita ingin menambahkan accountName, hanya class

(11)

11

ArrayLists

 Data yang dapat disimpan pada array terbatas  ArrayLists

 Menyimpan sekumpulan objects

 Dapat membesar dan mengecil sesuai kebutuhan  Menyediakan beberapa methods, contohnya untuk

menyimpan dan menghapus data  Deklarasi sebuah ArrayList:

ArrayList<T> names = new ArrayList<T>(); akan menyimpan objects yang memiliki tipe T.

 Method size() digunakan untuk mengembalikan jumlah elemen

(12)

12

Menambahkan elemen

 Untuk menambahkan sebuah object di akhir arraylist, gunakan method add :

names.add("Emily"); names.add("Bob"); names.add("Cindy");

(13)

13

Mengakses elemen

 Gunakan method get()

String name = names.get(2);

// gets the third element of the arraylist

 Most common bound error :

int i = names.size();

name = names.get(i); // Error

(14)

14

Mengatur dan Menghapus Elemen

 Gunakan set() method untuk mengubah elemen:

names.set(2, "Carolyn");

 Gunakan remove() method untuk menghapus elemen pada indeks tertentu:

(15)

15

Menambah dan Menghapus Elemen

names.add("Emily"); names.add("Bob"); names.add("Cindy"); names.set(2, "Carolyn"); names.add(1, "Ann"); names.remove(1);

(16)

16

ArrayList<String> names = new ArrayList<String>();

Constructs an empty arraylist that can hold strings.

names.add("Ann"); names.add("Cindy");

Adds elements to the end.

System.out.println(names); Prints [Ann, Cindy].

names.add(1, "Bob"); Inserts an element at index 1.

names is now [Ann, Bob, Cindy]. names.remove(0); Removes the element at index 0.

names is now [Bob, Cindy].

names.set(0, "Bill"); Replaces an element with a different value. names is now [Bill, Cindy].

Big Java by Cay Horstmann

Copyright © 2009 by John Wiley & Sons. All rights reserved.

(17)

17

String name = names.get(i); Gets an element.

String last =

names.get(names.size() - 1);

Gets the last element.

ArrayList<Integer> squares = new ArrayList<Integer>(); for (int i = 0; i < 10; i++) {

squares.add(i * i); }

Constructs an arraylist holding the first ten squares.

Big Java by Cay Horstmann

Copyright © 2009 by John Wiley & Sons. All rights reserved.

(18)

18

Wrapper Class

 Bagaimana apabila kita ingin menyimpan tipe primitive pada ArrayList?

 Java menyediakan wrapper class untuk menyimpan data dengan tipe primitive dalam bentuk objects.

 Double d = new Double(29.95);

 Wrapper class dapat digunakan ketika data yang ingin disimpan harus bertipe objects

ArrayList<Double> data = new ArrayList<Double>(); data.add(29.95);

(19)

19

(20)

20

Auto-boxing / Auto-unboxing

 Auto-boxing merupakan konversi otomatis antara tipe primitive dengan wrapper class yang berkesesuaian :

Double d = 29.95;

// auto-boxing; same as

// Double d = new Double(29.95);

double x = d;

// auto-unboxing; same as

(21)

21

 Auto-boxing juga bekerja pada arithmetic expressions :

 Double d = new Double(12.8);  d = d + 1;

 Sama dengan :

auto-unbox d into a double  add 1

auto-box the result into a new Double

store a reference to the newly created wrapper object in d

(22)

22

Auto-boxing dan ArrayLists

 Untuk menyimpan tipe data numerik dalam ArrayList, gunakan tipe wrapper sebagai parameter type:

ArrayList<Double> values = new ArrayList<Double>(); values.add(29.95);

double x = values.get(0);

 Menyimpan wrapped numbers tidak efisien

 Dapat digunakan apabila data yang disimpan tidak besar  Gunakan arrays untuk menyimpan data angka yang besar

(23)

23

Self Check

 Suppose values is an ArrayList<Double> of size > 0. How do you increment the element with index 0?

(24)

24

The Enhanced for Loop

 Untuk melakukan iterasi pada suatu koleksi data

double[] values = ...; double sum = 0;

for (double element : values) {

sum = sum + element; }

sama dengan

for (int i = 0; i < values.length; i++) {

sum = sum + values[i]; }

(25)

25

Dapat digunakan pula pada ArrayList

ArrayList<BankAccount> accounts = ...; double sum = 0;

for (BankAccount account : accounts) {

sum = sum + account.getBalance(); }

ekivalen dengan :

for (int i = 0; i < accounts.size(); i++) {

BankAccount account = accounts.get(i); sum = sum + account.getBalance();

(26)

26

The Enhanced for Loop

 “for each loop” tidak memperbolehkan kita untuk mengubah konten dari sebuah array.

for (double element : values) {

element = 0;

// ERROR—this assignment does not // modify array element

}

(27)

27

Self Check

 Write a “for each” loop that prints all elements in the array

values.

 Answer:

for (double element : values){ System.out.println(element); }

(28)

28

Self Check

 Apa yang dilakukan oleh “for each loop” berikut?

int counter = 0;

for (BankAccount a : accounts) {

if (a.getBalance() == 0) { counter++; } }

(29)

29

Partially Filled Arrays

 Array length: jumlah maksimum elemen pada array  Umumnya, array hanya terisi setengah penuh

 Kita perlu mencatat ukuran array yang sebenarnya

 Gunakan penamaan yang sesuai:

final int VALUES_LENGTH = 100;

double[] values = new double[VALUES_LENGTH]; int valuesSize = 0;

 Update valuesSize ketika menambahkan sebuah elemen:

values[valuesSize] = x; valuesSize++;

(30)

30

(31)

31

Self Check

Buatlah sebuah iterasi untuk mencetak elemen pada sebuah array values dalam urutan yang terbalik, mulai dari elemen terakhir. Jumlah elemen disimpan di variabel valuesSize

 Answer:

for (int i = valuesSize - 1; i >= 0; i--) System.out.println(values[i]);

(32)

32

Self Check

 How do you remove the last element of the partially filled array values?

 Answer:

(33)

33

(34)

34

Mencari Nilai Maksimum/Minimum

 Tentukan sebuah elemen sebagai elemen awal

 Kandidat?

 Bandingkan dengan elemen lainnya

 Perbarui nilai apabila menemukan nilai yang lebih besar/kecil

values[0] values[1] values[2] values[3] … values[length-1] max = values[0] 1 2 compare

(35)

35

Filling

 Isi array dengan nilai nol:

for (int i = 0; i < values.length; i++) {

values[i] = 0; }

 Isi arraylist dengan angka kuadrat

for (int i = 0; i < values.size(); i++) {

values.set(i, i * i); }

(36)

36

Sum and Average

 Untuk menghitung jumlah dari seluruh elemen, simpan dalam sebuah variabel yang terus menerus diperbarui:

double total = 0;

for (double element : values) {

total = total + element; }

 Untuk menghitung rata-rata, bagi dengan jumlah elemen double average = total / values.size();

// for an array list

(37)

37

Counting Matches

public int count(double atLeast) {

int matches = 0;

for (BankAccount account : accounts) {

if (account.getBalance() >= atLeast) matches++; //Found a match

}

return matches; }

(38)

38

Mencari Sebuah Nilai

 Cek semua elemen hingga menemukan elemen yang diinginkan

 Contoh:

public BankAccount find(int accountNumber) {

for (BankAccount account : accounts) {

if (account.getAccountNumber() == accountNumber) // Found a match

return account; }

return null; // No match in the entire array list }

(39)

39

Menghapus elemen

 ArrayList  gunakan method remove

 Array yang tidak terurut

1. Ganti elemen yang dihapus dengan elemen terakhir pada

array

2. Decrement variabel yang menyimpan ukuran array

values[pos] = values[valuesSize - 1]; valuesSize--;

(40)

40

Removing an Element

 Array terurut

1. Pindahkan semua elemen setelah elemen yang dihapus ke

indeks yang lebih awal

2. Decrement variabel yang menyimpan ukuran array

for (int i = pos; i < valuesSize - 1; i++) {

values[i] = values[i + 1]; }

(41)

41

(42)

42

Inserting an Element

 ArrayList  gunakan method add  Array tidak terurut:

 Masukkan elemen di indeks terakhir array

 Increment variabel yang menyimpan ukuran array

if (valuesSize < values.length) {

values[valuesSize] = newElement; valuesSize++;

(43)

43

Inserting an Element

 Array terurut

 Mulai dari akhir array, pindahkan elemen satu per satu ke

indeks yang lebih tinggi, hingga sampai di posisi dimana elemen baru akan diletakkan

 Masukkan elemen di posisi tersebut

 Increment variabel yang menyimpan ukuran array

if (valuesSize < values.length) {

for (int i = valuesSize; i > pos; i--) { values[i] = values[i - 1]; } values[pos] = newElement; valuesSize++; }

(44)

44

(45)

45

Menyalin Array

 Menyalin (copy) sebuah array akan mengakibatkan adanya reference lain ke array tersebut

double[] values = new double[6]; . . . // Fill array

(46)

46

Menyalin Array

 Untuk membuat salinan dari sebuah array, gunakan method Arrays.copyOf:

(47)

47

Memperbesar Array

 Untuk memperbesar sebuah array, gunakan method Arrays.copyOf:

(48)

48

Array Dua Dimensi

 Ketika membuat sebuah array dua dimensi, spesifikasikan jumlah baris dan kolom yang diinginkan

final int ROWS = 3; final int COLUMNS = 3;

String[][] board = new String[ROWS][COLUMNS];  Akses elemen dengan pasangan indeks

board[1][1] = "x"; board[2][1] = "o";

(49)

49

Traversing Two-Dimensional Arrays

 Gunakan dua nested loops ketika ingin mengunjungi array dua dimensi:

for (int i = 0; i < ROWS; i++)

for (int j = 0; j < COLUMNS; j++) board[i][j] = " ";

(50)

50

Traversing Two-Dimensional Arrays

 Kita juga dapat menggunakan dimensi array dari variabel array:

• board.length is the number of rows

• board[0].length is the number of columns

 Sehingga, loop dapat juga dituliskan menjadi: for (int i = 0; i < board.length; i++)

for (int j = 0; j < board[0].length; j++) board[i][j] = " ";

(51)

51

Key Learning Points

 Arrays digunakan untuk menyimpan sekumpulan data yang memiliki kesamaan tipe

 ArrayLists digunakan untuk menyimpan sekumpulan objects

 Ukuran dari ArrayLists bersifat fleksibel, ukuran arrays

adalah tetap

 Class ArrayList menyediakan beberapa method untuk

melakukan operasi pada ArrayList

 Gunakan wrapper class ntuk menyimpan tipe data primitive dalam ArrayLists

(52)

52

Tugas Membaca

 Chapter 6. Arrays and Array Lists

 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/ar

(53)

53

What’s next?

Referensi

Dokumen terkait

Selain tu, YPKDT Daerah Batu Pahat telah diberikan tanggungjawab untuk mengendalikan program Pengamalan Sakinah bagi setiap DUN dan program-program lain mengikut standard yang

Jenis gulma yang mempunyai nilai NJD terbesar berarti gulma tersebut merupakan gulma dominan. c) Bobot kering gulma per spesies, pengamatan dilakukan pada saat

Di dalam penlitian ini, berdasarkan hasil analisis statistik uji beda diketahui p=0,998 (&gt;0,05) yang berarti tidak menunjukkan adanya perbedaan kualitas hidup

PENGARUH PEMBERIAN HORMON METHYLTESTOSTERONE PADA LARVA IKAN GUPPY (Poecilia reticulata) TERHADAP PERUBAHAN JENIS KELAMIN.. Gleni Hasan Huwoyon,

Setiap orang di luar wilayah negara Republik Indonesia yang memberikan bantuan, kemudahan, sarana, atau keterangan untuk terjadinya tindak pidana terorisme, dipidana dengan pidana

Hasil penelitian ini menunjukan bahwa kepala Desa telah menjalankan perannya sebagai motivator di mana Kepala Desa selalu memberikan motivasi serta masukan-masukan

Manusia dan tumbuh-tumbuhan sangat erat kaitannya dalam kehidupan. Banyak sekali nilai manfaat yang didapatkan oleh manusia dari tumbuh-tumbuhan namun masih banyak

Berdasarkan latar belakang yang telah dijelaskan diatas mengenai obat golongan β 2 -agonis maka, diperlukan perhatian khusus dalam menggunakan obat tersebut mulai