Wednesday, August 15, 2018

Wednesday, August 15, 2018 August 15, 2018 - tanpa komentar

Tutorial Bahasa C #21 : Union.


Assalamu’alaikum sobat pencari ilmu.
Union Dalam Pemrograman Bahasa C
Karena pada artikel sebelumnya kita telah membahas tentang struct dalam pemrograman Bahasa C, belum afdhol rasanya kalau kita tidak membahas union. Jadi pada kesempatan kali ini admin akan mengulas sedikit tentang union dalam pemrograman Bahasa C. Langsung aja simak ulasan berikut.

Union

Pada dasar nya union mirip dengan struct, hanya saja element-element pada union menempati lokasi memori yang sama. Penggunaan union ini sendiri bertujuan untuk penghematan memori. Karena element-element union menggunakan lokasi memori yang sama, maka penggunaan element-elementnya pun digunakan secara bergantian. Untuk ukuram meori yang digunakan union, menyesuaikan dengan ukuran terbesar dari element yang terdapat pada union tersebut. Umumnya union digukan untuk menangani dua atau tiga element dengan type data yang mirip, misalnya char dengan int atau float dengan double. 

Untuk pendeklarasian union ini mirip dengan pendeklarasian struct, hanya saja jika pada struct menggunakan kata kunci struct, pada union menggunakan kata kunci union.

Betuk umum pendeklarasian:
Union Dalam Pemrograman Bahasa C
Bentuk pendeklarasian object dengan model union:
Union Dalam Pemrograman Bahasa C
Bentuk pendeklarasian union dengan langsung menyertakan object yang menggunakan model tersebut :
Union Dalam Pemrograman Bahasa C
Bentuk pendeklarasian union dengan langsung meyertakan object nya, hanya saja pada bentuk berikut tidak dapat lagi menambah object yang dapat menggunakan model union tersebut pada fungsi lain:
Union Dalam Pemrograman Bahasa C
Karena element-element pada union menggunakan lokasi memori yang sama, sehingga jika terdapat beberapa element dengan type data yang sama, maka nilai dari kedua element terebut akan sama juga. 

Contoh:
1.element union dengan type data yang sama
#include <stdio.h>



union{

    int a;

    int b;    

}x;



void main(){

    x.a=10;

    

    printf("nilai a adalah %d\n",x.a);

    printf("nilai b adalah %d",x.b);

} 
Maka akan didapatkan output :
Union Dalam Pemrograman Bahasa C
Pada listing diatas yang diberi nilai 10 adalah variable a yang menjadi element union x. Tetapi karena variable a dan b sama-sama menjadi element union x dan memiliki type data yang sama yaitu integer. Sehingga nilai yang ada pada kedua elemet tersebut adalah sama. Begitu pula jika nilai b diganti maka nilai a juga akan berubah.

Contoh :
#include <stdio.h>

union{
    int a;
    int b;    
}x;

void main(){
    x.a=10;
    x.b=20;
    printf("nilai a adalah %d\n",x.a);
    printf("nilai b adalah %d",x.b);
}

Maka akan di dapatkan output :
Union Dalam Pemrograman Bahasa C
Tetapi jika element pada suatu union memiliki type data yang berbeda, maka nilai pada element tersebut tidak akan berubah jika dilakukan perubahan pada element lain dengan type yang berbeda.

Contoh :
#include <stdio.h>

union{
    int a;
    char b;   
}x;

void main(){
    x.a=10;
    x.b='b';
    printf("nilai a adalah %d\n",x.a);
    printf("nilai b adalah %c",x.b);
}

Maka akan didapat output :
Sama hal nya dengan struct, untuk mengakses element dari union terdapat dua cara yaitu :

Pengaksesan dengan operator
nama_objek.nama_element 
Pengaksesan lewat pointer
pointer_ke_union->element  atau
(*pointer_ke_union).element 
Dan untuk menampilkan nilai dari element union sebagai output juga hanya dapat dilakukan dengan pengaksesan operator.

Contoh :
1. Menghitung keliling dan luas lingkaran
#include <stdio.h>
#define PHI 3.14

union lingkaran{
    float keliling;
    float luas;
};

void hit_kll(union lingkaran *lkrn, float r);
void hit_luas(union lingkaran *lkrn, float r);

void main(void){
    float r;
    union lingkaran lk;
    
    printf("Masukkan panjang jari-jari : ");
    scanf("%f",&r);
    
    hit_kll(&lk, r);
    printf("Keliling lingkaran : %.2f\n",lk.keliling);
    hit_luas(&lk, r);
    printf("Luas Lingkaran : %.2f\n",lk.luas);
}

void hit_kll(union lingkaran *lkrn, float r){
    lkrn->keliling = 2 * PHI * r;
}

void hit_luas(union lingkaran *lkrn, float r){
    (*lkrn).luas = PHI * r * r;
} 
Maka akan didapatkan output :
Union Dalam Pemrograman Bahasa C
Gimana? Udah ngerti apa itu union? Semoga udah ngerti semua ya. Mungkin hanya ini yang dapat admin bagikan pada artikel union dalam pemrograman Bahasa C kali ini. Pada artikel selanjutnya masih seputaran struct dan union, admin akan membahas tentang typedef pada pemrograman Bahasa C.

Semoga bermanfaat untuk kita semua.

Wassalamu’alaikum.

0 comment:

Post a Comment