SlideShare a Scribd company logo
1 of 41
Download to read offline
Pengantar
Struktur Data I
(pointer java)
Maret 2018
Learning Class
Himpunan Mahasiswa Teknik Informatika
UIN Syarif Hidayatullah Jakarta
README.MD
Pengantar untuk struktur data, karena ada
materi seperti pointer yang harusnya
dipahami(kadang tidak dipelajari atau tidak
dipahami) dulu sebelum masuk ke struktur
data.
RANDOM ACCESS MEMORY
Analogi 1
Sumber : Nick Brazzi,
https://www.lynda.com/Mac-OS-Server-tutorials/Understanding-how-processor-RAM-hard-drive-performance-a
ffect-speed/191499/366317-4.html
Analogi 2
Sumber : Dane Hartman, https://www.youtube.com/watch?v=kjD5OUroAh4
RAM
Analogi 3
Sumber : Avram Plitch,
https://www.laptopmag.com/articles/faster-than-an-ssd-how-to-turn-extra-memory-i
nto-a-ram-disk
Pemrosesan Data
▫ Pemrosesan data dilakukan di CPU yang
mempunyai kecepatan tinggi.
▫ Kecepatan HDD sangat lambat, apalagi
dibanding CPU.
▫ Agar tidak terjadi bottleneck, data yang
akan diproses ataupun diprediksi akan
diproses “mengantri” di RAM.
Struktur Data
▫ Teknik bagaimana menyimpan data sesuai dengan
kebutuhan. Umumnya bagaimana menyimpan di RAM.
▫ Karena di setiap Teknik penyimanan data pasti ada
kelebihan dan kekurangan (tradeoff) dari segi memori
dan waktu. Dan kita harus memilih mana Teknik yang
tepat untuk program yang sesuai.
▫ Contoh, program yang sama menggunakan struktur data
yang berbeda akan menggunakan memori dan waktu
yang berbeda secara signifikan, terutama jika data
dalam jumlah besar.
Bagaimana Data Disimpan dalam RAM?
▫ Seperti yang kita tahu, bentuk asli data
adalah biner atau bit(1 dan 0)
▫ 1 byte = 8 bit
▫ 1 kilobyte = 1024 byte
▫ 1 megabyte = 1024 kilobyte
▫ 1 gigabyte = 1024 megabyte
… dan seterusnya
Bagaimana Data Disimpan dalam RAM?
▫ Misal di computer
Apple II dengan
arsitektur 16 bit, RAM
berukuran 48 kilobyte
▫ Kita ingin menyimpan
integer yang pada saat
itu berukuran 2 byte
Sumber : Wikipedia,
https://en.wikipedia.org/wiki/Apple_II_series
Bagaimana Data Disimpan dalam RAM?
▫ Data di RAM disimpan dalam satuan byte.
▫ 48 kilobyte = 48 * 1024 byte = 49,152 byte
▫ Berarti RAM tersemut mempunyai alamat
dari 1 sampai alamat ke 49,152 untuk
menyimpan data.
Simulasi
Kemudian kita mencoba menyimpan angka 7 di alamat 49,151
Berapapun angkanya, ukuran nya tetap 2 byte karena tipe datanya integer.
integer tersebut akan memakai 2 tempat, yaitu alamat 49,151 dan 49,152 karena integer
berukuran 2 byte
Kita ingin menyimpan angka 5970, Representasi biner nya :
1011101010010
Representasi biner diatas berukuran 13 bit, Sehingga harus di pas kan menjadi 16 bit (16 bit =
2 byte (ukuran integer) )
0001011101010010
Kemudian kita pecah menjadi 8 bit agar dapat disimpan di RAM
00010111 01010010
Misal integer tersebut kita simpan di alamat 1
Maka integer tersebut akan memakai 2 tempat, yaitu alamat 1 dan 2 karena integer
berukuran 2 byte
Alamat 1 2 3 sampai 49,1150 49,151 49,152
bit 0 0 0 1 0 1 1 1 0 1 0 1 0 0 1 0 … 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
Keadaan Sebenarnya
▫ Dalam keadaan sebenarnya, kita tidak
sewenang-wenang menentukan alamat untuk
data/objek baru.
▫ Anggap saja sebagai abstraksi program
meminta alamat ke memory manager, lalu
memory manager memberi alamat nya
▫ Dan jika variable tersebut sudah tidak terpakai,
memory manager akan automatis menghapus
data di memori tersebut.
Tambahan
Strukr data juga berkaitan dengan cache,
memory berukuran (sangat) kecil di CPU
yang memiliki access teime (sangat) cepat
POINTER (JAVA)
Pointer
▫ Pointer adalah variable yang menyimpan
alamat di memori dari sebuah data.
▫ Di computer umumnya alamat memori
ditampilkan dalam bentuk hexadecimal
(bilangan basis 16)
Keyword “new”
▫ Fungsi new adalah fungsi untuk memesan
alamat untuk suatu data, sehingga data
bisa disimpan di alamat tersebut
▫ Nilai kembalian (return value) dari fungsi
new = alamat yang telah dipesan
Tipe Data
▫ Primitif :
▫ int : long int, … long long int
▫ float : float, double, … long long double
▫ char
▫ Boolean
▫ Dan yang lainnya
▫ Non-Primitif :
▫ String
▫ Array
▫ Class
▫ Dan yang lainnya
Keyword “new”
▫ Untuk tipe data non-primitif(pengecualian :
String) kita harus mendeklarasikan sebagai
berikut agar bisa dipakai :
▫ Mahasiswa m1 = new Mahasiswa();
▫ int arr[] = new int[10];
▫ Atau bisa juga seperti ini :
▫ Mahasiswa m1;
m1 = new Mahasiswa();
▫ Int arr[]
arr = new int[3];
Keyword “new”
▫ Jika tanpa menggunakan keyword new
(pengecualian : string), apakah data bisa
digunakan (dalam Bahasa java)? Misal :
▫ Mahasiswa m1; (baris 1)
▫ m1.setNama(“Ahmad”); (baris 2)
▫ Jawaban : tidak bisa, karena perintah di baris 1
hanya membuat variabel pointer (m1) yang
nilainya kosong (null)
▫ Kenapa nilainya kosong (null)? Karena kita
belum mengasssign alamat memory ke variable
pointer m1
Keyword “new”
▫ Bagaimana caranya agar m1 bisa dipakai?
▫ Pertama kita, harus assign alamat memori ke
variable pointer m1.
▫ Sehingga kita harus memesan memory untuk
menaruh objek mahasiswa tersebut
menggunakan fungsi new() dan mengassign
nilai kembalian dari fungsi new() (yang berisi
alamat) ke variable pointer m1.
▫ Diberikan sebuah class
Mahasiswa
Contoh Kasus
▫ Apa output dari program
tersebut? (nilai dari
m1.getNama() dan m1.
getNim() di baris 26 dan
27)
▫ Program tersebut akan
beroutput :
Nama : budi
NIM : 99
▫ Mengapa terjadi seperti
itu?
Contoh Kasus
Simulasi
Mahasiswa m1; Membuat variable pointer of Mahasiswa.
Nilai dari m1 adalah NULL alias kosong
Simulasi
Mahasiswa m1;
m1 = new Mahasiswa();
Meminta alamat kepada memory manager
untuk data/objek baru Mahasiswa (fungsi
new).
Lalu menyimpan alamat tersebut di variable
pointer m1
Misal kita diberi alamat 59,122
Anggap saja sebagai abstraksi jika ukuran
objek Mahasiswa adalah 10 byte (ngasal)
Maka nilai variable m1 = 59,122
Woi minta alamat
dong buat objek
Mahasiswa
Oke, pake alamat
59,122 ya, disana
kosong
Simulasi
Mahasiswa m1;
m1 = new Mahasiswa();
m1.setNama("andi");
m1.setNim(1);
Mengeset property menggunakan setter dan
getter
Alamat 59,122 sampai 59,132
Objek Mahasiswa
Nama = andi
Nim = 1
getNama()
setNama()
getNim()
setNim
Variabel pointer m1 =
59,122
Simulasi
Mahasiswa m1;
m1 = new Mahasiswa();
m1.setNama("andi");
m1.setNim(1);
Mahasiswa m2;
Membuat variable pointer m2, bernilai null
karena belum diisi
Sehingga m2 tidak menunjuk kemana-mana
Alamat 59,122 sampai 59,132
Objek Mahasiswa
Nama = andi
Nim = 1
getNama()
setNama()
getNim()
setNim
Variabel pointer m1 =
59,122
Variabel pointer m2 =
NULL
Apa yang terjadi ketika kita melakukan
m2.setNama(“Asal”)
Akan terjadi error null pointer exception
karena mengakeses method/property dari
object yang bernilai null (seperti yang sudah
dibahas tadi)
Simulasi
Mahasiswa m1;
m1 = new Mahasiswa();
m1.setNama("andi");
m1.setNim(1);
Mahasiswa m2;
Alamat 59,122 sampai 59,132
Objek Mahasiswa
Nama = andi
Nim = 1
getNama()
setNama()
getNim()
setNim
Variabel pointer m1 =
59,122
Variabel pointer m2 =
NULL
Simulasi
Mahasiswa m1;
m1 = new Mahasiswa();
m1.setNama("andi");
m1.setNim(1);
Mahasiswa m2;
m2 = m1;
Mengisi m2 dengan alamat 59,122.
Tidak ada objek baru yang dibuat ataupun
tidak mengopi objek baru.
Alamat 59,122 sampai 59,132
Objek Mahasiswa
Nama = andi
Nim = 1
getNama()
setNama()
getNim()
setNim
Variabel pointer m1 =
59,122
Variabel pointer m2 =
59,122
Simulasi
. . .
Mahasiswa m2;
m2 = m1;
m2.setNama("budi");
m2.setNim(99);
Merubah alamat objek mahasiwa yang
ditunjuk oleh variable pointer m2, yaitu alamat
59,122
Alamat 59,122 sampai 59,132
Objek Mahasiswa
Nama = budi
Nim = 99
getNama()
setNama()
getNim()
setNim
Variabel pointer m1 =
59,122
Variabel pointer m2 =
59,122
ARRAY
Review Array
▫ Ukuran harus tetap, tidak bisa
berubah-rubah.
▫ Tipe data harus sama.
int iseng[3];
iseng[0] = 4;
iseng[1] = 5970;
iseng[2] = 7;
▫ Masih di computer Apple II, kita akan membuat
array iseng yang berisi 3 data integer.
▫ Array disimpan secara berurutan
▫ Integer = 2 byte
▫ Array ini menggunakan memori 6 byte.
▫ Contoh :
▫ Alamat 20,183 = iseng[0] (20,183 sampai 20,184)
▫ Alamat 20,185 = iseng[1] (20,185 sampai 20,186)
▫ Alamat 20,187 = iseng[2] (20,187 sampai 20,188)
Array
Simulasi
int iseng[] = new Int[3]; Memesan memori sebesar 2 byte x 3 = 6
byte.
Misal kita mendapatkan memori kosong di
alamat 20,183
Sehingga alamat 20,183 sampai 20,188 akan
digunakan.
Woi minta alamat
dong buat objek Array
of integer. Ukuran
total 6 byte
Oke, pake alamat
20,183 ya, disana
kosong
Simulasi
Alamat 20,182 20,183 20,184 20,185 20,186
bit … (data lain) 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Alamat 20,187 20,188 20,189 20,190 20,191
bit 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 …(kosong untuk menyimpan data lain)
int iseng[] = new Int[3];
iseng[0] = 4;
Mengisi array pertama (index 0 (iseng[0])) di
alamat 20,183
(alamat 20,183 sampai 20,184 yang dipakai)
iseng[0]
Simulasi
Alamat 20,182 20,183 20,184 20,185 20,186
bit … (data lain) 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 0 1 0 0 1 0
Alamat 20,187 20,188 20,189 20,190 20,191
bit 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 …(kosong untuk menyimpan data lain)
int iseng[] = new Int[3];
iseng[0] = 4;
iseng[1] = 5970;
Mengisi array kedua (index 1 (iseng[1])) di
alamat 20,185
(alamat 20,185 sampai 20,186 yang dipakai)
iseng[1]iseng[0]
Simulasi
Alamat 20,182 20,183 20,184 20,185 20,186
bit … (data lain) 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 0 1 0 0 1 0
Alamat 20,187 20,188 20,189 20,190 20,191
bit 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 …(kosong untuk menyimpan data lain)
int iseng[] = new Int[3];
iseng[0] = 4;
iseng[1] = 5970;
Iseng[3] = 7;
Mengisi array ketiga (index 2 (iseng[2])) di
alamat 20,187
(alamat 20,187 sampai 20,188 yang dipakai)
iseng[1]iseng[0]
iseng[2]
LICENSE
CONTRIBUTING.MD
Author, License
Herbert Abdillah
abdillah.herbert@gmail.com
▫ https://www.linkedin.com/in/herbert
abdillah
▫ http://herbertabdillah.my.id/
This license lets others distribute, remix, tweak,
and build upon your work, even commercially, as
long as they credit you for the original creation.
This is the most accommodating of licenses
offered. Recommended for maximum
dissemination and use of licensed materials.
Daftar Pustaka/Referensi Untuk Belajar
Youtube “mycodeschol”
Playlist data strucutre
https://www.youtube.com/channel/UClEE
sT7DkdVO_fkrBw0OTrA
Thomas H. Cormen, Charles E. Leiserson,
Ronald L. Rivest, and Clifford Stein. 2009.
Introduction to Algorithms, Third Edition
(3rd ed.). The MIT Press.
RETURN 0;

