Secara sederhana, tipe data adalah cara kita memberitahu komputer untuk
mengelompokkan data berdasarkan apa yang dipahami oleh komputer.
Sebagai contoh, misalkan kita memiliki data berupa angka. Agar bisa dipahami
oleh compiler bahasa C, data ini harus disimpan ke dalam variabel yang sudah diset
agar bisa menyimpan angka. Di dalam bahasa C, variabel yang dapat diisi dengan
angka, terdapat tipe data integer dan tipe data float. Sedangkan jika data tersebut
berupa huruf, bisa disimpan ke dalam tipe data char.
Mengapa tipe data boolean dan string tidak termasuk di dalam daftar ini?
Bahasa C memang tidak memiliki tipe boolean bawaan, tapi bisa dibuat
menggunakan tipe data bentukan (enum), atau menggunakan library khusus:
stdbool.h. Sedangkan untuk string, di dalam bahasa C termasuk ke dalam array.
String didefenisikan sebagai array dari tipe data char.
Pada pertemuan ini akan dibahas tipe data dasar dalam bahasa pemrograman C
yang terdiri dari tipe data char, tipe data int dan tipe data float. Sedangkan untuk tipe
data lainnya akan dibahas pada pertemuan yang lain.
Di awal kode program, kita menyiapkan 3 buah variabel bertipe data char.
Ketiga variabel ini bernama karakter1, karakter2 dan karakter3. Isi program ini
akan meminta inputan dari user untuk 3 karakter tersebut, kemudian
menampilkannya kembali. Yang perlu diingat, karakter disini bisa terdiri dari huruf,
angka, serta karakter khusus seperti ?, *, %, #. Jadi tidak masalah jika kita menginput
angka ke dalam tipe data char. Namun angka tersebut tetap harus 1 digit.
Angka yang diinput ke dalam tipe data char tidak bisa diolah dalam
perhitungan, misalnya dipakai untuk perkalian atau penambahan. Jika kita
menginginkan hal ini, harus menggunakan tipe data khusus yang dapat menampung
angka seperti integer atau float.
Bagaimana dengan karakter yang lebih dari 1 digit, seperti kata atau kalimat?
Di dalam bahasa C, kata atau kalimat di kenal juga sebagai string dan ini dianggap
sebagai array dari tipe data char. Lebih lanjut hal ini akan kita pelajari setelah
membahas tentang tipe data array.
Terlihat jangkauan angkanya menjadi lebih besar, tapi tidak bisa menampung
angka negatif. Tipe data unsigned ini cocok untuk data yang tidak pernah negatif,
seperti tinggi badan, berat badan, jumlah orang, dan sebagainya.
Sekarang, jangkauan setiap tipe data sudah membesar 2 kali lipat dengan
mengorbankan angka negatif. Efek sampingnya, kita tidak bisa lagi menginput angka
negatif ke dalam variabel diatas.
Tipe data char yang sebelumnya hanya bisa sampai angka 127 sekarang bisa
menampung nilai 0 – 255. Begitu juga dengan tipe data unsigned short yang bisa
menampung 0 – 65535.
Tapi kenapa tipe data unsigned int dan unsigned long menghasilkan -1?
Ternyata khusus untuk jenis unsigned, kita tidak bisa menggunakan pola karakter
%d, tapi harus diganti menjadi %u.
Dengan demikian, kode program sebelumnya dimodifikasi sebagai berikut:
Contoh 6.4 :
#include <stdio.h>
int main(void)
{
unsigned char angka1;
unsigned short angka2;
unsigned int angka3;
unsigned long angka4;
angka1 = 255;
angka2 = 65535;
angka3 = 4294967295;
angka4 = 4294967295;
printf("Isi variabel angka1 (char): %d \n",angka1);
printf("Isi variabel angka2 (short) %d \n",angka2);
printf("Isi variabel angka3 (int): %u \n",angka3);
printf("Isi variabel angka4 (long): %u \n",angka4);
printf("\n");
return 0;
}
Sebenarnya terdapat satu lagi jenis tipe data untuk angka pecahan, yakni long
double dengan jangkauan yang lebih besar dari double. Namun tidak semua
compiler bahasa C mendukung tipe data ini.
Penulisan angka pecahan juga bisa menggunakan notasi ilmiah, seperti 3.12e2
atau 4E-3. Tanda e atau E mewakili pangkat 10, sehingga 3.12e2 = 3.12 x 10^2 =
312. Sedangkan 4E-3 = 4 x 10^-3 = 0.004.
Meskipun tipe data float bisa menyimpan angka yang sangat besar, tapi tipe
data ini memiliki kelemahan yang umum di setiap bahasa pemrograman (tidak
bahasa C saja), yakni terdapat batas tingkat ketelitian. Hal ini berhubungan dengan
mekanisme penyimpanan di dalam komputer yang berupa angka biner.
Kode yang ada di dalam tanda kurung bersifat opsional dan boleh tidak ditulis.
Untuk lebih jelasnya dapat kita lihat menggunakan contoh kode program berikut:
Contoh 6.6 :
#include <stdio.h>
int main(void)
{
float angka1 = 1234.5678;
printf("Isi variabel angka1: %f \n",angka1);
printf("Isi variabel angka1: %15f \n",angka1);
printf("Isi variabel angka1: %015f \n",angka1);
printf("Isi variabel angka1: %.3f \n",angka1);
printf("Isi variabel angka1: %010.3f \n",angka1);
printf("\n");
return 0;
}
Diawal kode program didefinisikan variabel angka1 sebagai float dan diisi
dengan angka 1234.5678.
- Pada perintah printf pertama, terlihat bahwa angka1 berisi 1234.567749.
Inilah salah satu kelemahan dari tipe data float, yakni tidak bisa secara persis
menyimpan angka. Kesalahan pembulatan ini umum di setiap bahasa
pemrograman yang berasal dari mekanisme konversi angka di dalam komputer
(digit biner).
- Pada perintah printf kedua menggunakan pola %15f. Pola ini akan
menampilkan angka pecahan dengan 15 digit (termasuk karakter titik). Karena
variabel angka1 tersimpan sebagai 1234.567749 (total 11 digit), maka akan
ditambah 4 spasi sebelum angka agar total menjadi 15 digit.
- Pada perintah printf ketiga menggunakan pola %015f. Pola ini juga akan
menampilkan angka pecahan dengan 15 digit, namun 4 spasi sebelumnya akan
diganti dengan angka 0.
- Perintah printf keempat menggunakan pola %.3f. Pola ini akan menampilkan
angka pecahan dengan 3 digit dibelakang koma.
- Perintah printf kelima menggunakan pola %010.3f. Pola ini akan
menampilkan angka pecahan dengan 3 digit dibelakang koma. Selain itu angka
akan ditampilkan dengan jumlah total 10 digit. Jika kurang, akan ditambah
dengan angka 0 di sisi kiri angka bulat.