void Proses 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 LIMA kompiler C/C++ yang berbeda  dan sebuah interpreter C/C++ yakni kompiler Borland C++ 5.5, Digital 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.

#include <stdio.h>

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 variabel A menjadi sama dengan variabel B. Setelah eksekusi perintah ini, nilai A=30, B=30, dan C=20.

Perintah B = C; meng-copy data variabel bantu C ke variabel B sehingga nilai variabel B menjadi sama dengan variabel C. Sehingga dengan demikian maka nilai A=30, B=20, dan C=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 swap
Pada prakteknya, untuk menghindari penulisan perintah proses pertukaran data yang berulang-ulang maka sangat bijaksana untuk membuat fungsi swap() seperti contoh berikut ini.

#include <stdio.h>

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-copy data 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.

Untuk selanjutnya, silakan membaca Bagian 2 dari tulisan tulisan ini. Semoga bermanfaat, dan selamat belajar!

Pelatihan Privat Pemrograman C dan Pembuatan Program

Kami melayani Pelatihan Privat Pemrograman C untuk platform Windows, Linux dan Arduino. Kami juga melayani pembuatan program C untuk aplikasi Windows, Linux, Arduino dan Mikrokontroler 8051 atau AVR.

Silakan menghubungi kami melalui WA 0882-3560-7047.

Selamat belajar. Selamat berkarya.