More Related Content

What's hot

Analisis ERD Database Rumah Sakit
Analisis ERD Database Rumah SakitAnalisis ERD Database Rumah Sakit
Analisis ERD Database Rumah SakitFitria Nuri
 
ALJABAR LINEAR ELEMENTER
ALJABAR LINEAR ELEMENTERALJABAR LINEAR ELEMENTER
ALJABAR LINEAR ELEMENTERMella Imelda
 
6. organisasi multi key
6. organisasi multi key6. organisasi multi key
6. organisasi multi keyRenol Doang
 
Penyelesaian sistem persamaan linear dengan metode iterasi gauss seidel
Penyelesaian sistem persamaan linear dengan metode iterasi gauss seidelPenyelesaian sistem persamaan linear dengan metode iterasi gauss seidel
Penyelesaian sistem persamaan linear dengan metode iterasi gauss seidelBAIDILAH Baidilah
 
Teori bahasa-dan-otomata
Teori bahasa-dan-otomataTeori bahasa-dan-otomata
Teori bahasa-dan-otomataBanta Cut
 
Modul PBO Bab-07 - Enkapsulasi (Encapsulation)
Modul PBO Bab-07 - Enkapsulasi (Encapsulation)Modul PBO Bab-07 - Enkapsulasi (Encapsulation)
Modul PBO Bab-07 - Enkapsulasi (Encapsulation)Rakhmat Dedi Gunawan
 
