#include<stdio.h> main(){ int b, s=0, S[3]={24,1,97}, E[3]={22,1,97},W[6]; printf("\n\t\tDeret yang akan ditempatkan awal:\n\n"); for(b=0; b<3; b++){ if(b==0){printf("\t\t\t ");} W[s]=S[b]; s++; printf("%3i", S[b]); } printf("\n\n\n\t Angka yang akan ditempatkan pada indeks berikutnya:\n\n"); for(b=0; b<3; b++){ if(b==0){printf("\t\t\t ");} W[s]=E[b]; s++; printf("%3i", E[b]); } printf("\n\n\n\n\t *=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*\n\n"); printf("\n\n\t\t Hasil Penggabungan / MERGE tersebut:\n\n"); for(s=0; s<6; s++){ if(s==0||s==3){printf("\t\t\t ");} printf("%3i", W[s]); if(s==2){ printf("\n"); } } }
Mari perhatikan contoh program tersebut, seperti biasa yang dilakukan pertama kali ialah deklarasi dan inisialisasi variabel. Namun dalam contoh program terebut terlihar perbedaan antara variabel b dan s. Variabel b terlihat hanya dideklarasikan saja, sedangkan s sudah diberi nilai awal langsung. Mengapa demikian? Oke mari perhatikan perintah-perintah berikutnya, variabel b hanya digunakan dalam 2 perulangan pertama, dan dalam setiap perulangan tersebut variabel b diberi nilai awal, jadi dengan demikian variabel b dapat tidak diberi nilai awal pada saat deklarasi dilakukan. Sedangkan untuk variabel s, walau dalam perulangan ketiga variabel tersebut diberi nilai awal, namun untuk perulangan pertama dan kedua sendiri variabel tersebut tidak memiliki nilai awal. Maka dengan demikian variabel s harus diberi nilai awal terlebih dahulu sebelum perulangan pertama dan kedua dilaksanakan, itulah perbedaan antara variabel b dan s. Lalu mengapa dengan variabel array S dan E diberi nilai awal sedangkan variabel array W hanya dideklarasikan saja? Oke mari perhatikan kembali perintah-perintah berikutnya. Dalam program tersebut tidak ada perintah untuk input, maka untuk menyatakan informasi dalam percetakan, sebagai bukti bahwa variabel array S dan E sudah digabungkan maka kedua variabel array tersebut diberi nilai awal terlebih dahulu. Sedangkan untuk variabel array W sendiri mengapa ia hanya dideklarasikan saja ialah karena ia nantipun akan terisi oleh deret isi variabel S dan E. Dengan demikian variabel array W tidak perlu lagi diberi nilai awal, kecuali jika memang nilai variabel tersebut dibutuhkan dalam program yang dibuat, dan atau mungkin untuk kesesuaian dengan keinginan bahwa variabel tersebut ingin diberi nilai awal terlebih dahulu, itu tidak menjadi masalah, karena pada akhirnya jika nilai tersebut tidak diberi perintah tambahan (selain perintah dalam contoh program diatas) maka isi dari variabel tersebut akan terganti dengan hasil merge tersebut. Dan mengapa variabel array S dan E hanya memiliki 3 deret indeks sedangkan variabel array W memiliki 6 deret indeks? Karena variabel W hanyalah variabel array yang akan menampung isi dari kedua variabel tersebut (variabel array S dan E), maka untuk deklarasi sendiri variabel array W harus mengandung deret indeks sejumlah deret indeks yang ada dalam variabel array S ditambah dengan jumlah deret indeks variabel array E.
Agar tidak terlalu banyak basa-basi, mari kita langung menuju inti dari program tersebut. Untuk perintah printf() sendiri sebelum perulangan dilakukan ialah hanya untuk memberi keterangan pada proses cetak ke layar. Dan dalam perulangan pertama kita melihat variabel yang digunakan untuk perulangan tersebut ialah variabel b, dimana variabel tersebut harus sesuai dengan tujuan dilakukannya perulangan. Dalam perulangan pertama, variabel b juga digunakan untuk mengindeks variabel array S yang mana variabel array tersebut memiliki 3 indeks, dengan demikian perulanganpun dilakukan sebanyak indeks dalam variabel S. Lalu mengapa tidak digunakan untuk variabel W, mengapa digunakan untuk variabel S? Karena yang akan diproses ialah isi dari variabel B, sedangkan variabel array W hanya akan menampung hasil dari proses tersebut. Lalu untuk apa perintah s++ dibawahnya? Perintah s++ tersebut digunakan untuk memberi perubahan kondisi pada variabel s. Karena pada dasarnya antara variabel b dan s memiliki perintah-perintah yang sama, pada variabel b memiliki nilai awal, kondisi dan perubahan kondisi yang ditulis berderet dalam proses perulangan, sedangkan variabel s nilai awalnya ditulis pada saat deklarasi, perubahan kondisi dilakukan didalam perulangan serta kondisinya diwakilkan oleh variabel b sebagai pembantu proses perulangan. Dan peran variabel s dalam inti program ini ialah untuk membantu proses pengindeksan variabel array W, sehingga pada saat perulangan dilaksanakan, maka perpindahan antar indeks dalam variabel array W menyesuaikan perpindahan dari variabel array S. Untuk kondisi if() sendiri yang berisikan perintah jika b==0 maka diberi jarak (tab) dari pojok kiri layar, sehingga pada saat percetakan dilaksanakan, maka perintah printf() dibawahnya lebih tergeser ke kanan. Dengan kata lain tulisan yang tercetak lebih dikekanankan. Demikianlah proses-proses yang terjadi pada perulangan pertama. Dan pada perulangan kedua pun tidak jauh berbeda dimana isi dari variabel array E akan mengisi indeks berikutnya dari variabel array W. Mengapa bisa mengisi indeks berikutnya? Mengapa tidak dari indeks nol lagi? Sedangkan perulangan sendiri berawal dari nol. Itu disebabkan karena s++ yang ada dalam perulangan sebelumnya tidak diberi nilai awal 0 lagi, sedangkan untuk variabel b, pada perulangan kedua diberi nilai awal kembali. Jadi variabel s untuk mengindeks variabel array W hanya akan melanjutkan dari indeks yang sudah dilakukan sebelumnya. Jadi intinya dalam kedua perulangan tersebut tidak banyak mengandung perbedaan, dan alurnya pun sama saja (terlihat dari perintah-perintah yang diberikan).
Proses yang dijelaskan diatas merupakan proses inti dari merge tersebut, dimana isi kedua variabel array (S dan E) akan digabungkan dalam variabel array baru dengan nama variabel W. Proses tersebut memang terlihat mudah, namun yang harus diperhatikan ialah pengindeksan nya. Dimana pada saat perulangan, perulangan tersebut akan dilakukan untuk mengindeks yang mana (menyesuaikan dengan indeks variabel yang mana), apakah variabel yang diisi atau variabel yang mengisi (variabel yang akan digabungkan atau variabel yang akan menampung hasil penggabungan tersebut). Selain itu, yang harus diperhatikan pula ialah pengindeks variabel yang akan menampung hasil penggabungannya. Untuk variabel tersebut, memberi nilai awal harus dilakukan sebelum proses perulangan dilakukan, dan tidak ketinggalan akan perubahan kondisi pada setiap perulangan yang dilakukan. Untuk if() sendiri sebenarnya tidak disertakan dalam kodinganpun tidak menjadi masalah, karena kondisi if() tersebut tidak lain hanyalah pemberi jarak agar cetakan lebih tergeser ke kanan. Begitupun dengan printf() yang berada dalam perulangan tersebut, itu hanyalah keterangan dari nilai dalam variabel yang akan digabungkan, tidak disertakan dalam program tersebutpun tidak menjadi masalah. Dan yang terakhir ialah pada perulangan ketiga. Sebelum perulangan tersebut kita melihat terdapat 2 buah perintah printf() yang mana perintah kedua sama seperti pada sebelum perulangan yang lalu. Namun ada perintah satu lagi yang isinya tak lain karakter = - * namun karakter tersebut tidak mempengaruhi alur program sedikitpun, karena itu hanya untuk memberi sedikit variasi pada cetakan ke layar, juga untuk pemisah antara keterangan awal dengan keterangan hasil dari program yang sudah diproses lebih lanjut. Dan untuk perulangannya sendiri mengapa perulangan tersebut terjadi 6 kali dan berbeda dengan perulangan sebelumnya (3x perulangan), ialah karena jumlah indeks pada variabel W ialah 6, dan nilai 6 tersebut didapat dari penjumlahan indeks variabel S dan E. Dalam perulangan ketiga yang dilakukan sebenarnya hanyalah pencetakan ke layar untuk isi variabel W, dan program tersebut dapat dijalankan tanpa adanya kedua kondisi if() seperti dalam contoh. Karena kondisi pertama hanyalah bertugas untuk memberi jarak seperti kondisi dalam perulangan sebelumnya, hanya saja pemberian jarak disini dilakukan 3 kali, karena pada kondisi if() kedua diberi baris baru setelah 3 indeks pertama. Dengan diberinya baris baru tersebut, maka jika perintah yang menggeser ke kanan hanya diberikan satu kali, maka 3 indeks berikutnya akan tetap berada di posisi sebelah kiri, maka dengan demikianlah pemberian jarak dari kiri dilakukan sebanyak 2 kali setiap 3 indeks. Dan mengapa dalam kodisi tersebut digunakan logika atau (ditulis || ), ialah karena perulangan dilakukan per indeks, tidak sekaligus, maka jika digunakan logika dan (ditulis && ), maka justru per tiga indeks tersebut tidak ada yang bergeser satupun ke kanan.
No comments:
Post a Comment