Fundamental Array

 

Susunan Fundamental

Python tidak memiliki tipe data  array  yang sering digunakan dalam bahasa pemrograman lain. Sebaliknya, Python memiliki tipe data  list  yang dapat dikatakan mirip, tetapi tak sama dengan  array

Perbedaan yang menonjol adalah cara  array  menyimpan nilai yang sangat berbeda dengan  list . Pada  array , nilai di dalamnya harus memiliki tipe data yang sama. Namun, pada  daftar , nilai di dalamnya tidak harus memiliki tipe data yang sama. 

dos:4d985760514a06b0480e7ad33710551e20230810142211.jpeg

Perlu diketahui oleh Anda,  array  bukan hanya sebuah tipe data, melainkan salah satu tipe struktur data berjenis linier.  Array  merupakan kata dalam bahasa Inggris yang jika diterjemahkan ke bahasa Indonesia memiliki arti "sebuah kelompok besar yang terdiri dari beberapa hal atau orang". Arti ini mirip dengan  array  atau tipe data  list  dalam Python, sebuah kelompok besar yang terdiri dari beberapa nilai atau data. Lalu, apa arti dari struktur data itu sendiri?

Struktur data adalah cara untuk mengatur dan menyimpan data sehingga data-data tersebut dapat diakses dan bekerja secara efisien. Dengan adanya struktur data, setiap data yang disimpan memiliki hubungan satu sama lain dan kita dapat beroperasi dengan setiap data tersebut.

Ketika mempelajari materi tipe data pada modul "Berinteraksi dengan Data", sebenarnya Anda telah mempelajari struktur data yang beragam jenisnya. Baik tipe data primitif maupun tipe data collection yang telah dibahas sebelumnya termasuk jenis struktur data Python.

dos:7fda71a8c8eaa7518664ea58b218eda320230810142057.jpeg

Dari sini, kita harus bisa menyamakan persepsi bahwa  array  dan  list  merupakan hal yang berbeda dalam Python. Kendati demikian, Anda bisa menggunakan  list  sebagai  array  dalam Python.

Jika Anda benar-benar ingin menggunakan  array , Anda pun bisa mendeklarasikan  array  dalam Python dengan menggunakan library atau modul Python. Salah satunya modul bernama "array". 

Library merupakan kumpulan kode yang telah dibuat oleh pengembang atau pemrogram dan disediakan kepada pengguna lain agar dapat digunakan ulang dalam program pengembangan atau perangkat lunak. Adapun modul merupakan file yang berisikan kode Python dan dapat digunakan kembali oleh programmer lainnya. Anda akan mempelajari perpustakaan dan modul pada Python lebih jauh nanti. 

Pada kode di atas, kami melakukan import module  array  dengan memberikan sintaks "import  array ". Dengan mengimpor modul, sekarang kita mempunyai beragam kode baru yang dapat digunakan. Contohnya fungsi "array()" yang digunakan untuk membuat array. 

Pada contoh di atas, kita membuat  array  bertipe integer dengan menyatakan "i" sebelum  array . Sekarang, coba Anda ubah nilai array "[1, 2, 3, 4, 5]" menjadi "[1, 2, 3, 4, 5, 'Dicoding']". Apa yang terjadi? Jika yang terjadi adalah  error , hal ini disebabkan karena nilai atau elemen dalam array harus bertipe sama atau identik.

Catatan : Kelas ini akan menggunakan " list " sebagai " array ". Anda bisa berasumsi ke depannya bahwa kata " list " dalam kelas ini juga dapat diartikan sebagai " array ".

Dalam materi ini, kita akan menggunakan  list  sebagai struktur data  array  dari awal hingga materi selesai. Mari masuk kembali ke  daftar pembahasan .

dos:3027a1e464b24d229402d8f5f5aa8d3120230810142057.jpeg

serupa yang sudah ditunjukkan pada gambar mengenai struktur data,  daftar  dapat dibagi kembali menjadi struktur data linier dan non-linier. 

dos:d6714c4d989fb1e93b686975cbb3610120230810142057.jpeg

