Pemrograman 1
Array
Ganjil 2024/2025
Program Studi Ilmu Komputer, Fakultas Teknik, Universitas Bumigora
Version 1.0 - Internal Use Only
Outline
◼ Array statik
◼ Array dinamik (ArrayList)
◼ Iterasi/Loop di Array
2
Pengenalan Array
◼ Selama ini, Anda hanya mengenal variabel-
variabel yang hanya mengandung sebuah nilai.
Sebuah slot di memo
int nilai = 24; nilai
24
salam Sebuah slot di mem
String salam = “Halo”; “Halo”
3
Pengenalan Array
◼ Misal, Anda adalah dosen kuliah Pemrograman.
◼ Anda ingin membuat program yang menerima masukan nilai
ujian dari 45 mahasiswa.
◼ Program Anda menampilkan statistik:
◼ Rata-rata nilai
◼ Nilai tengah (median)
◼ Nilai maksimum & minimum
4
Pengenalan Array
◼ Anda membutuhkan cara untuk menampung 45 nilai
tersebut: bentuk 45 variabel.
int nilaiMahasiswaSatu;
int nilaiMahasiswaDua;
int nilaiMahasiswaTiga;
...
?
int nilaiMahasiswaEmpatLima;
Cara yang tidak
okay
Coba Anda bayangkan bagaimana cara menghitung nilai
45 variabel tersebut !
5
Pengenalan Array
◼ Anda butuh sebuah variabel yang mampu
menampung “beberapa nilai” sekaligus.
◼ Setiap nilai di variabel tersebut dapat diakses
dengan mudah melalui index.
nilaiMahasiswa Dengan index, akses lebih mudah ☺
90 89 99 100 .... 80 95
0 1 2 3 .... 43 44
index
6
Array
◼ Array adalah sebuah struktur data yang bisa menampung
sekumpulan nilai yang berasal dari tipe data yang sama.
◼ Variabel array adalah sebuah objek -> menyimpan Alamat
memori (reference) dimana array sesungguhnya berada.
7
Array
◼ Array Statik
◼ Ukuran (jumlah elemen) array didefinisikan di awal.
Ukuran tidak akan berubah selama program berjalan.
◼ Array Dinamik
◼ Ukuran array dapat berubah-ubah (bertambah atau
berkurang) ketika program sedang berjalan.
8
ARRAY STATIC
9
Instansiasi Array
Instansiasi sebuah objek array: gunakan new.
<variabel array> = new <tipe data>[<jumlah elemen>];
//array berisi 3 elemen tipe integer
//tiap elemen array masih “kosong”
int[] nums;
nums = new int[3];
nums
//cara lain 0
int[] nums = new int[3]; 0
0
10
Instansiasi Array
//objek array String, 3 elemen
String[] names = {“Anto”, “Ani”, “Rudi”};
//objek array integer, 4 elemen
int[] nums = {1, 3, 5, 7};
//objek array double, 3 elemen
double[] arrd = {1.0d, 3.4d, 5.6d};
names
Anto
Ani
Rudi 11
Deklarasi dan Inisialisasi Array
12
Akses Array
◼ Elemen pada array diakses melalui indeks
◼ Indeks menunjukkan posisi elemen pada array
◼ Gunakan simbol “[]” untuk mengakses sebuah elemen pada array:
values[2] = 29.95;
13
Akses Array
String[] names = new String[3];
names[0] = “Rudi”;
names[1] = “Anto”;
names[2] = “Budi”;
//cetak ke layar tiap elemen
[Link](“elemen ke-1” + names[0]);
[Link](“elemen ke-2” + names[1]);
[Link](“elemen ke-3” + names[2]);
14
Syntax Array
15
Akses Array
◼ Menggunakan nilai yang disimpan pada array :
◼ [Link](“Nilai elemen ketiga adalah " +
values[2]);
◼ Panjang dari array (banyaknya data yang disimpan)
◼ [Link] → bukan sebuah method!
◼ Mengakses elemen yang tidak ada akan menghasilkan error
◼ double[] values = new double[10];
◼ values[10] = 29.95; // ERROR
◼ Keterbatasan : Panjang array tetap (statik)
16
Akses Array
int[] nums = new int[3];
Random r = new Random();
//isi tiap elemen array dengan bil. random
for (int i = 0; i < [Link]; i++) {
nums[i] = [Link](100);
}
//tampilkan isi tiap elemen array
for (int i = 0; i < [Link]; i++) {
[Link](nums[i]);
}
17
Latihan
◼ What elements does the data array contain after the following
statements?
double[] values = new double[10];
for (int i = 0; i < [Link]; i++)
values[i] = i * i;
Answer: 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, but not 100
18
Penggunaan Array
public class Arrays2 {
public static void main(String[] args) {
String[] names = new String[3];
names[0] = "anto";
names[1] = "rudi";
names[2] = "budi";
printArray(names);
}
public static void printArray(String[] data) {
for (int i = 0; i < [Link]; i++) {
[Link](data[i].toUpperCase());
}
}
19
Jangan membuat Array Parallel
◼ Jangan memisahkan data yang merupakan suatu kesatuan di array yang
berbeda.
◼ Gunakan arrays of objects!
◼ Why?
◼ Apabila kita ingin menambahkan accountName, hanya class BankAccount
saja yang perlu diubah.
20
Array of Objects
◼ Kita dapat membuat array yang memiliki tipe objects
BankAccount[] accounts = new BankAccount[10];
accounts[3] = new BankAccount(…);
21
Array of Objects
public class person {
private String name;
private int age;
public person (String name, int age) {...}
}
//array of objek, objek orang-orang
person[] kelompok = {
new person(“Rudi”, 18),
new person(“Anto”, 19),
new person(“Budi”, 23)};
22
Array of Objects
person[] p = new person[3];
//perlu instansiasi objek untuk tiap elemen !
p[0] = new person(“ani”, 18);
p[1] = new person(“anto”, 19);
p[2] = new person(“rudi”, 16);
//tambah umur 1 tahun
p[0].setUmur(p[0].getUmur() + 1);
p[1].setUmur(p[1].getUmur() + 1);
p[2].setUmur(p[2].getUmur() + 1);
23
Latihan
Apa yang salah dengan kode di bawah ?
int[] a;
for (int i = 0; i < 10; i++)
a[i] = i * i;
24
Latihan
Apa output program di bawah ?
Apa output program di bawah ?
int [] a = new int[5];
for (int i = 0; i < 5; i++)
a[i] = 4 - i;
for (int i = 0; i < 5; i++)
a[i] = a[a[i]];
for (int i = 0; i < 5; i++)
[Link](a[i]);
25
ARRAY DINAMIK
26
Array Dinamik
◼ Sampai saat ini, kita bermain dengan array yang
ukuran/jumlah elemennya diketahui sejak awal.
◼ Terkadang kita tidak mengetahui panjang dari suatu array.
◼ Jumlah karyawan/mahasiswa tidak tetap.
◼ Bisa bertambah
◼ Bisa berkurang
27
ArrayLists
◼ Data yang dapat disimpan pada array (biasa) terbatas
◼ ArrayLists
◼ Menyimpan sekumpulan objects (bukan tipe primitif !)
◼ 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
28
Instansiasi ArrayList
◼ Kelas ArrayList berada di package [Link]
◼ Array Dinamik dari data-data bertipe String:
ArrayList<String> names = new ArrayList<String>();
[Link]([Link]()); //cetak 0
[Link](“hello world”); //tambah satu elemen
[Link]([Link]()); //cetak 1
[Link](“hai”); //tambah lagi satu elemen
[Link]([Link]()); //cetak 2
29
Menambahkan Elemen
◼ Untuk menambahkan sebuah object di akhir arraylist, gunakan method
add :
◼ [Link]("Emily");
◼ [Link]("Bob");
◼ [Link]("Cindy");
30
Menambahkan Elemen
◼ Overloaded method add():
◼ [Link]("Carolyn"); //tambah elemen di akhir
◼ [Link](1, "Ann"); //tambah elemen di indeks ke-1
31
Mengakses Elemen
◼ Gunakan method get()
String name = [Link](2);
// ambil elemen ketiga pada arraylist
◼ Kebanyakan menimbulkan error :
int i = [Link]();
name = [Link](i); // Error
// legal index values are 0 ... i-1
32
Mengatur dan Menghapus Elemen
◼ Gunakan set() method untuk mengubah elemen:
[Link](2, "Carolyn");
◼ Gunakan remove() method untuk menghapus elemen pada indeks
tertentu:
[Link](1);
33
Mengatur dan Menghapus Elemen
[Link]("Emily");
[Link]("Bob");
[Link]("Cindy");
[Link](2, "Carolyn");
[Link](1, "Ann");
[Link](1);
34
Penggunaan Array List
ArrayList<String> names = Membuat sebuah ArrayList kosong
new ArrayList<String>(); yang dapat menampung string.
[Link]("Ann"); Menambahkan elemen ke bagian akhir.
[Link]("Cindy");
[Link](names); Prints [Ann, Cindy].
[Link](1, "Bob"); Tambajkan elemen ke indek 1.
names sekarang [Ann, Bob, Cindy].
[Link](0); Menghapus elemen indek 0.
names sekarang [Bob, Cindy].
[Link](0, "Bill"); Menimpah sebuah elemen dengan
nilai berbeda. names
sekarang[Bill, Cindy].
35
Penggunaan Array List
String name = [Link](i); Mengambil elemen
String last = Mengambil elemen terakhir
[Link]([Link]() - 1);
ArrayList<Integer> squares = Membuat sebuah ArrayList yang berisi
new ArrayList<Integer>(); sepuluh bilangan kuadrat pertama.
for (int i = 0; i < 10; i++)
{
[Link](i * i);
}
36
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>(); [Link](29.95);
double x = [Link](0);
37
Wrapper Class
38
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
// double x = [Link]();
39
Auto-Boxing pada Expression
◼ 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
40
Auto-Boxing dan ArrayLists
◼ Untuk menyimpan tipe data numerik dalam ArrayList,
gunakan tipe wrapper sebagai parameter type:
ArrayList<Double> values = new ArrayList<Double>();
[Link](29.95);
Double x = [Link](0);
◼ Menyimpan wrapped numbers tidak efisien
◼ Dapat digunakan apabila data yang disimpan tidak besar
◼ Gunakan arrays untuk menyimpan data angka yang besar
41
ITERASI DI ARRAY
42
References
◼ Cay S. Horstmann. Big Java. 4th Edition. John Wiley &
Sons, 2010
43
THANK YOU
44