Permutasi dan kombinasi
Permutasi dan kombinasiPermutasi dan kombinasi
Permutasi dan kombinasiHeni Widayani
 
Aljabar boolean(1)
Aljabar boolean(1)Aljabar boolean(1)
Aljabar boolean(1)tafrikan
 
Matematika Diskrit kombinatorial
Matematika Diskrit  kombinatorialMatematika Diskrit  kombinatorial
Matematika Diskrit kombinatorialSiti Khotijah
 
Makalah Kegunaan Matematika Diskrit pada Teknik Informatika
Makalah Kegunaan Matematika Diskrit pada Teknik InformatikaMakalah Kegunaan Matematika Diskrit pada Teknik Informatika
Makalah Kegunaan Matematika Diskrit pada Teknik Informatikasaid zulhelmi
 
Rekursi dan Induksi Matematika
Rekursi dan Induksi MatematikaRekursi dan Induksi Matematika
Rekursi dan Induksi MatematikaHeni Widayani
 
Aljabar boolean MK matematika diskrit
Aljabar boolean MK matematika diskritAljabar boolean MK matematika diskrit
Aljabar boolean MK matematika diskritriyana fairuz kholisa
 
Pertemuan 02 teori dasar himpunan
Pertemuan 02   teori dasar himpunanPertemuan 02   teori dasar himpunan
Pertemuan 02 teori dasar himpunanFajar Istiqomah
 
