Pemrograman C-3

PEMODIFIKASIAN TIPE DATA

Compiler C menyediakan empat tipe data dasar yang telah dipelajari pada Bab I yaitu int, char, float dan double. Sebagaimana telah dipelajari masing-masing tipe data mendefinisikan sekumpulan nilai variabel yang dapat disimpan dan sekumpulan operasi yang dapat dilaksanakan terhadap data.

Seperti yang dipelajari pada bab terdahulu bahwa variabel int dapat menyimpan nilai dalam jangkauan  -32.768 sampai 32.767 sedangkan variabel bertipe char dapat menyimpan nilai dalam jangkauan -128 sampai 127, padahal untuk keperluan tertentu diperlukan tipe data yang sejenis tapi memiliki jangkauan yang lebih panjang, oleh karena itu pemrograman C menyediakan satu set pemodifikasian tipe data yaitu unsigned, long, register, signed dan  short. Untuk memodifikasi tipe data tersebut dilakukan dengan cara menambahkan pemodifikasi tipe data di depan nama tipe data dalam pendeklarasian variabel seperti pada contoh berikut ini.

unsigned int jumlah;

register int pencacah;

long int nilai_besar;

3.1.Pemodifikasian Tipe Data Menggunakan unsigned

Seperti yang telah dijelaskan diatas bahwa variabel bertipe int dapat menyimpan nilai positif dan negative dengan jangkauan antara -32.768 sampai 32.767. Pada nilai bertipe int, bit paling significant dari nilai menunjukkan tanda nilai (positif atau negative). Dalam banyak kasus, nilai yang disimpan dalam program tidak perlu nilai negative. Pemodifikasian tipe unsigned memberikan informasi kepada compiler bahwa tipe data yang dimaksud tidak memakai bit paling signifikan sebagai bit penunjuk negative dan positif, akan tetapi bit tersebut digunakan untuk menyatakan nilai positif yang lebih besar. Variabel bertipe unsigned int dapat menyimpan nilai dalam jangkauan antara 0 sampai dengan 65.535

Tipe unsigned terhadap variabel bertipe char dapat memodifikasi jangkauan dari yang semula char memiliki jangkauan antara -128 sampai 127 menjadi memiliki jangkauan antara 0 sampai 255. Pendeklarasian untuk tipe data tersebut diatas seperti dalam contoh dibawah ini.

void main ()

{

unsigned int jarak;

unsigned char pinggir_menu;

}

 

3.2.  Pemodifikasian Tipe Data Menggunakan long

Berbeda dengan tipe unsigned yang tidak memakai bit paling signifikan sebagai bit penunjuk negative dan positif, maka pada pemodifikasian tipe long ini menambah kapasitas penyimpanan nilai int sehingga dapat menyimpan nilai integer lebih besar atau lebih negative daripada jangkauan nilai yang dapat disimpan variabel bertipe int.

Pemodifikasian tipe long memberitahukan kepada compiler untuk memakai 32 bit pada variable yang bernilai integer. Variabel bertipe long int dapat menyimpan nilai dalam jangkauan -2.147.483.648 sampai 2.147.483.647. Pendeklarasian untuk tipe data tersebut diatas seperti dalam contoh dibawah ini.

void main ()

{

long int jarak;

long int profit;

}

 

3.3.  Pemodifikasian Tipe Data Menggunakan Kombinasi unsigned dan long

Kombinasi pemodifikasian tipe unsigned dan long akan mengkombinasikan fungsi dari tipe data pemodifikasi tesrsebut, tipe unsigned akan tidak memakai bit paling signifikan sebagai bit penunjuk negative dan positif  sedangkan tipe long akan menambahkan kapasitas dari tempat penyimpanan. Sehingga dengan menggunakan kombinasi pemodifikasian tipe unsigned dan long akan menghasilkan penyimpanan nilai positif yang sangat besar yang mungkin pada suatu saat diperlukan.

Dengan menggunakan pemodifikasi tipe data kombinasi antara unsigned dan long, maka akan mengarahkan compiler untuk mengalokasikan variabel 32 bit dengan kemampuan nilai dalam jangkauan antara 0 sampai dengan 4.292.967.265. Pendeklarasian untuk tipe data tersebut diatas seperti dalam contoh dibawah ini.

void main ()

{

unsigned long int jarak_sangat_Jauh;

}

 

 

 

 

3.4.  Pemodifikasian Tipe Data Menggunakan register

