Search This Blog

Wednesday 24 August 2016

Mencari isi array (ada dan tidak ada)

Mencari ada dan tidak ada dalam program ini dimaksudkan untuk mencari sebuah isi dari variabel yang sudah ditentukan sebelumnya, apakah nilai yang diinputkan ada dalam variabel tersebut. Seperti pada saat menginisialisasikan sebuah variabel dengan tipe data character dan dalam variabel tersebut terisi dengan array berupa tulisan GOOMILAR, maka kita dapat mencari rangkaian huruf tersebut satu persatu dengan memanfaatkan metode perulangan. Dengan demikian kita dapat memastikan huruf yang kita cari tersebut ada ataukah tidak ada. Perhatikan contoh program berikut ini:

#include<stdio.h>
main(){
char A[9]="GOOMILAR", B;
int i, flag=0;
printf("masukan nilai yang ingin dicari: ");
scanf("%c", &B);

for(i=0; i<8; i++){
if(B==A[i]){
flag=1;
 }
}

if(flag==1){
printf("\n\nNilai yang Anda cari ADA");
}else{
printf("Nilai yang Anda cari TIDAK ADA");
}
}

Terlihat dalam program tersebut bahwa proses untuk mencari suatu nilai apakah ada atau tidak ada dalam variabel yang sudah diinisialisasikan sebelumnya ialah dengan cara membentuk sebuah array terlebih dahulu, sebuah kata "GOOMILAR" terlebih dahulu dibuat menjadi rangkaian huruf yang disimpan dalam sebuah variabel array, lalu setelahnya kita menentukan sebuah variabel untuk penanda. Pada contoh program diatas variabel yang digunakan untuk penanda diberi nama flag, flag bukanlah sebuah fungsi, flag hanya sebuah variabel yang digunakan untuk membantu proses pencarian karakter. Flag merupakan variabel yang dapat diganti dengan apa saja namanya. Flag dalam contoh tersebut diberi nilai awal 0, dan dalam kondisi if, untuk statement true maka flag diberi nilai 1. Namun pemberian nilai awal dan penentu nilai flag dalam kondisi if tersebut tidak harus sama dengan contoh yang diberikan diatas, itu hanya untuk penanda saja. Anda dapat mengganti nilai awal dan perubahan nilainya sesuai dengan yang Anda inginkan, namun dengan catatan harus sesuai antara perubahan nilai flag pada statement true dalam if pertama (if yang terdapat dalam perulangan) dengan seleksi yang dilakukan pada pernyataan if yang kedua (if yang terakhir / if yang setelah perulangan). Seperti misalnya Anda mengganti nilai awal flag yang tadinya 0 menjadi 86, dan Anda mengganti nilai flag pada statement true dalam perulangan menjadi 97, maka Andapun harus mengganti nilai flag pada seleksi if setelah perulangan menjadi 97 pula, karena itu yang menjadi patokan yang membantu kita melakukan pencarian tersebut.

Mari kita bahas satu persatu dari potongan program diatas. Pada pertama kalinya kita mendeklarasikan variabel array A dan memberi nilai awal "GOOMILAR". Lalu selanjutnya kita mendeklarasikan variabel B, dimana variabel B akan digunakan untuk menyimpan data inputan dari user. Dan berikutnya terdapat percetakan yang memberi arahan pada user untuk menginputkan suatu nilai yang dicarinya. Disamping itu, ada perintah untuk menginput dengan scanf, dimana user akan menginputkan karakter yang dicarinya lalu karakter tersebut akan disimpan dalam variabel B yang selanjutnya akan diproses. Setelah itu, kita menerapkan perintah untuk perulangan, dimana perulangan tersebut akan dilakukan sejumlah karakter yang ada dalam variabel array (variabel yang akan dicari). Dalam contoh diatas terlihat bahwa i bernilai awal 0 dan diakhiri dengan 7, setiap perulangannya nilai i ditambah 1. Maka perulangan akan dilakukan sebanyak 8 kali dari 0 hingga 7 (tidak sampai 8 kali, karena tertulis i<8 bukan i<=8). Dan didalam perulangan tersebut maka variabel array akan dicek per-indeksnya dengan kondisi if. Apabila isi variabel B (karakter yang diinputkan oleh user tadi dan sudah tersimpan dengan sendirinya pada variabel B saat ditekan tombol enter oleh user) sesuai dengan isi array dari variabel A, maka nilai flag yang tadinya 0 akan berubah menjadi 1, namun sebaliknya, apabila isi dari variabel B tidak sesuai dengan isi array dari variabel A, maka program akan melewatkan statement dalam kondisi if tersebut. Dengan demikian nilai flag tidak akan berubah, dengan kata lain nilai flag akan tetap 0 seperti nilai awal yang sudah diberikan sebelumnya. Setelah perulangan tersebut kita melihat ada kondisi if lagi dalam potongan program berikutnya, dimana kondisi if tersebut mengecek kembali nilai dari flag. Ya, dalam kondisi if yang satu ini bukan lagi mengecek atau menyeleksi kesamaan isi variabel B dan variabel array A, namun if yang satu ini tugasnya adalah untuk mengecek apakah hasil perulangan tersebut menghasilkan perubahan pada nilai flag, apabila nilai flag berubah menjadi 1, maka dalam statement true pada if yang satu ini akan mencetak ke layar / memberitahukan user bahwa karakter yang dicarinya ada. Namun sebaliknya, apabila kondisi if dalam perulangan tersebut dilewatkan semua (dengan kata lain tidak ada yang sesuai antara yang diinputkan user dengan isi dari array A), maka nilai flag tidak mengalami perubahan, yang artinya nilai dari flag masih sama dengan saat inisialisasi. Dengan demikian pada kondisi if yang satu ini, program akan melewatkan statement true dan hanya akan menjalankan perintah yang ada dalam statement false. Dalam statement false ini terlihat bahwa program akan mencetak pula ke layar untuk memberitahukan user akan karakter yang dicarinya tersebut tidak ada. Dan setelah semua proses itu terjadi, program akan berakhir saat pesan tersebut sudah sampai pada layar monitor user.

