Transcript for:
Panduan Dasar Array dalam Java

Nah yang akan kita pelajari hari ini yaitu tentang array. Jadi array ini adalah struktur data yang salah satu ya, salah satu struktur data. Dan pasti kalian sudah familiar dengan istilah array karena pernah dipelajari di dasar-dasar pemrograman. Hai ya nah the right is the most commonly used data storage structure jadi ini adalah struktur data struktur penyimpanan data yang the most commonly used paling banyak digunakan because I also well now karena ini sangat terkenal the over a convenient jumping off place for introducing data structures and forcing how object oriented programming and data structure related to one another jadi intinya adalah bahwa array ini menawarkan kemudahan dalam proses penyimpanan data dan juga nanti sebagai pengantar ke object oriented programming dan ini ada hubungannya oke nanti kita akan coba lihat dan di bab ini itu ada pengantar tentang array dalam Java dan juga mendemonstrasikan homemade array kelas jadi sebuah kelas dari array yang kita buat sendiri homemade dibuat di rumah istilah kayak makanan aja ya homemade atau kerajinan Oke we also examine a special kind of array kita juga akan coba melihat jenis khusus dari array yaitu the order array atau array yang sudah terurut ya in which the data store in ascending dimana datanya itu disimpan secara menaik dari yang terkecil ke yang terbesar or descending key order atau menurun ya key order urutan this arrangement makes possible fast way of searching of a data item misalnya the binary search, jadi susunan ini apakah itu urutan menaik atau menurun itu membuat proses pencariannya itu nanti akan cepat kalau kita mencari sebuah data di data yang sudah terurut itu akan lebih mudah karena datanya sudah diurutkan tapi coba bayangkan kalau melakukan proses pencarian pada data yang belum terurut maka ya mau gak mau kita harus cek satu-satu gitu ya nah ada istilah java workshop applet tapi disini saya juga belum mengeksplor explore lebih jauh tentang Java workshop atlet ini jadi nanti ini semacam apa ya graphical user interface jadi semacam visual bagaimana proses insertion insertion itu maksudnya kita tambah data ke Rai searching berarti proses pencarian dalam Rai kemudian relation itu proses menghapusan data dalam array kemudian kita akan menunjukkan beberapa sampel java code kemudian nanti ada contoh program java nya juga oke, nah ini array workshop applet ini jadi saya juga belum mengeksplore lebih dalam jadi saya tidak akan bahas untuk terkait hal ini ini eh tapi di sini coba lihat dia ngasih contoh Anggap aja misalkan kamu adalah kamu sedang melatih kids League baseball jadi baseball anak kecilnya 3 baseball kecil and you want to keep track dan kamu ingin apa memantau terus of which players pemain mana saja yang hadir di lapangan latihan And what you need? Apa yang kamu butuhkan is an attendance monitoring program. Yang kamu butuhkan adalah sebuah program untuk memonitor kehadiran for your laptop, untuk laptopmu. Yaitu sebuah program yang maintains a database, yang menjaga database dari semua pemain who have shown up for practice, yang sudah datang untuk berlatih. You can use a simple data structure kamu bisa menggunakan struktur data yang sederhana to hold this data ya menyimpan data ini There are several actions you would like to be able to perform Nah ada beberapa aksi yang mungkin kamu dapat lakukan Pertama insert a player into data structure Jadi kalau ada pemain yang datang kita masukin ke database gitu ya Oke, kalau datang pemain yang baru datang, itu dimasukkan ke database, insert namanya, kemudian check to see whether a particular player is present, kemudian check apakah pemain tertentu itu hadir atau enggak by searching for the player's number in the structure. dan more so on proses pencarian misalnya nomor pemain berapa itu kata kuncinya delete a player from the data structure when the player goes home kemudian kita hapus pemain dari data, struktur data dari database ketika pemain tersebut pulang these 3 operations, jadi kalau kita lihat gambarannya tadi, itu paling tidak ada 3 Proses, ada insertion, proses penambahan data, kemudian searching, proses pencarian data, dan deletion, proses penghapusan data. Dan ketiga proses ini will be fundamental once in most of the data storage structures we will study in this book. Dan ini adalah proses yang sangat fundamental pada kebanyakan struktur penyimpanan data yang nanti akan dipelajari. di buku ini we often begin the discussion of a particular data structure by demonstrating it tapi disini ada demo dulu katanya dengan menggunakan workshop applet ini harapannya will give you a feeling akan memberikanmu sebuah rasa forward the structure and its algorithm untuk dapat gambaran seperti gambaran, gimana sih sebenarnya struktur penyimpanan data dan juga algoritma nah, sebelum nanti jelaskan penjelasannya ini ada workshop upload dari array yang menunjukkan bagaimana sebuah array bisa digunakan dalam proses insertion, searching, and deletion oke, ini cara mulainya, nanti ada di appendix A ini bisa kalian nanti baca lagi nah gambar 2.1 ini menunjukkan hasil array yang terdiri dari 20 elemen coba lihat disini, jadi array nya ada 20 elemen dari indeks ke 0 sampai indeks ke 19 10 of which have data items in them 10 diantaranya itu sudah mempunyai data Dari indeks ke 0 sampai indeks ke 9 itu sudah ada datanya Dan you can think of these items are represent your Oke, kamu bisa memikirkan atau coba bayangkan bahwa Data yang ada di sini itu merepresentasikan pemain baseballmu Jadi kan kamu tadi anggaplah sebagai seorang pelatih pemain baseball anak kecil imagine that each player has been issued a team shirt bayangkan bahwa setiap pemainnya sudah diberikan kaos team dengan nomor punggung yang ada di belakang to make things visually interesting untuk membuat segalanya menarik secara visual the team shirt The search comes in a variety of colors Jadi bajunya itu katanya warna-warni, you can see is player's number and search color in the array gak keliatan ya, kalau colornya disini oke, tapi disini, ini bayangkan aja angka-angka yang ada disini adalah nomor pemain, nomor punggung pada pemain dan ini menunya dari workshop update-nya the new field, insert find delt dups ok dups ok itu berarti duplikat oke ya ini boleh double kalau no dups berarti nggak boleh double ini numbernya mungkin kalau melakukan pencarian atau penambahan tinggal di sini nanti akan dimasukin insert melakukan pencarian ini kata kuncinya disimpan di sini Hai di number Oke Please apply demonstrate, ada 3 prosedur datanya, ada Insert button untuk menambah data, Find button untuk melakukan proses pencarian, dan Del untuk melakukan penghapusan data. Oke, kita lanjut ke insertion dulu. Start with the default arrangement. Jadi misalnya defaultnya sudah ada. Oke, sorry ini defaultnya ada 20 cell, jadi arraynya itu ada 20 element, itu 20 cell dan 10nya sudah ada datanya. And the no-dub button selected, kemudian no duplicates ya, jadi nggak boleh ada duplicate si nomor punggungnya itu, jadi setiap orang nomor punggungnya beda-beda. You insert the baseball player's number into the array when the player arrives at it. Jadi kamu nambahin... Nomor pemain baseballnya itu ketika ke dalam rai, ketika si pemainnya datang di lapangan olahraga, lapangan latihan. Setelah having been dropped off by a parent. Setelah di drop off, drop off itu berarti diantarin sama orang tuanya. To insert a new item. Hai Nah untuk menambahin item baru present button di ketik dulu 678 misalnya terus nanti tinggal pencet tombol Insert button Oke gitu cara menginsert dengan workshop upload tadi ya untuk apa ya lebih menarik aja secara visual ya memudahkan pemahaman Oke, terus kita coba lihat searching, nah berarti kita masukin dulu nomor punggungnya, kemudian nanti pencet find. Kalau deletion, berarti ketik dulu kata kuncinya, nomor yang mau di-delete, kemudian pencet delete. To delete an item, coba lihat dulu. Untuk menghapus sebuah item, you must first find it. Kamu harus. pertama harus mencarinya dulu apakah data yang mau kita hapus itu ada dalam penyimpanan data kita nah jadi setelah after you type in the number of the item setelah kita nulis nomor the number disini maksudnya nomor punggungnya dari item yang mau kita hapus repeat it button presses will cause the arrow to move step by step down selanjutnya, jadi nanti akan ada proses pencariannya dulu intinya the next button press delete the item kalau ketemu baru kita pencari and the cell becomes empty dan cell tersebut akan menjadi kosong tidak ada datanya, strictly speaking this step isn't necessary Sejujurnya langkah ini tidak perlu karena kita akan copy over this cell anyway. Kita akan copy ulang cell ini, but deleting the item makes it clearer what is happening. Tapi dengan menghapus item itu maksudnya akan lebih jelas. Apa sih yang terjadi ketika mau kita hapus ya. Dia jadinya kosong Implicit in the deletion algorithm Is the assumption that holes are not allowed Nah Secara implisit dalam algoritma penghapusan ini, kita ada sebuah asumsi di mana holes atau lubang, lubang itu maksudnya sel saya yang kosong, are not allowed, itu tidak diperbolehkan in the right. A hole is one or more empty cells that have few cells above them. Jadi sebuah lubang itu adalah satu atau lebih dari. 1 sel kosong atau lebih yang sudah terisi sel-sel yang ada diatasnya. Jadi kalau kosong itu misalnya, nah ini bayangin aja ini. Ini kan ada data array dari indeks ke 0 sampai indeks ke 9. Misalnya kita mau menghapus indeks yang ke 5. Berarti kan kosong indeks ke 5. Nah ini disebut dengan hole. Hole itu 1 atau... 1 sel kosong atau lebih yang indeks-indeks diatas itu ada datanya Nah ini indeks ke 6, 7, 8, 9 kan ada datanya berarti ini kosong Tapi ketika yang dihapusnya misalnya sel nomor 9, 32 ini tidak dianggap sebagai sel kosong Karena di indeks setelahnya atau keatas yang lebih besar itu memang kosong gak ada nilainya, jadi disebut kosong itu ini kalau sel saya diatasnya have filled cells above jadi mempunyai sel-sel yang sudah terisi diatasnya maksud diatas itu at higher index number yang indexnya lebih besar bilangan index if holes are allowed, jika lubang-lubangnya diboleh all the results become more complicated semua algoritmanya akan menjadi lebih kompleks kenapa lebih kompleks? karena mereka harus cek untuk melihat apakah sel itu kosong sebelum mengeksekasikan kontennya karena mereka harus mengecek untuk melihat apakah selnya kosong atau tidak sebelum kita melakukan proses berikutnya misalnya sebelum kita menghapus atau mencari maka kita harus selalu mengecek nah itu jadi lebih kompleks jadi kurang efektif kurang efisien dan juga the algorithm become less efficient jadi kurang efisien karena apa karena mereka they must waste time jadi itu Apa? Buang-buang waktu. Looking at unoccupied cells. Untuk melihat cells-cell yang tidak terisi. Unoccupied. For this reason, dengan alasan ini, occupied cell must be arranged continuously, no holes. These cells-cell yang sudah terisi, perlu disusun secara berurutan atau no holes atau tidak diperbolehkan. Jadi kebayang nggak kalau holes-nya itu dibolehkan, itu akan lebih kompleks. Kenapa? Karena kita harus selalu mengecek sel-sel yang kosong itu. Atau gini aja deh, coba bayangkan kita punya array dari 0 sampai 100. Yang sudah terisi, misalnya 10. Berarti kan yang 90 nya kosong ya ke belakang. Terus selama proses itu misalnya ada yang masuk lagi banyak gitu ya sampai misalnya 50 atau bahkan sampai 90. Kemudian dari situ banyak yang dihapus ya. Kalau holes nya dibolehkan berarti kan akan banyak yang kosong ya. Yang dihapus-hapus itu kan banyak yang kosong. Kalau tidak, kalau kita tidak menyusunnya kembali, sel-sel yang sudah terisi itu dideketin. Nah, yang kosong itu masalahnya ketika yang kosongnya banyak, maka kita harus memastikan. Nah, misalnya gini, kita melakukan proses pencarian data. Proses pencarian data pada array yang berisi 100 sel. Kalau kita mau mencari satu data, maka kita harus ngecek semua elemen meskipun elemen itu kosong sampai akhir tadi ya sampai indeks ke 100 harus dicari karena bisa jadi data yang mau kita cari itu ada di ujung karena sudah dihapus atau sudah ditambahin dan seterusnya tapi kalau false nya tidak dibuat yaudah kita hanya ngecek dari indeks pertama sampai data yang terakhir di dalam array itu jadi kalau datanya ada 10 aja misalnya jadi dari 100 itu 90 dihapus tapi kita kan gak tau itu sel yang mana yang dihapus selain kita harus ngecek semua selnya tapi kalau sudah kita mempaksa sudah deket-deketin yang 10 itu maka yaudah kita ngeceknya cuma dari 0 sampai indeks ke 9 Kalau tidak ditemukan berarti datanya tidak ada, tidak usah cek indeks ke 10 sampai 99. Itu kelebihannya maksudnya. Jadi setelah kita menemukan lokasi dari item yang kita cari, kan ada proses pencarian dulu ya. dan diletting it, dan kita menghapusnya the applet must shift the contents of each subsequent cell down one space to fill in the hole nah si applet ini harus shift, menggeser the contents isi dari of each subsequent cell dari setiap cell berikutnya jadi kalau index yang kelima ini dihapus, maka setiap indeks berikutnya sel ke 6, ke 7, ke 8, dan ke 9 itu harus digeser harus menggeser ke bawah one space satu langkah untuk mengisi lubangnya itu jadi gambarannya begini yang i11 ini digeser ke 5 ke indeks ke 5 ini diheser mundur satu langkah mundur satu langkah mundur satu langkah sehingga hasil dari proses penghapusannya akan seperti ini jadi hanya dari 0 sampai 8 yang ada datanya bayang ya ini proses penghapusan data if the vitamin cell 5 is deleted nah ini penjelasannya yang barusan sudah saya bahas a deletion requires Proses penghapusan ini membutuhkan dengan asumsi no duplicates are allowed. Dengan asumsi tidak ada duplikasi dibolehkan. Searching through an average of n per 2 elements and then moving the remaining elements an average. Jadi proses pencarian itu rata-ratanya adalah n per 2. Hai nah kalian kan pernah belajar apa itu efisiensi waktu ya bigo ya time efisiensi kemarin di kuliah pengantar komputasi komputasi matematik ya Nah disitu kan kalian pernah belajar ini enggak best case worst case and average case Jadi dalam menganalisis efisiensi algoritma, misalnya dari efisiensi waktu, maka... atau kelas ini belum ya? Saya lupa. Jadi proses pencarian itu rata-ratanya n per 2, di mana n itu adalah banyaknya elemen. Jadi kalau kita punya elemennya 10, berapa rata-rata kalau kita melakukan proses pencarian? Itu adalah n per 2. yang kedua itu kan seperti tengah-tengahnya ya 5 gitu ya rata-ratanya 5 kali proses pencariannya proses pencariannya kan kalau misalnya sequential ya berurutan jadi misalnya kita mau nyari 38 itu kan kita carinya dari awal dulu ya 84 sama nggak 61 sama nggak dan seterusnya gitu kan sampai kita ketemu di step yang ke-6 ini karena dari 0 ya kan Nah proses pencarian itu kenapa rata-ratanya yang berdua karena Kalau misalnya datanya ditemukan di sini, berarti kan sekali aja proses pencariannya, proses perbandingannya. Apakah 84 sama dengan 84? Oh iya sama, ketemu. Yaudah, berarti kan kita nggak usah nyari ke belakangnya, kan. Proses perbandingannya hanya sekali. Tapi gimana kalau datanya 32, berarti kan ketemunya baru di akhir. Ketemunya di sini, 32. Berarti 10 kali proses perbandingannya. Karena dia akan ngecek satu-satu dari awal Dan seterusnya 10 kali Kalau disini berarti 2 kali Disini 3 kali Disini 4 kali Dan seterusnya sampai pas di sini 10 kali Berarti kalau dirata-ratain itu 10 per 2 N per 2 Maksudnya disini rata-ratanya N per 2 Kemudian moving the remaining elements Kemudian memindahkan elemen sisanya, maksud memindahkan elemen sisa itu, kan setelah dihapus, nanti akan digeserin ya, mundur satu step ke belakang an average of them to fill up the resulting hole jadi proses pergeserannya ini juga sama n per 2 rata-ratanya jadi, logikanya gini kalau datanya yang dihapus di awal berarti yang digesernya ada 9, ya kan yang digesernya 9 nih mundur ke sini proses pergeserannya 9 kali kalau data yang mau kita carinya ditemukan di cell atau yang jangan di cell yang ini datanya ditemukan di cell yang indeks pertama maka yang digeser-gesernya ada 8 jadi kalau 1 tadi 9 kalau 2 8 dan Kalau ditemukannya di sini, 7 Yang digeser Kalau di sini, 6 Di sini, 5 Dan seterusnya Semakin kita Semakin di sini, maka proses pergeserannya akan semakin kecil Jadi kalau ketemunya di sini Semua satu aja yang digeser Kalau ketemunya di sini, gak usah ada yang digeser Nah, kalau kita rata-ratakan Berbagai kemungkinan tadi Rata-ratanya juga sama N per 2 proses pergeserannya itu ingat itu rata-rata rata-rata itu berarti mempertimbangkan semua kemungkinan oke, kita lanjut ke the duplicate issue the duplicate issue jadi isu penggandaan yang maksudnya ada elemen yang bernilai sama coba kita lihat when you design a data story structure ketika kamu men-design sop struktur penyimpanan data unit to decide kamu harus memutuskan kamu perlu memutuskan Apakah item-item nya itu with duplicate duplicate keys will be allow Apakah item yang nanti akan kita simpan itu membolehkan eh kata kunci yang duplicate yang lebih dari satu Bisa 2, bisa 3, dan seterusnya Apakah itu diboleh? If you are working with a personal file Jika kamu bekerja pada data orang Personal itu bisa pegawai And the key is an employee number Dan kata kunci dari setiap personal itu adalah Employee number Nomor pegawai maka duplicates don't make much sense maka proses apa itu? penggandaan atau nilai yang bernilai ganda atau nomor pegawai yang bernilai ganda itu tidak masuk akal iya kan? karena yang namanya nomor pegawai itu kan unik biasanya jadi nggak ada dua orang yang nomor pegawainya sama Atau contoh aja mahasiswa, kalian sebagai mahasiswa, tidak ada 2 mahasiswa yang namenya sama atau nomor KTP. Setiap orang punya unique. Nah sehingga there is no point in assigning the same number to 2 employees. Jadi nggak ada apa yang nggak ada, nggak ada point. Nggak mungkin lah intinya. Gak mungkin kita memberikan nilai nomor pegawai yang sama ke 2 pegawai. Di sisi lain, if the key value is last name, Kalau kata kuncinya misalnya adalah nama terakhir, then there is distinct possibility several employees will have the same key value. Maka ada kemungkinan bahwa beberapa pegawai itu mempunyai nama belakang yang sama. Nah, dalam kasus ini, so duplicate should be allowed. Sehingga data yang double-double atau mungkin triple itu bisa saja terjadi. Nah, jadi sekali lagi katanya, sebelum kita menyimpan data, kita harus amati ini dulu. Apakah data yang mau kita simpan ada kemungkinan duplikates atau enggak? Kalau misalnya setiap data yang mau kita simpan punya key. Kata kunci itu maksudnya data atau informasi yang unik, di mana setiap orang berbeda, kayak name, NIK, kemudian nomor pegawai, itu kan unik. Maka itu kita bisa pastikan tidak mungkin ada duplikasi. Tapi kalau tidak ada informasi yang unik seperti itu, maka kita harus menyiapkan kemungkinan adanya duplikasi. Coba kita lanjut Of course, tentu saja untuk pemain baseball tadi duplicate number should not be allowed Jadi bilangan yang duplicate itu harusnya tidak diperbolehkan Keeping track of the player should be hard Untuk menjaga memantau pemain akan sulit if more than one word the same number Hai jika lebih dari satu orang memakai nomor yang sama ya jika kita tadi ingin memantau sih nomor punggung ini ada enggak tapi kalau ternyata ada dua orang yang menggunakan yang sama Nah itu kan ini yang mana yang tadi dimaksud nomor punggung yang mana karena ada dua orang nomor yang sama jadi dalam proses mengevaluasi nya nanti akan hard sulit karena kita harus ngecek nomor punggung 9 tapi namanya si a nomor punggung 9 namanya si b itu kan akan repotnya if you're writing the data storage program jika kamu menulis sebuah program penyimpanan data di mana Duplicates-nya tidak diperbolehkan You may need to work against human error Kamu mungkin membutuhkan penjagaan terhadap kesalahan manusia Selama proses insertion Pemasukan data by checking Dengan mengecek all the data items in the array dengan mengecek semua data yang ada dalam array untuk memastikan bahwa tidak ada diantara mereka already has the same key yang mempunyai kata kunci yang sama nilai as the items being inserted jadi kalau kamu membuat sebuah program yang dimana duplikatnya tidak diproblehkan maka kita harus menjaga dari kesalahan manusia nih human error karena nanti yang masukin kan manusia misalnya kita masukin nomor punggung 9 kan nah berarti kan kita harus ngecek apakah 9 itu yang kata kuncinya 9 itu sudah ada atau belum dalam data yang kita maksud yang ada yang sudah tersimpan kenapa karena bisa jadi orang yang masukin 9 tadi itu typo gitu ya atau ya human error harusnya 19 bukan 9 kalau 9 udah ada udah ada tersimpan di apa di data penyimpanan tapi kalau 19 belum ada nah itu kan human error si user masukin 9 padahal yang dia maksud adalah 19 karena nomor 9 itu sudah ada dalam tempat penyimpanan ya kan Nah, berarti kalau misalnya masukin 9, ternyata sudah ada, ya sudah bisa dimunculkan. Ada notif atau ada informasi ke user bahwa nomor 9 itu sudah tersimpan. Kenapa itu perlu? Karena kalau tidak ada proses pengecekan itu, nanti akan double nomor 9. Sedangkan kita mengharapkan... agar program atau sistem yang kita buat itu duplicatesnya are not allowed nah gitu oke this check inefficient this check is inefficient pengecekan ini akan tetapi pengecekan ini sebenarnya tidak efisien and increase the number of steps required for an insertion for 1 to n dan meningkatkan apa ya malah menambah banyaknya step atau langkah yang dibutuhkan untuk sebuah proses penambahan data dari 1 sampai n ya gak? coba bayangkan kalau misalnya datanya ada 100 setiap kita menambah melakukan proses penambahan data Kita harus selalu ngecek bandingkan dengan semua data yang ada Apakah kata kunci yang kita masukkan itu keyword yang misalnya tadi nomor punggung ya Yang kita masukkan itu belum ada dalam database nya Berarti kan ngecek perlu proses pengecekan Nah ini perlu proses pencarian yang atau pengecekan yang efisien Karena kalau dicek satu-satu kebayangnya terlalu banyak proses yang harus kita lakukan hanya untuk menambahkan satu data, nanti kalau ada data baru cek lagi, for this reason dengan alasan ini, our applet, our applet doesn't perform this check, tapi applet yang tadi ditunjukkan itu tidak melakukan pengecekan ini, oke sampai sini dulu, ada yang mau bertanya Aduh maaf nih, saya udah 37 menit ngobrol. Kalian masih menyemak atau ada yang tertidur? Kalau online gini kan, saya nggak bisa memantau ya kalian sedang apa, karena yang ada di hadapan saya kan screen yang saya share. Jadi ini tanggung jawab kalian masing-masing untuk menyemak ya. Saya nggak bisa memantau ataupun memaksa kalian untuk menyimak. Tapi kalau di ruangan, saya bisa lihat semuanya. Oke, ada yang mau bertanya? Kalau tidak ada, kita lanjutkan. Searching duplicates. Melakukan proses pencarian di mana duplicates-nya itu diperbolehkan. Nah lowering duplicates Perbolehkan keyword key yang sama Complicates the search algorithm Itu sebenarnya akan membuat proses pencariannya itu lebih kompleks Kebayang gak kalau ada 2 orang yang nomor punggungnya sama Kemudian kita melakukan proses pencarian berdasarkan nomor punggung ini nomor siapa yang mau dicari ya nomor punggungnya ada dua kayak gitu lah jadi akan membuat lebih kompleks dan kita harus ngecek semuanya kalau di database kita duplicatenya allow kita harus ngecek semuanya misalnya gini kalau databasenya unique saya kesini deh Kalau kita lihat datanya ini kan nggak ada yang sama nilainya. Kalau kita mencari misalnya kata kunci pencariannya itu adalah 15. Terus kita cari dari awal ini apakah sama dengan 15? Tidak. Apakah sama dengan 15? Tidak. Apakah sama dengan 15? Oke ketemu. Nah kalau kita bekerja pada database di mana duplikasi. Pendaplikasi itu tidak diperbolehkan Pendaplikasi itu tidak diperbolehkan Maka Ketika kita menemukan 15, yaudah berhenti aja di sini. Iya kan? Karena kita nggak mungkin akan menemukan 15 lagi setelah ini. 15 itu hanya unik, hanya satu. Yaitu di sini ketemunya. Tapi kebayang nggak kalau duplicatenya itu diperbolehkan, duplikasinya diperbolehkan. Misalnya setelah ini mungkin ada 15-15 lagi. Maka mau tidak mau. kita harus melakukan proses pencarian sampai akhir sampai indeks terakhir karena boleh jadi 15 nya ada ketemu di indeks yang terakhir jadi gak bisa langsung stop disini jadi kita ketemu indeks 15 di indeks kedua nanti ketemu lagi 15 di indeks kelima nanti ketemu lagi 15 di indeks ke sembilan misalnya gitu itu hanya contoh Oke, jadi itu akan membuat proses pencariannya lebih kompleks. Nah, even if it finds a match, meskipun kita sudah menemukan data yang mau kita cari, it must continue. Dia harus berlanjut looking for possible additional matches. Kita harus terus mencari. kemungkinan data yang lain, karena duplicatenya kan diperbolehkan until the last occupied cell sampai data yang terakhir, data yang terisi data yang terisi yang paling akhir, the last seperti yang tadi saya alustrafikan, jadi kita harus melakukan proses pencarian sampai index yang paling akhir, kalau post duplicatenya itu diperbolehkan at least minimalnya this is one approach ini ada satu pendekatan ya gimana proses pencariannya you could stop, you could also stop after the first miss ya ini salah satu pendekatannya aja kamu boleh juga sih ketika sudah menemukan data yang cocok pertama kali yaudah berhenti aja how you proceed depends on whether the question is. Bagaimana kamu memprosesnya? Itu bergantung pada pertanyaan berikut. Find me everyone with blue eyes. Cari setiap orang yang mempunyai mata biru. Atau find me someone with blue eyes. Atau temukan seseorang yang bermata biru. Pertanyaan ini kan Beda maknanya ya, antara cari setiap orang yang bermata biru. Berarti, misalnya kita harus, mau gak mau harus melakukan pencarian sampai data yang paling akhir. Iya kan? Karena kita mengharapkan jawabannya itu semua orang yang bermata biru. Tapi kalau cari seseorang, berarti kalau seseorang ketika kita sudah menemukan satu orang, yang mata biru ya udah berhenti aja gitu when the dupes the dupes itu duplicate ok button ya tadi di applet itu ada dupes ok is selected ketika itu dipilih maka the applet takes the first approach maka si applet ini akan melakukan pendekatan yang pertama tadi ya dicari sampai index terakhir sampai data terakhir finding all item matching the search This approach always require and step. Nah, proses pencarian ini, di mana duplicates-nya diperbolehkan, maka proses pencariannya akan selalu n langkah. Berarti ya, jika kita punya 10 data, terus duplicates-nya diperbolehkan, maka proses pencariannya ya 10 langkah. Dari indeks awal sampai indeks yang terakhir. Iya kan? sesuai dengan banyaknya data kalau kita mengecek kecocokan dengan semua data ini because the algorithm must go all the way to the last occupier jadi terlepas key yang mau kita carinya itu berapa tetap dia akan selalu end step mau berapa pun kata kunci yang mau kita cari oke itu proses searching with duplicates kemudian Insertion with duplicate Proses penyesipan atau penambahan data dengan duplikasi Gimana nih proses penambahan data yang Dimana duplicatenya itu diperbolehkan Insertion is the same with duplicates alone as when they are not Nah proses penambahan data itu sama Baik itu dengan duplikasinya diperbolehkan kan Oh ketika tidak the single step Insert new item jadi satu langkah itu menambahkan data baru but remember tapi ingat if duplicate are not allowed jika duplikasinya tidak diperbolehkan and there is a possibility the user will attempt to input the same key twice dan Hai jika luper boleh diperlu duplikasinya tidak diperbolehkan itu ada kemungkinan si usernya kan memasukkan kata kunci yang sama dua kali padahal itu sudah ada maka disini you may need to check every existing item before doing an insertion kamu mungkin harus mengecek setiap data yang sudah ada sebelum melakukan proses penambahan data karena tadi seperti yang saya bilang, si user masukin 9, padahal yang dia maksud adalah 19, karena udah ngantuk, misalnya, ya, belakang malam ngantuk, ah, typo, ini harusnya 19 itu harus, kalau duplikasinya tidak diperbolehkan, maka harusnya cek setiap data yang ada, jangan sampai kata kuncinya itu sama oke, sekarang deletion with duplication, bagaimana proses... penghapusan data kalau duplikasinya diperbolehkan. Deletion may be more complicated when duplicates are allowed. Nah, proses penghapusan ini mungkin akan lebih kompleks ketika duplikasinya diperbolehkan depending on bergantung pada exactly how deletion is defined. Dan tapi ini bergantung pada bagaimana proses penghapusan ini didefinisikan atau bagaimana cara menghapusnya. If it means to delete only the first item with a specified value Jika itu maksudnya menghapus hanya the first item Hanya item pertama yang ditemukan Jadi misalnya kita mau hapus nomor punggung nomor 5 Sedangkan di database itu ada 2 orang yang nomor punggung 5, nah gimana maksud proses penghapusannya? Apakah itu maksudnya kita menghapus hanya the first item? Jadi 5 pertama yang kita temukan, hanya itu saja yang dihapus. Dan dimana itu rata-ratanya n per 2 comparison, perbandingannya rata-ratanya n per 2. dan n per 2 moves pergeseran gitu, jadi kalau yang dimaksud seperti itu yang pertama yang ditemukan itu yang dihapus yaudah, berarti sama aja dengan tadi ya, mau duplicate, mau enggak sama, ya kan membutuhkan segini dan seterusnya akan tetapi if, however Akan tetapi jika penghapusan ini maksudnya adalah menghapus every item with a specified key value, kita menghapus setiap data yang mempunyai kata kunci yang sama tersebut, the same operation may require multiple deletion, maka operasi yang sama mungkin perlu dilakukan berulang-ulang. Jadi, misalnya begini, hapus 1 data, Misalnya gini angka 5 nya ada 2 Kita hapus angka 5 pertama Terus geserin Cari lagi 5 Hapus, geserin Jadi prosesnya berulang-ulang Such an operation will require Checking and sales Proses operasinya ini akan Membutuhkan pengecekan terhadap And sell dan mungkin akan bergerak lebih dari m per 2 set dan mungkin akan butuh proses pergeselan lebih dari m The average depends on how the duplicates are distributed throughout the array. Rata-rata pengecekan. Itu bergantung pada bagaimana duplikasinya itu terdistribusi dalam array tersebut. Oke, nah ini kalau kita lihat proses pencarian perbandingan ya ketiga operasi ini antara no duplicates dengan duplicates ya. Jadi kalau proses pencarian no duplicates berarti n per 2 ya rata-ratanya. Kalau duplicates maka n-comparison, jadi mau gak mau kita harus ngecek sampai elemen yang terakhir, data terakhir makanya n kalau proses penambahan data itu sama aja katanya, mau dia boleh duplikasi, mau gak hanya saja tadi bedanya kalau duplikasinya tidak diperbolehkan kita harus melakukan proses pengecekan dulu, jangan sampai untuk menghindari tadi human error jangan sampai kata kunci yang dimasukkan itu duplicate ya sudah ada kemudian kalau deletion itu no duplicates ini and per two comparison and per two moves nah kalau duplicates ini ada and comparisons kenapa and comparisons Tadi tergantung maksudnya Mau menghapus semua yang samanya Atau hanya yang pertama ditemukan Yang itu yang dihapus Kalau yang pertama ditemukan Maka Delation nya sama aja dengan ini Kalau kita hanya menghapus salah satunya saja Itu yang pertama kali Ditemukan, tapi kalau kita Menghapus semua data Yang key nya sama Berarti comparisonsnya harus mau gak mau kita harus cek sampai elemen yang terakhir karena boleh jadi data yang mau dihapus itu data yang ada di akhir dan proses penggeserannya ini pasti lebih dari n per 2 oke, itu kira-kira gambarannya oke Kalau ada pertanyaan dulu, boleh silahkan ya. Nah, ini ada basic of arrays in Java. Dasar-dasar array dalam Java. Gimana cara mendefinisikan array dalam Java? The preceding section shows graphically and primary algorithms used for arrays. Nah, kita akan lihat sekarang bagaimana menulis program. terkait dengan array ini jika kamu adalah seorang ahli dalam java kamu bisa skip ke bagian selanjutnya kamu bisa aja skip aja skip aja yang section ini tapi tapi bahkan c dan c++ juga harus seek around tapi kalau kamu familiar dengan c dan c++ ya kamu mungkin coba lihat-lihat dulu rise in java use menggunakan sintaks familiar to that in c and c++ ini sebenarnya ada kemiripan katanya dengan c dan c++ and not that different from Other languages, but there are never some unique aspect. Tapi ada unique. Nah, makanya kalau kamu problema Java, mungkin coba lihat aja sekilasnya. Hanya pada perbedaan itu. Oke, ini nanti akan dipraktikannya di praktikum. Tapi, ini hanya bahas aja. Tapi ada modulnya ya, kalau dipraktikum. Nah, ini creating an array. Bagaimana cara membuat array. Nah, seperti yang sudah dibahas di bab 1, ada 2 jenis data dalam Java, ada primitive types, ada tipe data primitive seperti integer, double, float, gitu ya dan yang kedua tipe data objects ini jenis-jenis data ya jadi data itu ada yang primitive primitive itu ya memang hanya diperuntukkan untuk menyimpan data tapi kalau objects itu tidak hanya dia menyimpan data tapi juga ada method di dalamnya masih inget objek itu ada dua komponennya ada ada bisa menyimpan data dan juga metode atau function fungsi in many programming languages even object oriented one set array are primitive type dalam banyak bahasa pemrograman array itu adalah tipe data primitif ya ah jadi misalnya di C atau C++ itu array itu tipe data primitif ya dan juga di program lain tapi kalau dalam Java but in Java they are treated as objects tapi kalau dalam Java array itu dipandang sebagai objek terjemah bebasnya oleh karena itu you must see the new operator to create an array Coba lihat disini cara membuat array. Integer, karena ini array, jadi kita punya kurung siku kosong di depan tipe data primitifnya. Kemudian baru in array, ini adalah reference atau nama arraynya. Lihat, mendefinisikan sebuah reference dengan array, nama array. Kemudian si nama array ini kita jadikan objek. Makanya disini array sama dengan new int. Jadi kita membuat sebuah array yang tipe datanya itu adalah integer. Dan elemen yang kita pesan itu adalah 100. Banyaknya elemen, banyaknya cell. Or you can use the equivalent single statement across ato. dua baris perintah ini kita bisa tulis dalam satu baris saja seperti yang pernah saya bahas di kemaren ya jadi ini integer in array sama dengan ini tinggal keatasin aja ini sama dengan sama dengan new in nah the ini operator yang kurung siku 2 ini is the sign to the compiler itu adalah tanda untuk untuk si compiler, compiler itu si mesin lah yang meng-compile dari programnya we are naming an array object yang kemudian dinamakan sebagai object array and not an ordinary variable dan itu bukan variable biasa jadi ini adalah variable array, maksudnya bukan variable biasa you can also use an alternative syntax for this operator placing it after the name instead of the time, tapi katanya boleh juga itu disimpan setelah reference setelah nama dari arraynya ini nama arraynya, in array ini alternatif sintaks however, placing the tanda kurung siku ini after in makes it clear that the tapi kalau kita nyimpan ini setelah in Setelah tipe datanya, maka itu sebenarnya akan membuatnya jelas bahwa siku-rumsiku itu adalah bagian dari tipe datanya, bukan bagian dari namanya. Gitu aja, beda style, beda persepsi. Tapi intinya sama, boleh disimpan di sini atau di situ. Because an array is an object, karena array ini adalah sebuah objek, di mana dalam hal ini namanya in array, dan itu adalah reference to an array, it is not the array itself, itu bukan array itu sendiri. The array is stored at an address elsewhere in memory. Sebenarnya array-nya itu disimpan, pada semua alamat dimanapun dalam memori ya, dalam memori komputer and in array holds only this address dan in array ini Hai menyimpan hanya alamat ini tuh Jadi kalau dibayangkan renya itu sebenarnya adalah sebuah alamat di memori komputer di kalau kita mendefinisikan range maka itu renya itu sendiri sebenarnya tersimpan di sebuah alamat ya nggak tahu dimana dalam memori komputer itu nah Hai tapi Hai si alamat ray itu kita kasih nama namanya itu integer array atau reference supaya memudahkan aja gitu jadi kayak Win Bandung misalnya Win Bandung itu adalah nama ya kan dan alamatnya Itu ada di jalan Ahanasution Nomor berapa? 15 Bandung Jadi ada alamat ada juga nama Nama ini untuk Memudahkan nanti kalau kita mau Mengakses ke Tempat penyimpanannya Jadi tidak usah panjang Itulah mungkin analoginya Array have a length field Jadi array itu punya panjang Which you can use to find the size Yang kamu bisa gunakan untuk mencari ukuran Jadi ada panjangnya ya alokasi memory Oh ini nih karena array itu sebuah objek Maka untuk mencari berapa sih ukuran array yang kita punya Maka tinggal nama array.length Leng ini adalah nama field. Masih ingat? Field itu intinya data. Jadi dalam objek itu kan ada data atau field, ada juga method. Leng ini adalah field yang ada di kelas integer. Kan ini kan integer array ini kan adalah sebuah objek dari kelas int. Ya kan, masih ingat ya, kemarin nama kelas diikuti dengan nama objeknya. Itu artinya si in array ini akan bisa mengakses field dan method yang ada di kelas in. Makanya di sini untuk mengakses fieldnya bisa pakai menggunakan operator dot. Masih ingat kemarin. Nah, misalnya gini, kita mau mengenal... kita punya satu variable namanya arrayLength ini terserah namanya, bebas dan kita ingin menyimpan berapa sih panjang elemen atau panjang dari array in array, maka kita tinggal mengaksesnya dengan.length length ini udah ada di kelasnya itu, udah didefinisikan sama japan, namanya length oke As in most programming languages, you can change the size of an array after it's been created. Karena pada banyak bahasa pemograman, kamu tidak bisa mengubah ukuran dari array setelah array itu dibuat. Jadi kalau kita mendefinisikan 100 elemen, maka yaudah kita nggak bisa mengubahnya lagi. dalam program yang kita buat hidup pada kebanyakan bahasa pemograman, gak tau nih bahasa pemograman apa yang membolehkan atau mungkin ini bahasa dari si penulis misalnya gini nah ini juga teknik dalam menulis untuk menghindari klaim kalau bahasanya gini, si penulis Hai ini bukan tentang sekolah saya jadi saya ingin bahas tulisan ini apa itu kalau misalnya gini dalam semua bahasa pemograman kamu tidak bisa mengubah ukuran dari rei dia menggunakan bahasa misalnya pada semua bahasa pemograman apa benar semua bahasa pemograman itu kan bisa menimbulkan tanda Apakah penulis benar-benar sudah membandingkan semua bahasa pemograman? Nah, jangan-jangan ada bahasa pemograman yang tidak Nah, ketika ada dua kemungkinan Si penulis yang memang tahu bahwa ada bahasa pemograman yang enggak atau si penduduk juga nggak yakin ini mungkin ada jadi untuk menghindari klaim maka dia menggunakan istilah mos pada kebanyakan kalau kita pakai bahasa kebanyakan itu kan berarti mungkin ada satu atau lebih bahasa pemograman yang jumlahnya tidak banyak yang bisa mengubah array mengubah ukuran dari array, nah itu apa, mungkin nanti kalian dalam menulis skripsi, gitu kan itu perlu memperhatikan bahasa seperti itu, metode ini adalah metode yang terbaik misalnya, claim itu claim atau benar-benar sudah terbukti kayak gitu lah, kemudian accessing array elements, gimana kita mengakses elemen dari array Ray element can be accessed using an index Jadi kalau mengakses Ray mungkin kalian dulu pernah Belajar juga di dasar pengogaman Itu kan gampang ya kita tinggal mengakses Indexnya index keberapa Ray nya jadi Kalau kita mau mengakses Index yang ketiga yaudah Nama ray terus indexnya Nanti disimpan di variable Time jadi kita akan mendapatkan Ini komen aja ya yang ada slash kita akan mendapatkan isi dari elemen yang keempat karena indeksnya mulai dari nol jadi elemen yang keempat itu akan di copy ke variable time kemudian kalau ini apa insert 66 into the 8th cell jadi 66 ini akan dimasukkan ke array dengan indeks ke delapan karena mulainya kan dari 0, berarti 7 ini indeks ke 8 ingat, dalam java, begitu pula dalam C dan C++ the first element is number 0 di elemen pertamanya itu mulai dari 0 so that the indices in an array of 10 elements run from 0 to 9 jadi kalau kita punya sebuah array yang berisi 10 elemen maka indeksnya dari 0 sampai 9 Oke, if you use an index, jika kamu menggunakan sebuah index yang kurang dari 0 atau lebih besar dari ukuran array-nya, atau lebih besar dari ukuran dari array less than 1, Hai jikalau intinya gini kalau kita mengakses indeks diluar dari rei yang ada indeks yang ada maka nanti akan keluar error gini rei index out of Bones rantai jikalau nanti kalian ngeran Java terus ada error seperti ini berarti kita mengakses rei yang indeksnya berlebih jadikan tadi kalau 10 element index nya 0 sampai 9 kalau kita mengakses index yang negatif atau index yang lebih dari 9 ini akan muncul error ini karena kita mengakses data di luar batas kemudian proses inisialisasi nah unless you specify otherwise an array of integer is automatically initialized to 0 nah This is true even of arrays defined within a method or function. Say you create an array of objects like this. Nah ini ada objek, ini ada class, kemudian ini nama arraynya. Terus kita mendefinisikan objek dan ini banyaknya element. Until the array elements. are given explicit value sampai elemen dari array nya diberikan nilai yang explicit jadi sebelum ini kan inisialisasi jadi sebelum kita ngasih nilai ke semua ke setiap elemen, maka mereka itu berisi null null object, jadi kosong object, if you attempt to access an array element that contains null Jadi jika kamu mengakses elemen array yang berisi nul maka kamu akan mendapatkan error ini runtime error nul pointer assignment jadi misalnya gini kamu sudah inisialisasi array ya kan terus tiba-tiba kamu mengakses elemen array yang ke satu misalnya itu nanti akan keluar ini nul pointer assignment kenapa karena datanya masih kosong belum kita isi kan kita baru definisikan jadi kalau baru didefinisikan katanya setiap elemennya itu nul oh ini baru deklarasi nah kamu bisa menginisialisasi array dengan cara seperti ini in, in, in array sama dengan 0, 3 dan seterusnya ini proses inisialisasi berarti index nya nanti akan disesuaikan ini index ke 0, ini index ke 1, ke 2, ke 3 ketiga dan seterusnya. Perhaps surprisingly, this single statement takes the place of both the reference declaration and the use of new to create the array. Nah, ini hal baru yang cukup mengagetkan bahwa satu statement ini itu melakukan dua proses. the reference declaration proses deklarasi dari nama array nya namanya itu integer array and the use of new to create the array jadi ini sebenarnya kan kalau ini kan baru mendeklarasikan array baru membuat objek tapi kan biasanya ada new sama dengan new in gitu ya terus dalam kurung panjang arraynya, panjang elemennya kan ya tapi kalau di inisialisasi secara langsung gini, katanya gak usah ada new dan seterusnya tadi karena sudah kita inisialisasi gini the numbers within the curly brackets are called the initials list jadi bilangan-bilangan angka-angka yang berada dalam the curly brackets bahasa inggrisnya kalau kurung kurawa gini curly curly brackets kurawa kurung kurawa bracket itu disebut dengan daftar inisialisasi the size of the array ukuran dari arraynya itu akan ditentukan dengan banyaknya nilai yang ada dalam list ini jadi meskipun kita tidak menulis berapa banyak memori yang ada atau yang kita pesan untuk array ini itu akan otomatis sesuai dengan banyaknya Hai angkanya tuh terus di sini ada narik sampel kayak ini mungkin nanti perlu dicoba di program tapi kemarin saya juga menemukan beberapa laporan ya dari kalian untuk praktikum ada kendala ya di komputer ya katanya ada yang komputer saya kentang apa mungkin lemot gede kemudian kemarin ada yang mengusulkan gimana kalau praktikum semuanya offline gitu ya Nah nanti akan saya coba sampaikan ke jurusan kalau misalnya bisa Ya mudah-mudahan bisa ya Tapi kalau misalnya nggak bisa karena memang aturan dari kampus tidak boleh semuanya offline harus ada yang online berarti ya udah yang online nanti bisa di siasatinya gimana ya mungkin barengan gitu ya kalian belajarnya di kosan teman yang memang komputernya bisa apa bisa ngeranjava gitu ya supaya belajar bisa barang-barang gitu oke