Tugas normalisasi imaika penjualan komputer
Tugas normalisasi   imaika penjualan komputerTugas normalisasi   imaika penjualan komputer
Tugas normalisasi imaika penjualan komputerHamdi Hamdi
 
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
4.1 Operasi Dasar Singly Linked List  1 (primitive list)4.1 Operasi Dasar Singly Linked List  1 (primitive list)
4.1 Operasi Dasar Singly Linked List 1 (primitive list)Kelinci Coklat
 

What's hot (20)

Modul 3 kongruensi
Modul 3   kongruensiModul 3   kongruensi
Modul 3 kongruensi
 
Analisis ERD Database Rumah Sakit
Analisis ERD Database Rumah SakitAnalisis ERD Database Rumah Sakit
Analisis ERD Database Rumah Sakit
 
ALJABAR LINEAR ELEMENTER
ALJABAR LINEAR ELEMENTERALJABAR LINEAR ELEMENTER
ALJABAR LINEAR ELEMENTER
 
6. organisasi multi key
6. organisasi multi key6. organisasi multi key
6. organisasi multi key
 
Penyelesaian sistem persamaan linear dengan metode iterasi gauss seidel
Penyelesaian sistem persamaan linear dengan metode iterasi gauss seidelPenyelesaian sistem persamaan linear dengan metode iterasi gauss seidel
Penyelesaian sistem persamaan linear dengan metode iterasi gauss seidel
 
Teori bahasa-dan-otomata
Teori bahasa-dan-otomataTeori bahasa-dan-otomata
Teori bahasa-dan-otomata
 
Modul PBO Bab-07 - Enkapsulasi (Encapsulation)
Modul PBO Bab-07 - Enkapsulasi (Encapsulation)Modul PBO Bab-07 - Enkapsulasi (Encapsulation)
Modul PBO Bab-07 - Enkapsulasi (Encapsulation)
 
Permutasi dan kombinasi
Permutasi dan kombinasiPermutasi dan kombinasi
Permutasi dan kombinasi
 
Aljabar boolean(1)
Aljabar boolean(1)Aljabar boolean(1)
Aljabar boolean(1)
 
2. galat
2. galat2. galat
2. galat
 
Laporan modul 5 basisdata
Laporan modul 5 basisdataLaporan modul 5 basisdata
Laporan modul 5 basisdata
 
Matematika Diskrit kombinatorial
Matematika Diskrit  kombinatorialMatematika Diskrit  kombinatorial
Matematika Diskrit kombinatorial
 
Makalah Kegunaan Matematika Diskrit pada Teknik Informatika
Makalah Kegunaan Matematika Diskrit pada Teknik InformatikaMakalah Kegunaan Matematika Diskrit pada Teknik Informatika
Makalah Kegunaan Matematika Diskrit pada Teknik Informatika
 
Rekursi dan Induksi Matematika
Rekursi dan Induksi MatematikaRekursi dan Induksi Matematika
Rekursi dan Induksi Matematika
 
Aljabar boolean MK matematika diskrit
Aljabar boolean MK matematika diskritAljabar boolean MK matematika diskrit
Aljabar boolean MK matematika diskrit
 
Use skenario
Use skenarioUse skenario
Use skenario
 
Logika dasr
Logika dasrLogika dasr
Logika dasr
 
Pertemuan 02 teori dasar himpunan
Pertemuan 02   teori dasar himpunanPertemuan 02   teori dasar himpunan
Pertemuan 02 teori dasar himpunan
 
Tugas normalisasi imaika penjualan komputer
Tugas normalisasi   imaika penjualan komputerTugas normalisasi   imaika penjualan komputer
Tugas normalisasi imaika penjualan komputer
 
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
4.1 Operasi Dasar Singly Linked List  1 (primitive list)4.1 Operasi Dasar Singly Linked List  1 (primitive list)
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
 

Similar to Pengantar Pointer untuk Pembelajaran Struktur Data (Java)

Tugas1
Tugas1Tugas1
Tugas1Av Ri
 
Pertemuan 6 Struktur Data, Algoritma dan Pemrograman
Pertemuan 6 Struktur Data, Algoritma dan PemrogramanPertemuan 6 Struktur Data, Algoritma dan Pemrograman
Pertemuan 6 Struktur Data, Algoritma dan PemrogramanPrasetyo Adi
 
Dts x dicoding #3 memulai pemrograman kotlin
Dts x dicoding #3 memulai pemrograman kotlinDts x dicoding #3 memulai pemrograman kotlin
Dts x dicoding #3 memulai pemrograman kotlinAhmad Arif Faizin
 
Bab ii keg pembel 6 array
Bab ii keg pembel 6  arrayBab ii keg pembel 6  array
Bab ii keg pembel 6 array087dwi
 
JavaScript Standard Library.pdf
JavaScript Standard Library.pdfJavaScript Standard Library.pdf
JavaScript Standard Library.pdfPutri Sari
 
Algoritma&Pemrograman C++ Pertemuan 9
Algoritma&Pemrograman C++ Pertemuan 9Algoritma&Pemrograman C++ Pertemuan 9
Algoritma&Pemrograman C++ Pertemuan 9Menny SN
 
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Melina Krisnawati
 
Belajar vb pada excel
Belajar vb pada excelBelajar vb pada excel
Belajar vb pada excelEdi Rakhmat
 
Algoritma&Pemrograman C++ Pertemuan 10
Algoritma&Pemrograman C++ Pertemuan 10Algoritma&Pemrograman C++ Pertemuan 10
Algoritma&Pemrograman C++ Pertemuan 10Menny SN
 

Similar to Pengantar Pointer untuk Pembelajaran Struktur Data (Java) (20)

Tugas1
Tugas1Tugas1
Tugas1
 
Laporan praktikum jawaban 10 algoritma(1)
Laporan praktikum jawaban 10 algoritma(1)Laporan praktikum jawaban 10 algoritma(1)
Laporan praktikum jawaban 10 algoritma(1)
 
Pertemuan 6 Struktur Data, Algoritma dan Pemrograman
Pertemuan 6 Struktur Data, Algoritma dan PemrogramanPertemuan 6 Struktur Data, Algoritma dan Pemrograman
Pertemuan 6 Struktur Data, Algoritma dan Pemrograman
 
Basic Counting
Basic CountingBasic Counting
Basic Counting
 
Dts x dicoding #3 memulai pemrograman kotlin
Dts x dicoding #3 memulai pemrograman kotlinDts x dicoding #3 memulai pemrograman kotlin
Dts x dicoding #3 memulai pemrograman kotlin
 
Bab ii keg pembel 6 array
Bab ii keg pembel 6  arrayBab ii keg pembel 6  array
Bab ii keg pembel 6 array
 
JavaScript Standard Library.pdf
JavaScript Standard Library.pdfJavaScript Standard Library.pdf
JavaScript Standard Library.pdf
 
Bab8.array
Bab8.array Bab8.array
Bab8.array
 
Vb
VbVb
Vb
 
Algoritma&Pemrograman C++ Pertemuan 9
Algoritma&Pemrograman C++ Pertemuan 9Algoritma&Pemrograman C++ Pertemuan 9
Algoritma&Pemrograman C++ Pertemuan 9
 
Structure and pointer
Structure and pointerStructure and pointer
Structure and pointer
 
Arrays c++
Arrays c++Arrays c++
Arrays c++
 