Struktur data linier adalah jenis struktur data yang elemen-elemen nilai di dalamnya disusun secara berurutan atau linier. Sebaliknya, struktur data non-linier merupakan jenis struktur data yang elemen-elemen nilai di dalamnya tidak disusun secara linier.

Array  adalah salah satu jenis dari struktur data linier. Dalam konteks ini,  array  terdiri dari  kumpulan elemen bertipe data sama  dengan indeks yang berurutan atau linier.

dos:4a90adcadd02f5edc687738c8b9317c920230824102100.jpeg

Mari kita bedah satu per satu mengenai  array  berdasarkan gambar di atas.

  1. Indeks: Posisi atau nomor yang digunakan untuk mengidentifikasi elemen-elemen dalam  array . Indeks selalu dimulai dari 0.
  2. Elemen: Nilai yang berada dalam suatu indeks. Elemen selalu dimulai dari 1. Contohnya jika nilai dari indeks ke-8 adalah "Dicoding", kita bisa menyebutnya sebagai "elemen ke-9 pada  array  tersebut adalah Dicoding".
  3. Panjang array  : Panjang dari suatu  array . Dalam gambar tersebut, panjang array adalah 10.

Mari lihat salah satu contoh kasus saat kita perlu menggunakan  array  sebagai solusi terbaik.

"Selepas berakhirnya semester genap, para guru dari SMA Dicoding perlu merekap semua nilai ujian akhir semester. Salah satunya adalah guru matematika, guru tersebut perlu merekap nilai dari seluruh siswa yang ada di kelas IPA 1. Guru tersebut membuat program menggunakan Python untuk mempermudah proses rekap nilai."

Pada kode di atas, program yang dibuat adalah menyimpan 10 nilai dengan menggunakan 10 variabel yang berbeda. Variabel pertama dimulai dengan "nama_siswa1" dengan nilai siswanya adalah 90. Variabel kedua dilanjutkan dengan konsep yang sama hingga selesai. 

Namun, Anda mungkin menyadari bahwa membuat program dengan cara tersebut tidak efektif dan membuat kodenya sulit dibaca. Apalagi ini baru 10 nama siswa, bagaimana dengan 100 siswa? 1000 siswa?

Mari lihat  daftar peran  dalam kasus ini.

Pada kode di atas, alih-alih membuat inisialisasi variabel yang berulang, Anda dapat membuat  daftar  untuk menyimpan seluruh nilai tersebut. Jika Anda ingin mendapatkan nilai pertama atau nilai tertentu, cukup lakukan  pengindeksan . Pada contoh di atas, kami menggunakan pengindeksan untuk mengakses elemen pertama atau indeks 0.

Jika kita menarik ke konteks penyimpanan  array  secara teoritis, kode di atas dapat diilustrasikan seperti berikut.

dos:a3a803e9454ac6f2dc15ec1b2a6f40ca20230824102140.jpeg

Ilustrasi di atas menggambarkan kode yang sebelumnya telah kita buat. Seluruh nilai yang direkap oleh guru SMA Dicoding akan disimpan pada sebuah kotak yang disebut sebagai tempat indeks keseluruhan indeks tersebut dikumpulkan menjadi satu  array .

Implementasi Array dengan Python

Dalam materi ini, Anda akan mempelajari bentuk-bentuk penerapan  Array  dengan Python. Pertama, kita akan membahas deklarasi  array . Kedua, kita akan membahas cara mengakses elemen array.


Susunan Mendeklarasikan

Pada materi sebelumnya, sudah disebutkan bahwa dalam Python kita dapat mendeklarasikan  array  menggunakan dua cara. Pertama dengan memanfaatkan  list  dan kedua menggunakan perpustakaan Python.

Perlu Anda ingat, setiap elemen yang ada pada  list  sebetulnya disimpan pada satu memori. Jika  list  adalah "[1, 2, 3]", sebetulnya Anda memerintahkan memori komputer untuk menyimpan bilangan bulat "1" ke dalam satu tempat memori, maka bilangan bulat "2" akan disimpan dalam satu tempat memori, dan seterusnya.

Perhatikan kode di bawah ini.

