Search This Blog

Wednesday 24 August 2016

Searching indeks dalam variabel array

Dalam topik sebelumnya kita sudah membahas tentang perulangan dan pencarian untuk sebuah karakter yanng diinputkan oleh user, apakah karakter tersebut ada dalam indeks array, dan dalam program selanjutnya pun kita sudah mempelajari sedikit tentang pencarian jumlah karakter yang diinputkan user yang ada dalam variabel indeks tersebut. Untuk kali ini kita akan membahas tentang bagaimana untuk menginformasikan pada user akan indeks karakter yang dicarinya. Informasi indeks ini memang cukup sederhana, yaitu memberikan keterangan dimana karakter yang sesuai dengan inputan tersebut ditempatkan dalam sebuah elemen array. Dan untuk itu alangkah lebih baiknya jika kita memahami terlebih dahulu apa itu indeks, dan bagaimana proses pencarian indeks tersebut.

Mencari indeks merupakan sebuah proses pencarian lokasi karakter yang diinputkan user. Dimana pada saat kita menyusun sebuah elemen array tentunya indeks tersebut sudah tersusun dengan sendirinya. Seperti yang pernah dibahas sebelumnya, indeks pada elemen array bagaikan sebuah barisan prajurit, dimana terdapat dalam satu arah barisan yang memiliki alamat masing-masing. Dengan kata lain alamat tersebut dapat disebut dengan nomor urut. Namun apabila pada sebuah barisan biasanya urutan tersebut dimulai dari nomor 1, dalam array sendiri barisan tersebut memiliki indeks yang berawal dari angka 0. Dan untuk proses pencarian indeks sendiri tidak jauh berbeda dengan pencarian untuk jumlah karakter yang sesuai pada inputan user. Namun bedannya, apabila pada pencarian jumlah, maka setiap indeksnya dianggap bernilai 1, lalu kemudian nilai tersebut akan dijumlahkan satu dengan lainnya. Dan jumlah dari indeks tersebut merupakan informasi yang dapat diberikan pada user untuk sebuah pemberitahuan ada berapa karakter yang diinputkannya dalam variabel array. Nah pada pencarian indeks sendiri sama halnya dengan pencarian jumlah tersebut, hanya saja setiap indeks tidak dianggap bernilai 1 dan juga tidak dijumlahkan, tetapi justru indeks itulah yang akan diinformasikan langsung pada user. Lalu bagaimana untuk mencari indeks apabila indeksnya banyak? Sama seperti dalam program sebelumnya, kita akan menggunakan proses perulangan, dimana dalam perulangan tersebut akan disisipkan kondisi untuk selection/seleksi. Pada proses seleksi itu akan disesuaikan dengan inputan dari si user. Apabila karakter yang diinputkan user terdapat dalam elemen array, maka program akan menjalankan statement true yang terdapat dalam selection tersebut. Namun sebaliknya, apabila karakter yang telah diinputkan oleh user ternyata tidak ada yang sesuai dengan isi dari elemen array tersebut, maka kondisi untuk seleksi tersebut akan dilewatkan oleh program, atau apabila disisipkan statement false, maka program akan menjalankan statement tersebut. Untuk statement true sendiri berisikan sebuah perintah untuk mencetak indeksnya langsung, tidak harus menggunakan perintah lain dengan potongan program tambahan. Dengan demikian maka si indeks akan dengan sendirinya menjadi informasi untuk user akan lokasi dimana karakter tersebut disisipkan dalam sebuah elemen array. Untuk perintah mencetak indeks sendiri tidaklah sulit, hanya dengan memanfaatkan variabel yang digunakan untuk proses perulangan serta menggunakan sebuah fungsi untuk cetak. Sebagai contoh, pada saat kita menuliskan perulangan dengan menggunakan:
 for(i=0; i<3; i++);
maka dalam program tersebut kita dapat memanfaatkan variabel i sebagai penunjuk indek, karena dengan perulangan yang kita gunakan tersebut, kita telah mengindeks satu persatu dari isi sebuah array, maka untuk mencetaknya pun kita dapat menggunakan variabel tersebut.