Topik 12 Pointer
Topik 12 PointerTopik 12 Pointer
Topik 12 Pointer
 
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
 
Bab8.array
Bab8.array Bab8.array
Bab8.array
 
Belajar vb pada excel
Belajar vb pada excelBelajar vb pada excel
Belajar vb pada excel
 
Wirman algoritma
Wirman algoritmaWirman algoritma
Wirman algoritma
 
Algoritma Symboolon
Algoritma SymboolonAlgoritma Symboolon
Algoritma Symboolon
 
Algoritma&Pemrograman C++ Pertemuan 10
Algoritma&Pemrograman C++ Pertemuan 10Algoritma&Pemrograman C++ Pertemuan 10
Algoritma&Pemrograman C++ Pertemuan 10
 
Algoritma
AlgoritmaAlgoritma
Algoritma
 

Pengantar Pointer untuk Pembelajaran Struktur Data (Java)

  • 1. Pengantar Struktur Data I (pointer java) Maret 2018 Learning Class Himpunan Mahasiswa Teknik Informatika UIN Syarif Hidayatullah Jakarta
  • 2. README.MD Pengantar untuk struktur data, karena ada materi seperti pointer yang harusnya dipahami(kadang tidak dipelajari atau tidak dipahami) dulu sebelum masuk ke struktur data.
  • 4. Analogi 1 Sumber : Nick Brazzi, https://www.lynda.com/Mac-OS-Server-tutorials/Understanding-how-processor-RAM-hard-drive-performance-a ffect-speed/191499/366317-4.html
  • 5. Analogi 2 Sumber : Dane Hartman, https://www.youtube.com/watch?v=kjD5OUroAh4 RAM
  • 6. Analogi 3 Sumber : Avram Plitch, https://www.laptopmag.com/articles/faster-than-an-ssd-how-to-turn-extra-memory-i nto-a-ram-disk
  • 7. Pemrosesan Data ▫ Pemrosesan data dilakukan di CPU yang mempunyai kecepatan tinggi. ▫ Kecepatan HDD sangat lambat, apalagi dibanding CPU. ▫ Agar tidak terjadi bottleneck, data yang akan diproses ataupun diprediksi akan diproses “mengantri” di RAM.
  • 8. Struktur Data ▫ Teknik bagaimana menyimpan data sesuai dengan kebutuhan. Umumnya bagaimana menyimpan di RAM. ▫ Karena di setiap Teknik penyimanan data pasti ada kelebihan dan kekurangan (tradeoff) dari segi memori dan waktu. Dan kita harus memilih mana Teknik yang tepat untuk program yang sesuai. ▫ Contoh, program yang sama menggunakan struktur data yang berbeda akan menggunakan memori dan waktu yang berbeda secara signifikan, terutama jika data dalam jumlah besar.
  • 9. Bagaimana Data Disimpan dalam RAM? ▫ Seperti yang kita tahu, bentuk asli data adalah biner atau bit(1 dan 0) ▫ 1 byte = 8 bit ▫ 1 kilobyte = 1024 byte ▫ 1 megabyte = 1024 kilobyte ▫ 1 gigabyte = 1024 megabyte … dan seterusnya
  • 10. Bagaimana Data Disimpan dalam RAM? ▫ Misal di computer Apple II dengan arsitektur 16 bit, RAM berukuran 48 kilobyte ▫ Kita ingin menyimpan integer yang pada saat itu berukuran 2 byte Sumber : Wikipedia, https://en.wikipedia.org/wiki/Apple_II_series
  • 11. Bagaimana Data Disimpan dalam RAM? ▫ Data di RAM disimpan dalam satuan byte. ▫ 48 kilobyte = 48 * 1024 byte = 49,152 byte ▫ Berarti RAM tersemut mempunyai alamat dari 1 sampai alamat ke 49,152 untuk menyimpan data.
  • 12. Simulasi Kemudian kita mencoba menyimpan angka 7 di alamat 49,151 Berapapun angkanya, ukuran nya tetap 2 byte karena tipe datanya integer. integer tersebut akan memakai 2 tempat, yaitu alamat 49,151 dan 49,152 karena integer berukuran 2 byte Kita ingin menyimpan angka 5970, Representasi biner nya : 1011101010010 Representasi biner diatas berukuran 13 bit, Sehingga harus di pas kan menjadi 16 bit (16 bit = 2 byte (ukuran integer) ) 0001011101010010 Kemudian kita pecah menjadi 8 bit agar dapat disimpan di RAM 00010111 01010010 Misal integer tersebut kita simpan di alamat 1 Maka integer tersebut akan memakai 2 tempat, yaitu alamat 1 dan 2 karena integer berukuran 2 byte Alamat 1 2 3 sampai 49,1150 49,151 49,152 bit 0 0 0 1 0 1 1 1 0 1 0 1 0 0 1 0 … 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
  • 13. Keadaan Sebenarnya ▫ Dalam keadaan sebenarnya, kita tidak sewenang-wenang menentukan alamat untuk data/objek baru. ▫ Anggap saja sebagai abstraksi program meminta alamat ke memory manager, lalu memory manager memberi alamat nya ▫ Dan jika variable tersebut sudah tidak terpakai, memory manager akan automatis menghapus data di memori tersebut.
  • 14. Tambahan Strukr data juga berkaitan dengan cache, memory berukuran (sangat) kecil di CPU yang memiliki access teime (sangat) cepat
  • 16. Pointer ▫ Pointer adalah variable yang menyimpan alamat di memori dari sebuah data. ▫ Di computer umumnya alamat memori ditampilkan dalam bentuk hexadecimal (bilangan basis 16)
  • 17. Keyword “new” ▫ Fungsi new adalah fungsi untuk memesan alamat untuk suatu data, sehingga data bisa disimpan di alamat tersebut ▫ Nilai kembalian (return value) dari fungsi new = alamat yang telah dipesan
  • 18. Tipe Data ▫ Primitif : ▫ int : long int, … long long int ▫ float : float, double, … long long double ▫ char ▫ Boolean ▫ Dan yang lainnya ▫ Non-Primitif : ▫ String ▫ Array ▫ Class ▫ Dan yang lainnya
  • 19. Keyword “new” ▫ Untuk tipe data non-primitif(pengecualian : String) kita harus mendeklarasikan sebagai berikut agar bisa dipakai : ▫ Mahasiswa m1 = new Mahasiswa(); ▫ int arr[] = new int[10]; ▫ Atau bisa juga seperti ini : ▫ Mahasiswa m1; m1 = new Mahasiswa(); ▫ Int arr[] arr = new int[3];
  • 20. Keyword “new” ▫ Jika tanpa menggunakan keyword new (pengecualian : string), apakah data bisa digunakan (dalam Bahasa java)? Misal : ▫ Mahasiswa m1; (baris 1) ▫ m1.setNama(“Ahmad”); (baris 2) ▫ Jawaban : tidak bisa, karena perintah di baris 1 hanya membuat variabel pointer (m1) yang nilainya kosong (null) ▫ Kenapa nilainya kosong (null)? Karena kita belum mengasssign alamat memory ke variable pointer m1
  • 21. Keyword “new” ▫ Bagaimana caranya agar m1 bisa dipakai? ▫ Pertama kita, harus assign alamat memori ke variable pointer m1. ▫ Sehingga kita harus memesan memory untuk menaruh objek mahasiswa tersebut menggunakan fungsi new() dan mengassign nilai kembalian dari fungsi new() (yang berisi alamat) ke variable pointer m1.
  • 22. ▫ Diberikan sebuah class Mahasiswa Contoh Kasus
  • 23. ▫ Apa output dari program tersebut? (nilai dari m1.getNama() dan m1. getNim() di baris 26 dan 27) ▫ Program tersebut akan beroutput : Nama : budi NIM : 99 ▫ Mengapa terjadi seperti itu? Contoh Kasus
  • 24. Simulasi Mahasiswa m1; Membuat variable pointer of Mahasiswa. Nilai dari m1 adalah NULL alias kosong
  • 25. Simulasi Mahasiswa m1; m1 = new Mahasiswa(); Meminta alamat kepada memory manager untuk data/objek baru Mahasiswa (fungsi new). Lalu menyimpan alamat tersebut di variable pointer m1 Misal kita diberi alamat 59,122 Anggap saja sebagai abstraksi jika ukuran objek Mahasiswa adalah 10 byte (ngasal) Maka nilai variable m1 = 59,122 Woi minta alamat dong buat objek Mahasiswa Oke, pake alamat 59,122 ya, disana kosong
  • 26. Simulasi Mahasiswa m1; m1 = new Mahasiswa(); m1.setNama("andi"); m1.setNim(1); Mengeset property menggunakan setter dan getter Alamat 59,122 sampai 59,132 Objek Mahasiswa Nama = andi Nim = 1 getNama() setNama() getNim() setNim Variabel pointer m1 = 59,122
  • 27. Simulasi Mahasiswa m1; m1 = new Mahasiswa(); m1.setNama("andi"); m1.setNim(1); Mahasiswa m2; Membuat variable pointer m2, bernilai null karena belum diisi Sehingga m2 tidak menunjuk kemana-mana Alamat 59,122 sampai 59,132 Objek Mahasiswa Nama = andi Nim = 1 getNama() setNama() getNim() setNim Variabel pointer m1 = 59,122 Variabel pointer m2 = NULL
  • 28. Apa yang terjadi ketika kita melakukan m2.setNama(“Asal”) Akan terjadi error null pointer exception karena mengakeses method/property dari object yang bernilai null (seperti yang sudah dibahas tadi) Simulasi Mahasiswa m1; m1 = new Mahasiswa(); m1.setNama("andi"); m1.setNim(1); Mahasiswa m2; Alamat 59,122 sampai 59,132 Objek Mahasiswa Nama = andi Nim = 1 getNama() setNama() getNim() setNim Variabel pointer m1 = 59,122 Variabel pointer m2 = NULL
  • 29. Simulasi Mahasiswa m1; m1 = new Mahasiswa(); m1.setNama("andi"); m1.setNim(1); Mahasiswa m2; m2 = m1; Mengisi m2 dengan alamat 59,122. Tidak ada objek baru yang dibuat ataupun tidak mengopi objek baru. Alamat 59,122 sampai 59,132 Objek Mahasiswa Nama = andi Nim = 1 getNama() setNama() getNim() setNim Variabel pointer m1 = 59,122 Variabel pointer m2 = 59,122
  • 30. Simulasi . . . Mahasiswa m2; m2 = m1; m2.setNama("budi"); m2.setNim(99); Merubah alamat objek mahasiwa yang ditunjuk oleh variable pointer m2, yaitu alamat 59,122 Alamat 59,122 sampai 59,132 Objek Mahasiswa Nama = budi Nim = 99 getNama() setNama() getNim() setNim Variabel pointer m1 = 59,122 Variabel pointer m2 = 59,122
  • 31. ARRAY
  • 32. Review Array ▫ Ukuran harus tetap, tidak bisa berubah-rubah. ▫ Tipe data harus sama.
  • 33. int iseng[3]; iseng[0] = 4; iseng[1] = 5970; iseng[2] = 7; ▫ Masih di computer Apple II, kita akan membuat array iseng yang berisi 3 data integer. ▫ Array disimpan secara berurutan ▫ Integer = 2 byte ▫ Array ini menggunakan memori 6 byte. ▫ Contoh : ▫ Alamat 20,183 = iseng[0] (20,183 sampai 20,184) ▫ Alamat 20,185 = iseng[1] (20,185 sampai 20,186) ▫ Alamat 20,187 = iseng[2] (20,187 sampai 20,188) Array
  • 34. Simulasi int iseng[] = new Int[3]; Memesan memori sebesar 2 byte x 3 = 6 byte. Misal kita mendapatkan memori kosong di alamat 20,183 Sehingga alamat 20,183 sampai 20,188 akan digunakan. Woi minta alamat dong buat objek Array of integer. Ukuran total 6 byte Oke, pake alamat 20,183 ya, disana kosong
  • 35. Simulasi Alamat 20,182 20,183 20,184 20,185 20,186 bit … (data lain) 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Alamat 20,187 20,188 20,189 20,190 20,191 bit 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 …(kosong untuk menyimpan data lain) int iseng[] = new Int[3]; iseng[0] = 4; Mengisi array pertama (index 0 (iseng[0])) di alamat 20,183 (alamat 20,183 sampai 20,184 yang dipakai) iseng[0]
  • 36. Simulasi Alamat 20,182 20,183 20,184 20,185 20,186 bit … (data lain) 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 0 1 0 0 1 0 Alamat 20,187 20,188 20,189 20,190 20,191 bit 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 …(kosong untuk menyimpan data lain) int iseng[] = new Int[3]; iseng[0] = 4; iseng[1] = 5970; Mengisi array kedua (index 1 (iseng[1])) di alamat 20,185 (alamat 20,185 sampai 20,186 yang dipakai) iseng[1]iseng[0]
  • 37. Simulasi Alamat 20,182 20,183 20,184 20,185 20,186 bit … (data lain) 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 0 1 0 0 1 0 Alamat 20,187 20,188 20,189 20,190 20,191 bit 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 …(kosong untuk menyimpan data lain) int iseng[] = new Int[3]; iseng[0] = 4; iseng[1] = 5970; Iseng[3] = 7; Mengisi array ketiga (index 2 (iseng[2])) di alamat 20,187 (alamat 20,187 sampai 20,188 yang dipakai) iseng[1]iseng[0] iseng[2]
  • 39. Author, License Herbert Abdillah abdillah.herbert@gmail.com ▫ https://www.linkedin.com/in/herbert abdillah ▫ http://herbertabdillah.my.id/ This license lets others distribute, remix, tweak, and build upon your work, even commercially, as long as they credit you for the original creation. This is the most accommodating of licenses offered. Recommended for maximum dissemination and use of licensed materials.
  • 40. Daftar Pustaka/Referensi Untuk Belajar Youtube “mycodeschol” Playlist data strucutre https://www.youtube.com/channel/UClEE sT7DkdVO_fkrBw0OTrA Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. 2009. Introduction to Algorithms, Third Edition (3rd ed.). The MIT Press.