Ketika Anda menjalankan kode di atas, ia akan menghasilkan lokasi memori setiap elemen yang berada pada  list . Lokasi tersebut bisa berubah jika Anda menjalankan program ulang, tetapi perhatikan bahwa semua elemen tersebut memiliki ID lokasi penyimpanan yang berbeda.

Sekarang mari lebih detailkan cara mendeklarasikan  array  dalam Python menggunakan  list . Ada dua cara untuk melakukan deklarasi  array  menggunakan  list , yaitu berikut.


Mendefinisikan Isi Array

Cara pertama adalah dengan mendeklarasikan variabel  array  sekaligus mendefinisikan isi  array . Cara ini dilakukan jika kita sudah tahu nilai yang perlu diberikan. 

Berikut adalah struktur mendeklarasikan variabel  array  dengan mendefinisikan isi  array  secara langsung.

dos:7b5858018196dfe569151286d7edc75820230810143208.jpeg

<nama-var>  merupakan nama variabel  array  yang dideklarasikan sebanyak  n  dengan elemen-elemennya adalah  <val0>, <val1>, <val2>, … , <valn-1> . Perlu diingat bahwa elemen tersebut terurut berdasarkan indeks dari  0  hingga  n-1

Contohnya sebagai berikut.

Pada variabel "var_arr" kita menyimpan elemen bertipe integer dengan panjangnya 10 elemen dan alamat setiap elemen  array  (indeks) adalah indeks ke-0 hingga 9.


Mendefinisikan Nilai Default

Jika tidak mengetahui nilai yang diberikan, kami dapat memberikan nilai default terlebih dahulu sebagai upaya untuk memberikan nilai awal. Umumnya, nilai default ini ditentukan karena kita tidak tahu nilai yang seharusnya. 

Dalam prosesnya, kita bisa secara perlahan mengganti masing-masing nilai tersebut sesuai kebutuhan. Misal kita memiliki  array  "[0,0,0,0]", yang kemudian hari kita bisa memperbaruinya menjadi "[1,2,0,4]", dengan begitu kita bisa mengetahui bahwa indeks ke-2 pada  array  tersebut belum kita perbarui. 

Nilai default ditentukan oleh kesepakatan bersama sesuai kebutuhan yang nilainya di luar dari rentang yang disepakati. Misalnya, tim Anda menentukan nilai dalam  daftar  harus berkisar dari 1 hingga 10. Kita bisa menyepakati "0" sebagai nilai default karena di luar jangkauan yang disepakati (1-10).

Berikut adalah struktur mendeklarasikan  array variabel  dengan mendefinisikan nilai default.

dos:1a21d2a0684b4e0b8b8ea975e5cda7af20230810143208.jpeg

Jika Anda merasa familiar dengan struktur tersebut, Anda benar. Struktur tersebut merupakan struktur yang sama dengan  pemahaman daftar  . Anda dapat menginisialisasi  array variabel  dengan menggunakan  pemahaman daftar  dan mendefinisikan nilai default. Pada materi Pemahaman Daftar, kita menggunakan  ekspresi . Namun, pada  array  kita menggunakan  nilai default  atau <default-val>.

Berikut adalah penjelasan lebih detail terkait struktur tersebut.

  1. <nama-var> merupakan variabel yang Anda deklarasikan.
  2. <default-val> merupakan nilai default yang Anda definisikan. Umumnya, programmer akan menggunakan nilai di luar rentang yang telah disepakati sebagai nilai default. Misalnya jika rentang nilai yang disepakati seharusnya 1 hingga 10, nilai default bisa kita definisikan dengan 0. 
  3. <n> merupakan ukuran panjangnya  array .

Mari lihat contoh penerapannya di bawah ini.

Pada contoh di atas, kami membuat  list  dengan nilai default-nya adalah "0" sebanyak 10 elemen. Perhatikan bahwa <default-val> yang ada pada struktur sebelumnya diubah menjadi "0" untuk mendapatkan nilai default "0".

Dari sini, Anda dapat mengubah nilai default tersebut dengan nilai yang baru berdasarkan hasil suatu operasi. Misalkan pada contoh di bawah ini.

Pada contoh di atas, kita membuat program untuk mengubah nilai default pada variabel  array  "var_arr" dengan nilai 0 hingga 9. Output dari program tersebut adalah mengubah nilai yang awalnya adalah [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] menjadi [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].


Mengaksis Elemen Array

Mengakses elemen  array  dalam Python tidak berbeda dengan mengakses elemen pada  list . Hal ini karena kita menggunakan  list  sebagai "bentuk lain" dari  array . Anda dapat melakukan metode pengindeksan untuk mengakses elemen array. Berikut adalah struktur untuk melakukan hal tersebut.

dos:ced58eb592c94ac07d7f065b24788d5e20230810143208.jpeg

<namaVariabelArray>  merupakan nama variabel  array  yang sebelumnya telah Anda deklarasikan.  <indeks>  merupakan urutan indeks yang ingin Anda akses sehingga nilai atau elemen tersebut dapat diambil atau ditampilkan.

Pada contoh di atas, kita mengambil indeks ke-0 pada variabel "var_arr" yang bernilai 9. Jadi, output yang dihasilkan adalah 9.

Pemrosesan Sekuensial pada Array

Pemrosesan  array  Merujuk pada operasi-operasi yang dilakukan pada elemen-elemen suatu  array . Operasi ini melibatkan manipulasi hingga pemrosesan elemen yang ada pada array. 

Sedangkan pemrosesan sekuensial adalah sebuah pemrosesan setiap elemen  array  yang dimulai dari elemen pada indeks terkecil hingga terbesar. Pemrosesan sekuensial lebih sering menggunakan pengulangan (loop/iterasi) dalam setiap proses.

Karena pemrosesan sekuensial melibatkan semua elemen di dalamnya, ada beberapa hal yang perlu diperhatikan.

  1. Setiap elemen  array  diakses secara langsung melalui indeksnya (metode pengindeksan).
  2. Elemen pertama ( elemen pertama ) adalah elemen  array  dengan indeks terkecil yang selalu dimulai dari 0. 
  3. Elemen selanjutnya ( next element ) dicapai melalui suksesor indeks.
  4. Kondisi berhenti dicapai jika indeks yang diproses adalah indeks terbesar yang sudah terdefinisi.
  5. Suatu  array  tidak boleh kosong, minimal memiliki satu elemen di dalamnya.

Mari bahas lebih lanjut dengan contoh di bawah ini.

Pada contoh di atas, kami membuat program untuk melakukan pemrosesan sekuensial  array . Proses tersebut adalah mencetak setiap elemen yang berada pada variabel  array  "var_arr" menggunakan perulangan loop. 

dos:33eefe40575d4b031db0861a6f31201220230810144613.jpeg

Pertama-tama, kita menginisialisasi variabel "var_arr" dengan nilai "[1, 2, 3, 4, 5]". Perulangan untuk digunakan untuk melakukan iterasi melalui setiap elemen  arrayVariabel "i"  bertindak sebagai  indeks saat ini  yang digunakan untuk mengakses elemen dalam setiap iterasi atau perulangan.

Kemudian, setiap proses perulangan berlangsung, kita mengambil elemen saat ini menggunakan "var_arr[i]" dan menyimpannya pada variabel "current_element". Selanjutnya adalah mencari indeks berikutnya dengan cara menambahkan nilai "1" pada indeks saat ini atau "i". 

Hasil dari operasi penjumlahan nilai "1" dengan indeks saat ini akan disimpan pada variabel "next_index". "next_index" berperan sebagai  "suksesor indeks"  yang Merujuk pada indeks berikutnya berdasarkan indeks saat ini dengan menambahkan nilai "1". 

Kemudian kita memeriksa "next_index" berada dalam rentang indeks yang valid dalam  array  atau tidak. Jika ya, artinya masih ada elemen berikutnya, dan kita ambil elemen berikutnya menggunakan "var_arr[next_index]" serta memasukkan ke dalam variabel "next_element". Sebaliknya, jika "next_index" tidak valid atau melebihi jarak  array , artinya tidak ada elemen berikutnya sehingga kita menyetel "next_element" menjadi "None".

Pada langkah terakhir, kami mencetak nilai "current_element" dan "next_element" untuk menunjukkan perbedaan antara elemen sekarang dan selanjutnya.

Mencetak setiap elemen  array  menggunakan perulangan adalah satu di antara banyaknya contoh-contoh persoalan pemrosesan sekuensial pada  array . Contoh lain dari pemrosesan array adalah sebagai berikut.

  1. Mengisi  array  secara sekuensial.
  2. Menghitung nilai rata-rata elemen  array .
  3. Mengalikan elemen  array  dengan suatu nilai.
  4. Mencari nilai terbesar atau terkecil pada  array .
  5. Mencari indeks letak suatu nilai yang ditemukan pertama kali dalam  array , dan sebagainya.

Dari sekian banyak contoh penyampaian tersebut, mari kita pelajari dalam materi berikutnya tentang cara mencari nilai terbesar pada  array .

Latihan Array

Pada materi sebelumnya, kita telah memahami bahwa  array  adalah salah satu jenis dari struktur data linier.  Array  mengumpulkan elemen-elemen berdasarkan indeks secara berurutan atau linear.

Pemrosesan  array  Merujuk pada operasi-operasi yang dilakukan pada elemen-elemen suatu  array . Salah satu operasinya adalah pemrosesan sekuensial yang merupakan sebuah pemrosesan setiap elemen array, dimulai dari elemen pada indeks terkecil hingga indeks terbesar.

Dari banyaknya contoh pemrosesan sekuensial pada  array , mari kita pelajari salah satunya, yakni  mencari nilai terbesar dalam array .

Mari kita berasumsikan memiliki sebuah  array  seperti pada gambar berikut.

dos:9024bdf619a5539042699d88aa11e0ea20230810144901.jpeg

Kita memiliki  array  yang beranggotakan nilai integer dengan elemen indeks ke-0 adalah 1, elemen indeks ke-1 adalah 7, elemen indeks ke-2 adalah 2, elemen indeks ke-3 adalah 89, elemen indeks ke-4 adalah 3.

Kita akan mencari nilai atau elemen terbesar dari  array  tersebut menggunakan algoritma  two pointer . Algoritma adalah serangkaian langkah-langkah terstruktur yang dirancang untuk menyelesaikan suatu masalah atau mencapai suatu tujuan. Dalam hal ini, tujuan yang ingin dicapai adalah mencari nilai terbesar pada  array .

Algoritma two pointers adalah algoritma yang memiliki pendekatan dengan cara memproses atau memproses urutan data menggunakan dua penanda atau dua  pointer  secara bersamaan. Penunjuk kedua tersebut bisa kita sebut sebagai "kiri" dan "kanan".

dos:007fdbbf82e0a49d66312d8eb1f8787420230810144901.jpeg

Untuk memahami algoritma ini, perhatikan beberapa informasi berikut.

  1. Pointer "left" akan berada pada indeks pertama dan menyatakan bahwa pointer "left" selalu menunjukkan nilai terbesar dalam  array .
  2. Pointer “right” akan selalu berada pada elemen selanjutnya dan membandingkannya dengan elemen pointer “left”.

Sekarang, mari kita mulai proses pencarian nilai terbesar. Simak gambar bergerak (GIF) berikut untuk ilustrasinya. 

dos:a50b78c836d09ed91869837a4cfe844c20230810145142.gif

Mari kita bedah satu per satu setiap langkah-langkahnya, simak penjelasan berikut.

  1. Pertama, kita memulai dengan dua penunjuk: penunjuk "kiri" pada elemen pertama (1) dan penunjuk "kanan" pada elemen berikutnya (7). Kita membandingkan nilai 7 dengan nilai 1. Sebab 7 lebih besar dari 1, kita mengganti nilai pointer "kiri" dari 1 menjadi 7.
  2. Sekarang, penunjuk "kiri" berada pada elemen 7 dan penunjuk "kanan" berada pada elemen berikutnya (2). Kita membandingkan nilai 7 dengan 2. Sebab 2 tidak lebih besar dari 7, penunjuk "kiri" tetap pada nilai 7.
  3. Pointer "right" berpindah ke elemen berikutnya (89), sementara pointer "left" tetap pada nilai 7. Kita membandingkan nilai 89 dengan 7. Sebab 89 lebih besar dari 7, pointer "left" berpindah ke nilai 89.
  4. Sekarang, penunjuk "kiri" berada pada elemen 89 dan penunjuk "kanan" berada pada elemen berikutnya (3). Kita membandingkan nilai 89 dengan 3. Sebab 3 tidak lebih besar dari 89, penunjuk "kiri" tetap pada nilai 89.
  5. Proses berakhir, nilai pada pointer "left" ditetapkan sebagai nilai terbesar dalam  array .