Untuk lebih jelasnya, mari perhatikan contoh dari potongan program berikut:
for(i=0; i<4; i++){
if(A==B[i]){
printf("%3i", i);
}
}
Seperti yang sudah dijelaskan diatas, bahwa untuk membuat sebuah informasi akan lokasi sebuah variabel dalam array kita akan menggunakan sebuah perintah perulangan yang didalamnya akan disisipkan sebuah kondisi. Pada potongan program tersebut terlihat bahwa terdapat sebuah perulangan dengan menggunakan for() yang diisi sebuah kondisi if() dengan statement true didalamnya. Pada perulangan, terdapat variabel i sebagai variabel pendukung perulangan, dengan nilai awal, kondisi berikut perubahan kondisi yang disisipkan didalamnya. Dan didalam kondisi if(), terlihat ada variabel A dan B ke i (ditulis B[i] ). Walau memang didalam contoh tersebut hanyalah sebuah potongan program, tetapi sedikit penjelasan bahwa yang dimaksud disitu A merupakan variabel yang akan mengisi inputan dari user (sama seperti pada topik sebelumnya untuk pencarian jumlah variabel yang ada didalam array), sedangkan B ke i merupakan sebuah variabel yang berisikan elemen array dengan i sebagai penunjuk indeks dari array tersebut melalui sebuah perulangan. Dan didalam statement true pada kondisi if() tersebut terlihat fungsi printf() dimana isinya merupakan pencetakan sebuah tipe data integer dengan variabel i sebagai variabel yang isinya akan dicetak. Sedikit catatan bahwa untuk mencetak indeks harus menggunakan tipe data integer. Mengapa demikian? Karena jelas untuk nomor urut dari urutan sebuah array (indeks) maka akan berbentuk sebuah angka, urutan 0, 1, 2 dan seterusnya. Begitupun dengan deklarasi variabel i sebelumnya, harus juga dengan tipe data integer. Walau yang dicari oleh user serta yang terdapat dalam variabel array sendiri mengandung tipe data character, namun tetap untuk sebuah perulangan dan pencetakan indeks menggunakan tipe data integer. Integer merupakan tipe data yang berisikan angka-angka yang dapat dihitung, jadi walau tipe data character dapat menampung angka pula, tetapi untuk tipe data character tersebut, angka yang terdapat didalamnya tidak dapat dihitung, seperti halnya pada saat kita menuliskan nomor induk, kita dapat menggunakan tipe data character karena nomor induk angkanya bukan untuk dihitung. Namun pada kasus matematika seperti penjumlahan, perkalian dan hal lainnya harus menggunakan tipe data integer.

Diatas kita sudah membahas sedikit potongan program untuk membahas algoritma dari pencetakan indeks array, namun untuk lebih lengkapnya mari perhatikan contoh program berikut ini:

#include<stdio.h>
main(){
char Q[5]="ucup", R;
int w;
printf("masukan inputan: ");
scanf("%c", &R);
for(w=0; w<4; w++){
if(R==Q[w]){
printf("\n\nAda dalam indeks ke %3i", w);
}
}
}

Dalam contoh program diatas, seperti contoh potongan program yang dibahas sebelumnya, antara kedua itu sama saja, hanya memiliki sedikit perbedaan yaitu dalam penamaan variabel. Namun untuk proses pencarian indeksnya sendiri sungguh tidak ada perbedaan, karena keduanya menggunakan algoritma yang sama. Dan dalam contoh program yang satu ini terlihat sebuah program lengkap dimana dimulai dari instruksi pra processornya yaitu include dengan nama file stdio.h yang artinya dalam program ini kita menggunakan bahasa C bukan C++. Dan diikuti dengan beberapa proses deklarasi berikut inisialisasinya. Dan seperti yang sudah dikatakan, setalah itu akan adanya proses input dari user sebelum proses lainnya dilanjutkan. Dan setelah user menginputkan sebuah karakter yang dicarinya dalam elemen array, maka program perulangan akan berjalan secara otomatis untuk menelusuri isi array dengan sebuah kondisi didalamnya yang akan menyeleksi apabila memang apa yang diinputkan oleh user terdapat dalam array. Dan dalam kondisi itu pula pencetakan informasi indeks untuk user dilakukan. Dan dalam program ini tidak terdapat perintah break seperti pada program sebelumnya. Mengapa demikian? Karena apabila kita menggunakan perintah break; maka pada saat program menemukan karakter yang sesuai dengan inputan user akan segera mencetak informasi indeks tersebut, namun indeks yang diinformasikan pada user hanya satu, yaitu indeks yang pertama kali ditemukan oleh program. Lain halnya dengan pada saat tidak menggunakan perintah break; (seperti pada contoh diatas), walaupun program sudah menemukan indeks dari karakter yang dicari, maka perulangan akan terus berjalan hingga kondisi (w<4) berakhir. Dan yang kan tercetak ke layarpun meliputi semua indeks yang menunjuk karakter dalam array tersebut, bukan hanya satu indeks yang pertama ditemukan. Dan apabila Anda mencoba program diatas, maka pada saat Anda menginputkan karakter "u" akan tercetak di layar sebuah informasi sebagai berikut:
Ada dalam indeks ke 0

Ada dalam indeks ke 2

Namun perlu diingat kembali bahwa program ini sangat sensitif pada perbedaan karakter, apabila menuliskan "U" pada inputan, maka tidak akan keluar informasi seperti pada contoh diatas, karena perbedaan antara huruf besar dan kecil. Dan soal indeks tersebut, perlu diingat kembali mengapa indeksnya 0 dan 2, karena indeks array dimulai dari 0 bukan 1. Maka huruf pertama dalam variabel tersebut akan berada pada indeks 0 dan huruf ketiga berada pada indeks ke 2.

No comments:

Post a Comment