Yang penting untuk diberitahukan disini (diingatkan), ialah untuk inputan. Bahwa dalam program ini perbedaan karakter sangat sensitif, seperti halnya pada program diatas, apabila Anda menjadi user dan menginputkan huruf g, maka program akan menganggap itu menjadi statement false, dikarenakan dalam bahasa C huruf besar dan kecil itu dianggap berbeda. Namun apabila Anda menginputkan huruf G, maka program akan menjalankan statement true. Bukan karena dalam program ini user harus selalu menggunakan huruf besar untuk inputannya, namun karena harus adanya kesesuaian antara user dengan programmer. Apabila dalam inisialisasi variabel array diberi isi tipe data character dengan huruf besar maka inputanpun harus menggunakan huruf besar, begitupun sebaliknya, pada saat programmer menggunakan huruf kecil, userpun harus menggunakan huruf kecil sebagai penyesuaian. Dengan demikian, jangan kaget apabila Anda membuat program dengan rangkaian huruf besar lalu pada saat running dan menginputkan huruf kecil dianggap salah, itu bukan karena program Anda yang error, hanya saja terdapat perbedaan antara inputan dengan nilai yang terdapat pada arraynya.

Memang kelihatannya tidak sulit untuk membuat program seperti contoh diatas, namun jika Anda tidak mencobanya, maka Anda tidak akan tahu apa yang harus dilakukan pada saat mengalami error dalam program tertentu. Bahkan yang sudah mengertipun dapat lupa dalam pembuatan program tersebut, terutama apabila sudah lama tidak menggunakan / mencoba program tersebut. Dan perlu diingatkan lagi bahwa untuk mencari suatu nilai apakah ada atau tidak ada, tidak harus selalu menggunakan program seperti diatas, masih banyak cara lain untuk melakukan pencariannya. Semua kembali pada algoritma yang digunakan, seperti contoh berikut ini:

#include<stdio.h>
main(){
char D[9]="gugum", E;
int c;
printf("inputkan karakter: ");
scanf("%c", &E);

for(c=0; c<5; c++){
if(E==D[c]){
printf("\n\nKarakter tersebut ADA");
break;
}
}

if(E!=D[c])
printf("\n\nKarakter tersebut TIDAK ADA");
}
Dalam program tersebut sesungguhnya sama saja, hanya yang membedakan ialah algoritmanya, jika pada program sebelumnya kita lebih mengandalkan bantuan variabel flag dalam menentukan ada atau tidaknya, disini kita mengandalkan bantuan break; dalam mencetak pemberitahuan ke layar (mencetak hasil). Break; dalam program C berartikan berhenti, dalam contoh program diatas penulis menggunakannya untuk memberhentikan perulangan pada saat telah ditemukannya karakter yang sesuai. Dan apabila perintah break; tersebut dihilangkan, maka program akan terus mencetak pemberitahuan ada apabila pada beberapa kali perulangan ternyata karakter yang dicari tersebut ditemukan beberapa kali, hingga akhirnya perulangan berhenti dan akan melanjutkan pada perintah if berikutnya, yaitu untuk mencetak pemberitahuan tidak ada. Namun jika perintah break; tersebut tidak dihilangkan (sesuai dengan contoh diatas), maka program akan melakukan perulangan sebagaimana mestinya, apabila kondisi if itu terus dilewatkan (tidak ada isi array yang sesuai dengan inputan) maka perintah break; dan cetak yang ada dalam kondisi if tersebut tidak akan dijakankan, hingga perulangan selesai dan progran akan melanjutkan pada kondisi if yang berikutnya yaitu apabila memang tidak ada yang sesuai akan diberikan pemberitahuan ke layar bahwa karakter tersebut tidak ada dalam array yang dimaksud.

1 comment: