Tuesday, May 13, 2014

Tutorial Pemrograman C/C++: Menukar Data (Swapping) Antara Dua Variabel Bertipedata Struktur (struct) – Bagian 1

voidProses pertukaran data antara 2 buah variabel bertipedata sama dapat dilakukan dengan menggunakan sebuah variabel bantu yang tentunya tipedatanya juga harus sama dengan kedua variabel yang datanya akan dipertukarkan. Dengan menggunakan sebuah variabel bantu, maka proses pertukaran data dilakukan dengan cara yang sederhana. Dengan menganggap variabel adalah gelas, maka proses pertukaran data atau isi gelas dapat dijelaskan sebagai berikut:
  1. Pindahkan isi gelas SATU ke gelas BANTU
  2. Pindahkan isi gelas DUA ke gelas SATU
  3. Pindahkan isi gelas BANTU ke gelas DUA
Sederhana saja, bukan? Nah, sekarang kita akan mempraktekkan skenario tersebut untuk melakukan pertukaran data pada dua buah variabel bertipe sama. Pada eksperimen ini saya menggunakan IDE C/C++ gratisan C-Free 4.0 Standard dan menguji semua kode program menggunakan LIMAkompiler C/C++ yang berbeda  dan sebuah interpreter C/C++ yakni kompiler Borland C++ 5.5Digital Mars C/C++ 8.57, dan GCC (MinGW 2.95)GCC (MinGW 4.8.1)Open Watcom C/C++ 1.9 dan Ch Interpreter 7.0.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include
int main()
{
   int A = 20;
   int B = 30;
   int C = 0;
   printf("Data SEBELUM proses pertukaran\n");
   printf("A=%d, B=%d, C=%d\n\n", A, B, C);
   C = A;
   A = B;
   B = C;
   printf("Data SETELAH proses pertukaran\n");
   printf("A=%d, B=%d, C=%d\n\n\n", A, B, C);
   return 0;
}
Perintah C = A; meng-copy data variabel A ke variabel C sehingga nilai variabel C menjadi sama dengan variabel A. Berbeda dengan analogi gelas di atas, maka variabel A tetap memiliki nilai 20 dan bukannya hilang atau menjadi 0. Jadi setelah perintah ini nilai A=20,B=30, dan C=20.
Perintah selanjutnya, A = B;, meng-copy data variabel B ke variabel A sehingga nilai variabelA menjadi sama dengan variabel B. Setelah eksekusi perintah ini, nilai A=30B=30, danC=20.
Perintah B = C; meng-copy data variabel bantu C ke variabel B sehingga nilai variabel Bmenjadi sama dengan variabel C. Sehingga dengan demikian maka nilai A=30B=20, danC=20. Walhasil, data variabel A dan B telah dipertukarkan (swapped).
Berikut adalah screenshot hasil eksekusi kode program di atas. Dan sekali lagi saya sampaikan bahwa program telah saya uji menggunakan lima kompiler yakni Borland C++ 5.5Digital Mars C/C++ 8.57, dan GCC (MinGW 2.95)GCC (MinGW 4.8.1)Open Watcom C/C++ 1.9 dan sebuah interpreter Ch Interpreter 7.0
image
Contoh Fungsi swapPada prakteknya, untuk menghindari penulisan perintah proses pertukaran data yang berulang-ulang maka sangat bijaksana untuk membuat fungsi swap() seperti contoh berikut ini.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include
void swap(int *a, int *b)
{
   int c = *a;
   printf("Proses pertukaran data di dalam fungsi\n");
   printf("  --> a=%d, b=%d, c=%d\n", *a, *b, c);
   *a = *b;
   printf("  --> a=%d, b=%d, c=%d\n", *a, *b, c);
   *b = c;
   printf("  --> a=%d, b=%d, c=%d\n\n", *a, *b, c);
}
int main()
{
   int A = 20;
   int B = 30;
   printf("Data SEBELUM proses pertukaran\n");
   printf("A=%d, B=%d\n\n", A, B);
   swap(&A, &B);
   printf("Data SETELAH proses pertukaran\n");
   printf("A=%d, B=%d\n\n\n", A, B);
   return 0;
}
Fungsi swap(int *a, int *b) memiliki parameter masukan berupa dua buah variabel pointer integer yakni int *a dan int *b. Mengapa menggunakan pointer, karena kita menginginkan fungsi ini bisa digunakan pada variabel lokal maupun global.
Sekarang mari kita perhatikan baris-baris perintah dalam fungsi swap().
Perintah int c = *a; berfungsi mendeklarasikan variabel bantu c dan sekaligus meng-copydata dari variabel yang ditunjukkan oleh variabel pointer *a.
Fungsi printf() di dalam fungsi swap() berfungsi untuk menampilkan nilai-nilai variabel yang ditunjuk oleh variabel pointer *a dan *b, dan juga variabel bantu c. Hal ini berguna untuk menunjukkan proses pertukaran data di dalam fungsi.
Perintah *a = *b; berfungsi meng-copy data dari variabel yang ditunjuk oleh variabel pointer*b ke variabel yang ditunjuk oleh variabel pointer *a.
Perintah *b = c; berfungsi meng-copy data dari variabel bantu c ke variabel yang ditunjuk oleh variabel pointer *b.
Pada program utama, variabel integer A=20 dan variabel B=30. Data dari keduanya akan kita pertukarkan dengan menggunakan fungsi swap(), yakni dengan perintah
swap(&A, &B);
Operator & adalah operator referensi yang pada &A berfungsi untuk mendapatkan alamat dari variabel A, dan pada &B berfungsi untuk mendapatkan alamat dari variabel B. Jadi kita memanggil fungsi swap() dengan parameter berupa alamat dari variabel A dan variabel B. Dengan cara ini, maka nantinya data variabel A akan dipertukarkan dengan data variabel B.
Dari sini kita bisa membaca lagi penjelasan fungsi swap(int *a, int *b) di atas untuk mendapatkan gambaran yang lebih jelas.
Hasil eksekusi kode program di atas adalah sebagai berikut.
image
Nah, sekian dulu untuk bagian pertama dari tulisan “Tutorial Pemrograman C/C++: Menukar Data (Swapping) Antara Dua Variabel Bertipedata Struktur (struct)” ini. Bagian selanjutnya akan membahas tentang bagaimana melakukan pertukaran data variabel bertipe data struktur.

0 comments:

Post a Comment

Followers

  © Blogger template 'A Click Apart' by Ourblogtemplates.com 2008

Back to TOP