• Tidak ada hasil yang ditemukan

MINGGU IX : ARRAY DAN GENERICS

N/A
N/A
Protected

Academic year: 2021

Membagikan "MINGGU IX : ARRAY DAN GENERICS"

Copied!
6
0
0

Teks penuh

(1)

MINGGU IX : ARRAY DAN GENERICS

Pembahasan pada pertemuan ini lebih dikhususkan kepada tipe data lanjutan yaitu array dan Generics. Array merupakan variabel berindeks. Sedangkan Generics merupakan tipe data yang bersifat general. Tipe data generic dapat berubah-ubah sesuai dengan tipe data yang diinginkan. Kompetensi Khusus

Mahasiswa mampu memahami tentang array dan tipe data generics. Materi

Array

Sebuah aplikasi seringkali membutuhkan data dalam jumlah yang besar yang pada umumnya memiliki tipe data yang sama. Sehingga diperlukan media penyimpanan untuk data dalam jumlah yang besar tersebut. Media penyimpanan data dalam aplikasi adalah variabel. Penggunaan variabel dalam jumlah yang banyak akan merepotkan. Setidaknya kita harus memikirkan nama-nama yang akan digunakan untuk masing-masing. Untuk mengatasi masalah ini dapat digunakan array.

Array merupakan sekelompok item yang tidak terurut yang ditempatkan pada satu variabel. Sekelompok item tersebut merupakan nilai-nilai dengan tipe data yang sama. Array dapat diibaratkan dengan sebuah variabel dalam C#. Namun array dapat digunakan untuk menyimpan sejumlah nilai dengan menggunakan satu nama variabel. Masing-masing nilai dalam array diidentifikasi dengan menggunakan indeks. Hal ini menyebabkan array sering juga disebut dengan variabel berindeks.

Array dalam C# memiliki dimensi. Array dalam C# bisa berupa array 1 dimensi, 2 dimensi, 3 dimensi dst. Walaupun pada kenyataannya dimensi array yang biasanya digunakan adalah array 1, 2 dan 3 dimensi. Setiap array ukuran yang menunjukkan jumlah item atau nilai yang dapat disimpan dalam array tersebut.

Sama halnya seperti variabel pada dalam C#, array harus dideklarasikan terlebih dahulu sebelum dapat digunakan. Deklarasi array dalam C# tidak jauh berbeda dengan deklarasi variabel. Setiap array memiliki tipe data tertentu sehingga hanya bisa digunakan untuk menyimpan data dengan tipe data yang telah dideklarasikan tersebut. Format deklarasi array adalah sebagai berikut .

<Tipe Data>[] <nama Array>

Sebagai contoh adalah deklarasi array dari nama mahasiswa.

(2)

String[] namaMhs2 = new String[4] { "Ael", "isang", "Hones", "Thifa" };

String[] namaMhs3 = { "Husnil", "Kamil", "Honesty", "Trila" };

Statement pertama akan mendeklarasikan array. Statement kedua adalah deklarasi array berikut dengan inisialiasi nilainya. Pada contoh diatas dideklarasikan sebuah array dengan nama namaMhs2 yang bertipe array dari String. Jumlah item yang bisa ditampung oleh array tersebut adalah 4 buah sekaligus memberikan nilai untuk masing-masing item yang disimpan. Statement

ketiga merupakan bentuk sederhana dari statement kedua.

Array dalam C# memiliki indeks. Indeks merupakan identitas dari masing-masing elemen yang terdapat dalam array tersebut. Indek array dalam C# berupa unsigned integer. Nilai indeks array dimulai dari 0, 1, 2 dst. Pada contoh diatas, array namaMhs2 memiliki 4 buah elemen yaitu namaMhs2[0], namaMhs2[1], namaMhs2[2] dan namaMhs2[3]. Nilai dari masing-masing elemen array tersebut sesuai dengan urutan deklarasi nilai array. Berdasarkan contoh diatas maka nilai masing-masing elemen array adalah seperti table berikut.

Elemen Nilai

namaMhs[0] Husnil namaMhs[1] Kamil namaMhs[2] Hones namaMhs[3] Thifa

Setiap array memiliki sejumlah elemen sehingga sebuah array bisa menampung banyak nilai. Oleh karena itu operasi baca/tulis terhadap nilai yang terdapat dalam array adalah operasi yang berhubungan dengan elemen-elemen array. Operasi yang dilakukan adalah operasi baca nilai array dan tulis nilai ke dalam array. Acuan dalam operasi baca/tulis array adalah indeks dari array tersebut. Operasi baca dilakukan untuk mengambil atau membaca nilai yang ada dalam salah satu elemen array. Contoh operasi baca array adalah sebagai berikut

String mahasiswa = namaMhs[1];

Pada contoh diatas, terjadi proses baca nilai array namaMhs yang memiliki indeks 1, sehingga nilai variabel mahasiswa menjadi “Kamil”.

Operasi tulis terhadap dilakukan dengan menset nilai terhadap salah satu elemen yang ada dalam array. Contoh operasi tulis array adalah sebagai berikut.

(3)

Pada contoh diatas, nilai elemen array ke-3 (yang memiliki indeks 2) diset menjadi “Onno”.

Array dan Perulangan

Operasi terhadap array biasanya dilakukan dengan menggunakan perulangan. Hal ini disebabkan karena sebuah array merupakan sekumpulan variabel yang tipenya sama. Pada dasarnya semua elemen dalam array adalah sama, hanya nilainya yang berbeda. Sehingga operasi terhadap elemen array akan melelahkan jika harus dicoding satu-persatu. Misalnya saja menampilkan nilai array. Hal ini bisa saja dilakukan dengan menuliskan statement untuk menampilkan nilai elemen array satu persatu seperti contoh dibawah ini.

Console.WriteLine("Mahasiswa 1: {0}", namaMhs[0]); Console.WriteLine("Mahasiswa 2: {0}", namaMhs[1]); Console.WriteLine("Mahasiswa 3: {0}", namaMhs[2]); Console.WriteLine("Mahasiswa 4: {0}", namaMhs[3]);

Pada contoh diatas dapat dilihat bahwa untuk menampilkan isi dari elemen array, dibutuhkan statement sebanyak elemen array tersebut. Bayangkan saja jika jumlah elemen array tersebut adalah 1000 elemen, berapa jumlah statement yang harus dibuat untuk melakukan hal tersebut.

Statement yang digunakanpun mirip, hanya berbeda pada penomoran dengan indeks array saja. Bisa dinyatakan bahwa kita mengeksekusi statement yang sama secara berulang-ulang. Oleh karena itu hal diatas dapat juga dilakukan dan akan lebih efektif jika menggunakan perulangan. Jika dilakukan dengan perulangan maka statement diatas dapat dijadikan kode seperti berikut ini.

for (int i = 0; i < namaMhs.Length; i++) {

Console.WriteLine("Mahasiswa {0} : {1}", i + 1, namaMhs[i]); }

Statement diatas akan menghasilkan keluaran yang sama seperti cara sebelumnya. Indeks array diakses dengan menggunakan counter pada perulangan. Dengan menggunakan perulangan akses terhadap seluruh elemen array jadi lebih mudah.

Array sebagai Argumen dan nilai kembalian Method

Seperti halnya tipe data lainnya, array juga bisa dijadikan sebagai argumen dan tipe data kembalian untuk sebuah method. Cara penggunaan array sebagai argumen atau nilai kembalian method sama seperti tipe data lainnya. Namun perlu diingat bahwa deklarasi array sebagai argumen tidak boleh mendeklarasikan jumlah elemen array yang menjadi argumen

method tersebut. Begitu juga dengan deklarasi nilai kembalian method yang berupa array. Contoh method yang menggunakan array sebagai argumen dan nilai kembalian dapat dilihat pada contoh dibawah ini.

(4)

Public int[] ArrayMultiplier(int[] matrix, int multiplier) {

int matLength = matrix.Length;

int[] newMatrix = new int[matLength]; for (int i = 0; i < matrix.Length; i++) {

newMatrix[i] = matrix[i] * multiplier; }

return newMatrix; }

Pada contoh diatas method ArrayMultiplier digunakan untuk mengalikan setiap elemen array dengan bilangan multiplier. Method tersebut juga mengembalikan nilai berupa array integer. Dalam contoh diatas, array tersebut adalah array newMatrix yang merupakan array integer.

Method tersebut digunakan dalam program utama seperti pada contoh berikut ini. int[] m = { 1, 2, 3, 4, 5 };

ArrayClass kelasArray = new ArrayClass(); int[] n = kelasArray.ArrayMultiplier(m, 2);

Pada contoh diatas, n merupakan array yang digunakan untuk menampung nilai kembalian dari

method ArrayMultiplier(); Generics

Andaikan saja kita memiliki sebuah kelas bernama Antrian yang digunakan untuk menyimpan antrian data integer. Kelas tersebut bisa digunakan untuk menambahkan data antrian, mengeluarkan data dari antrian. Namun bagaimana jika suatu saat nanti kita membutuhkan antrian untuk data bertipe String, maka perlu dibuatkan pula sebuah kelas AntrianString untuk menampung tipe data String tersebut. Setidaknya saat ini kita telah memiliki 2 buah kelas yang memiliki kegunaan yang sama, hanya beda di tipe data saja. Belum lagi nantinya jika kita membutuhkan kelas untuk menampung antrian Pelanggan, Lagu, desimal, Kentang dsb. Kondisi seperti akan menyebabkan banyaknya kelas yang memiliki fungsi yang sama namun hanya berbeda di tipe data yang ditampungnya saja. Lebih mudah jika saja kita hanya memiliki satu buah kelas saja namun mampu menampung tipe data yang berbeda-beda.

C# menyediakan fasilitas generic yang dapat digunakan untuk menampung tipe data yang berbeda-beda. Kelas yang menggunakan fasilitas generic tersebut disebut dengan kelas

generic. Sebuah kelas generic memiliki sebuah placeholder untuk menempatkan tipe data yang sesungguhnya. Sintaks dari kelas generic dapat dilihat pada kode berikut ini.

class

Antrian<T>

{

(5)

}

<T> pada contoh diatas merupakan placeholder untuk menempatkan tipe data yang akan digunakan (tipe data sesungguhnya) dimana T merupakan tipe data generic. Pada program utama, kelas generic digunakan dengan menyatakan tipe data yang akan digunakannya. Contohnya adalah sebagai berikut.

Antrian<string> antrian = new Antrian<string>();

Kalau seandainya kelas Antrian digunakan untuk membuat antrian kelas Kentang seperti pada contoh dibawah ini.

Antrian<Kentang> antrian = new Antrian<Kentang>();

Pada contoh diatas dapat dilihat bahwa T pada kelas tersebut diganti dengan string. T pada kelas generic dapat diganti dengan tipe data lainnya. Kelas Antrian yang sesungguhnya dapat dilihat pada kode dibawah ini.

class Antrian<T> {

private T[] data;

private const int DEFAULTANTRIAN = 10; private int head = 0, tail = 0;

private int jumlahItem; public Antrian()

{

data = new T[DEFAULTANTRIAN]; }

public Antrian(int n) {

data = new T[n]; }

public void MasukkanDalamAntrian(T item) { if (jumlahItem <= data.Length) { data[head] = item; head++; head %= data.Length; jumlahItem++; } } public T KeluarkanDariAntrian() { if (jumlahItem <= 0) {

throw new Exception("Tidak ada antrian"); }

(6)

tail++; tail %= data.Length; jumlahItem--; return itemAntrian; } }

Pada contoh diatas, perhatikan simbol T yang terdapat dalam kode sumber. T tersebut merupakan placeholder untuk tipe data yang sesungguhnya. Jika kelas tersebut digunakan untuk membuat antrian dari objek String, maka T merupakan representasi dari String, jika kelas tersebut merupakan antrian dari objek Kentang, maka T merupakan representasi dari Kentang,

Referensi

Dokumen terkait

Skripsi berjudul “Optimasi Penempatan DG (Distributed Generation) Pada Jaringan Distribusi Sistem Radial Menggunakan GA (Genetic Algorithm) Di Penyulang Watu Ulo

Melaui model pembelajaran Kooperatif (Cooperative Learning) tipe Number Head Together (NHT) dan Student Team Achievment Division (STAD), siswa diharapkan dapat

Halaman 6 LAMPIRAN II PENJABARAN PERTANGGUNGJAWABAN - PENJABARAN LAPORAN REALISASI ANGGARAN PENDAPATAN DAN

Jika nyamuk tersebut menggigit anak yang sedang mengandung virus demam berdarah di darahnya, nyamuk itu akan dapat menyebarkannya kepada anak yang lain..

dirinya mampu mendidik anak-anaknya, harga diri wanita single parent dengan lebih rajin berkomunikasi dengan anak, selalu berusaha, bersemangat dan berjuang dalam

Penentuan varians bersyarat dari sebuah peubah acak diberikan peubah acak lainnya, baik diskrit maupun kontinu dijelaskan dalam Definisi 7.12... 2 FUNGSI PEMBANGKIT

Yoghurt kacang merah dibuat dengan menggunakan metode Illinois yang dimodifikasi. Komponen dalam yoghurt kacang merah dapat saling bersinergi sehingga dapat

Dengan berlakunya Peraturan ini maka besaran Harga Patokan Ekspor (HPE) sebagaimana tercantum dalam Lampiran Peraturan Menteri Perdagangan Nomor 02/M-DAG/PER/1/2008 tentang