Variabel adalah nama yang oleh program dihubungkan dengan lokasi memori. Ketika kita mendeklarasikan variabel, compiler C mengalokasikan memori untuk menampung nilai variabel. Ketika program perlu mengakses variabel, ada waktu yang dikonsumsi pada saat CPU mengakses memori. Tergantung oleh variabel yang dipakai, adakalanya kita dapat meningkatkan kinerja program dengan mengarahkan compiler untuk menyimpan variabel dalam register (memori yang ada dalam CPU itu sendiri) sesering mungkin. Karena compiler dapat mengakses nilai lebih cepat ketika berada dalam register, akibatnya program akan dieksekusi lebih cepat.

Pemodifikasian tipe register mengarahkan compiler untuk menaruh variabel tersebut dalam register sesering mungkin. Karena jumlah register dala CPU terbatas maka compiler tidak dapat menugaskan variabel ke register secara permanent, sebagai gantinya, compiler akan mencoba mempertahankan variabel dalam register sesering mungkin. Pernyataan berikut ini menggambarkan pemakaian pemodifikasi tipe register.

void main ()

{

register int jarak;

register int pencacah;

}

 

Pemodifikasian tipe register ini harus digunakan pada variabel yang diakses secara berulang oleh program misalnya variabel berkalang.

3.5.  Pemodifikasian Tipe Data Menggunakan short

Pad Compiler C biasanya menyatakan nilai bertipe int menggunakan 16 bit. Sehingga kapasitas yang dapat disimpan dalam varibel bertipe int ini dalam jangkauan     -2.768 sampai 32.767. Kalau dugunakan compiler 32-bit, maka kompiler bisa menyatakan nilai integer memakai 32 bit yang berarti variabel bertipe int dapat menyimpan nilai dalam jangkauan -2.147.483.648 sampai 2.147.483.647. Kalau kita menyimpan nilai yang di luar jangkauan yang dapat disimpan integer, maka akan terjadi kondisi overflow  dan nilai yang ditugaskan akan menjadi salah. Pemodifikasian tipe short dapat digunakan untuk menjamin bahwa compiler menyatakan variabel dengan memakai 16 bit. Pendeklarasian untuk tipe data tersebut diatas seperti dalam contoh dibawah ini.

void main ()

{

short int nilai_kunci;

long int bilangan_kecil;

}

 

3.6.  Pemodifikasian Tipe Data Menggunakan signed

Kompiler C biasanya menyatakan variabel bertipe char menggunakan 8 bit, dengan bit paling signifikan dipakai untuk menyatakan tanda nilai. Seperti yang dipelajari pada sub bab terdahulu bahwa variabel bertipe char dapat menyimpan nilai dalam jangkauan    -128 sampai 127. Sebagaimana telah dipelajari dengan menggunakan pengkualifikasi unsigned, kita dapat mengarahkan compiler C agar tidak menggunakan bit penanda, sehingga akan diperoleh nilai positif yang lebih besar. Dengan menggunakan pemodifikasi bertipe unsigned, variabel bertipe char dapat menyimpan nilai dalam jangkauan 0 sampai 255. Kalau kita memakai variabel bertipe char dan menugaskan nilai di luar jangkauan yang valid ke dalam variabel, akan terjadi overflow dan nilai yang ditugaskan akn menjadi salah. Pada beberapa kasus program ditulis dengan overflow kalau kondisi ini dipindahkan pada compiler yang berbeda, bisa jadi akan menyatakan variabel bertipe char sebagai unsigned. Untuk menjamin bahwa compiler menyatakan variabel bertipe char memakai 8 bit dan 7 bit untuk data dan 1 bit untuk penanda, maka pemodifikasian tipe signed akan dapat membantu dengan pendeklarasian seperti dibawah ini.

void main ()

{

signed char nilai_byte;

signed char pilihan_menu;

}

 

Untuk memahami konsep pemodifikasian data tersebut, cobalah program-program berikut ini.

  1. #include “stdio.h”

main()

{

unsigned u;

long l;

short s;

printf(“Enter an unsigned : “);

scanf (“%u”, &u);

printf(“Enter a long  : “):

scanf (“%ld”, &l);

printf(“Enter a short : “):

scanf (“%hd”, &s);

printf(“%u  %ld  %hd\n”, u,l,s);

}

  1. #include “stdio.h”

main()

{

int i;  /* signed integer  */

unsigned int u;   /* unsigned integer  */

 

u = 33000;

i = u;

printf(“%d  %u “ , i, u);

}

 

 

Leave a comment

No comments yet.

Comments RSS TrackBack Identifier URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s