Dengan demikian, kami menggunakan dua pointer untuk membandingkan dan mengganti nilai pointer "kiri" jika ada nilai yang lebih besar saat melintasi  array . Pada akhirnya, nilai pada pointer "left" adalah nilai terbesar dalam  array .

Sekarang Anda sudah paham secara teoritis cara algoritma two pointers bekerja untuk memproses  array  dalam mencari nilai terbesar. Selanjutnya, mari kita ubah penjelasan tersebut ke dalam program Python. 

Pada program di atas, hal pertama yang dilakukan adalah menginisialisasi variabel “var_arr” dengan  array  “[1, 7, 2, 89, 3]”. Kedua, kita menginisialisasi variabel "left_pointer" dengan nilainya adalah indeks pertama variabel "var_arr" (var_arr[0]).  

Kita menggunakan perulangan "for" untuk mengakses semua indeks dari indeks ke-1 hingga panjang  array . Untuk mengetahui panjang  array , kita menggunakan fungsi "len()", yang bertujuan menghitung panjang atau banyaknya elemen dari  listset , dan string. 

Dalam perulangan "for" tersebut kita mendeklarasikan variabel "right_pointer" yang akan terus berpindah dari indeks ke-1 hingga indeks terakhir (akhir panjang array). Setelah memiliki "left_pointer" dan "right_pointer", kita membandingkan nilai keduanya. Jika "right_pointer" lebih besar dari "left_pointer", kami akan memperbarui nilai "left_pointer" dengan nilai "right_pointer".

Proses tersebut terjadi secara berulang sampai nilai yang tersimpan dalam "left_pointer" dijadikan sebagai nilai maksimal dari  array . Lalu, kita mencetak nilai tersebut dengan perintah "print(left_pointer)".

Kuis Coding: Array atau List

Untuk menguji kemampuan praktikal Anda dalam memahami materi array di Python, silakan selesaikan kuis berikut.

Sebelum Anda mengerjakan kuis, ada beberapa hal yang perlu diperhatikan.

  1. Mohon untuk membaca secara saksama perintah, kriteria, atau soal pada komentar kode yang diberi tanda  TODO .

  2. Lakukan pengujian kode yang Anda tulis dengan menggunakan “print()” untuk memastikan hasil sesuai dengan yang diharapkan. Lalu klik tombol  Jalankan .

Bila sudah yakin dengan pekerjaan yang Anda lakukan, silakan submit kode dengan klik tombol  Submit Kode . Jika kode yang dikirimkan benar, Anda dapat melanjutkan ke modul berikutnya. Jika tidak, Anda bisa memperbaiki kembali kode sebanyak yang Anda mau. 

Batas waktu tunggu untuk mengirimkan kembali perbaikan kode adalah 1 menit. Jadi pastikan kode yang Anda tulis sudah memenuhi perintah kriteria, atau soal pada kuis sebelum klik tombol  Submit Kode .

Pengujian sistem Dicoding akan menguji nilai yang berada dalam variabel sesuai yang diperintahkan. Contohnya jika yang diuji adalah variabel  bilanganGanjil , isi variabelnya harus berupa nilai yang diinginkan (bukan sebuah variabel).

Jangan seperti ini.

  1. #Variabel yang diuji adalah bilanganGanjil
  2. bilangan = 1 , 3 , 5 , 7 , 9
  3. angkaGanjil = angka

Mengalami kendala?

Kunjungi  Forum Diskusi  untuk mencari solusi atau bertanya langsung kepada mentor kami.

Comments

Popular posts from this blog

Ceritakan cerita saya:

Aplikasi/Gaming/Koding: NKHM Nusantara: