Bab 4: Tipe-Tipe Data dan Operator
A: Type-type tersebut adalah struct yang mirip dengan class di banyak hal. Seperti
• Pada statement ke 3, kita sebenarnya tidak perlu melakukan cast manual. char akan otomatis terkonversi menjadi int.
• int.
• Hasilnya adalah double.
[/latihan mini]
4.11 Type dari Class Library .NET
Sebenarnya dari tadi kita menggunakan type-type yang terdefinisi di class library .NET. Nama seperti int, double, dan yang lainnya hanyalah nama yang spesifik dengan C#. Tabel berikut akan menuliskan nama-nama asli dari type-type yang telah kita pelajari:
Keyword C# Nama di Class Library .NET
ch ar Sy st em . Char b y t e Sy st em . By t e sby t e Sy st em . SBy t e short Sy st em . I nt 16 ushor t Sy st em . UI nt 16 int Sy st em . I nt 32 uint Sy st em . UI nt 32 lon g Sy st em . I nt 64 ulong Sy st em . UI nt 64 float Sy st em .Single double Sy st em .Double d ecim al Sy st em . Decim al [tanya jawab]
Q: Apakah type-type tersebut juga merupakan class, sebagaimana System.Console?
A: Type-type tersebut adalah struct yang mirip dengan class di banyak hal. Seperti
System.Console yang memiliki method static Write() dan WriteLine(), type-type tersebut juga memiliki method-method yang sebentar la gi akan kita pelajari. Anda juga sekarang tahu bahwa class/struct dapat menyimpan data (misalnya int menyimpan data yang berupa angka).
[/tanya jawab]
Walaupun tidak biasa dilakukan, kita bisa menggunakan nama aslinya dalam program kita:
[program lengkap]
/ / Pr ogr am 4.13 - Menggunak an nam a - nam a .NET using Syst em ;
{
st at ic v oid Main( ) {
int a = 50; I nt 32 b = 100;
Syst em .I nt 32 c = a + b; / / m enggunak an nam a lengk ap Console. Wr it eLine( c) ;
} }
[/program lengkap]
Ingat bahwa kita tidak perlu menuliskan nama namespacenya yaitu System karena di program tersebut sudah ada statement using System. Namun penulisan nama namespacenya tetap diperbolehkan.
4.12 Operasi-Operasi Ilegal
Jika anda melakukan operasi-operasi yang ilega l seperti membagi suatu integer atau decimal dengan 0, maka program akan melempar exception. Jika anda mencoba melewati batas suatu variabel, maka akan terjadi overflow dan nilainya akan kembali dari batas lainnya. Lihat contoh program berikut:
[program lengkap]
/ / Pr ogr am 4.14 - Pr ogr am ak an cr ash! ! ! using Syst em ;
class Oper asiI legal {
st at ic v oid Main( ) {
byt e x = 0; / / 0 adalah bat as m inim um by t e
x - = 2; / / k ar ena m elew at i bat as baw ah, nilai x k em bali dar i at as Console. Wr it eLine( x ) ; / / out put : 254
x = 255; / / 255 adalah bat as m ak sim um by t e
x + + ; / / k ar ena m elew at i bat as at as, nilai x k em bali dar i baw ah Console. Wr it eLine( x ) ; / / ou t pu t : 0
int y = 1 / x; / / m encoba m em bagi suat u angk a dengan 0 Console. Wr it eLine( “ say a t idak ak an per nah t am pil” ) ; } } [/program lengkap] Ini outputnya: [console] 254 0
at Oper asiI legal. Main( )
[/console]
Kita bisa lihat bahwa statement terakhir tidak akan pernah dilaksanakan. Program yang keluar karena exception (dan sebab-sebab tak terduga lainnya) biasa dikatakan crash. Penanganan exception akan dibahas di bab tersendiri.
[catatan]
Untuk floating point, pembagian dengan 0 akan menjadikan nilainya NaN (not a number). Overflow pada floating point akan menyebabkan nilainya menjadi infinity.
[/catatan]
4.13 Panduan Penamaan
Dalam memberikan nama class, disarankan anda menggunakan pascal casing yaitu menggunakan huruf besar pada setiap karakter yang mengawali kata. Contoh identifier yang menggunakan pascal casing:
Kendar aanBer m ot or Bin at an gMelat a Bu k u PapanPer m ainan
Untuk variabel yang berada dalam suatu method, anda disarankan menggunakan camel casing. Camel casing mirip dengan pascal casing namun karakter pertama menggunakan huruf kecil. Ini beberapa contoh camel casing:
per m en j u m lah An ak t ingk at Resik o penggem ar Pr osesor AMD x
Ini sesuai dengan panduan penamaan yang terdapat di standar C#.
[tes]
A. Pertanyaan
1. Sebutkan type dari literal- literal di bawah ini!
0 ‘h ’ “ a” 5 0 . 9 8 1 0 0 u l
2. Apakah kegunaan operator increment (++) dan decrement (--)? Apakah perbedaan antara penggunaan prefix (misal ++x) dengan postfix (misal x++)?
3. Apakah arti escape sequence \n dan \t?
4. Dari berbagai type angka, manakah yang tidak kompatibel dengan decimal? 5. Apakah syarat sebelum suatu variabel dapat digunakan?
[kutipan program]
int um ur = 12, double ber at = 30.5;
[/kutipan program]
7. Berapakah nilai akhir dari var1, var2, dab var3 pada kutipan program berikut?
[kutipan program]
int var1 = 5, var2 = 10, var3 = 3; var1 + = var2 * var3- - ;
[/kutipan program]
8. Apakah konsekuensi mengecast int menjadi double? Bagaimana kalau sebaliknya?
B. Membuat Program
1. Buatlah suatu program yang menghitung luas suatu persegi panjang! Panjang persegi panjang tersebut adalah 11 dan lebarnya 6.12.
2. Buatlah sebuah program yang menghitung berapa kaki + inci yang ada dalam 193
inci! Contohnya 13 inci adalah 1 kaki + 1 inci. (1 kaki sama dengan 12 inci)
C. Debugging
1. Program di bawah ini bertujuan meghitung jumlah murid yang ada di sebuah sekolah. Hasilnya tidak sesuai dengan yang diharapkan. Betulkanlah!
[program lengkap]
/ / Tes 3. C. 1 using Syst em ; c lass Jum lahMur id { st at ic v oid Main( ) { byt e kelas1 = 50; byt e kelas2 = 42; byt e kelas3 = 56; byt e kelas4 = 47; byt e kelas5 = 28; byt e kelas6 = 55;
/ / har us dicast m enj adi by t e sebab hasil penj um lahan ini adalah int
by t e t ot alMur id = ( by t e) k elas1 + k elas2 + k elas3 + k elas4 + k elas5 + k elas6;
Console. Wr it eLine( “ Tot al Mur id: ” ) ; Console. Wr it eLine( t ot alMur id) ; }
}
2. Program di bawah ini bertujuan untuk menghitung total biaya yang harus dibayar per tahun. Biaya listrik dan air tiap bulan masing- masing adalah 100 dan 30. Program ini menampilkan jawaban 460 yang tidak mungkin adalah jawaban yang benar. Biaya listrik untuk setahun saja sudah 100 * 12 = 1000. Cari kesalahannya dan betulkan! [program lengkap] / / Tes 3. C. 2 using Syst em ; c lass Biaya { st at ic v oid Main( ) {
in t biay aList r ik Per Bulan = 100; int biayaAir Per Bulan = 30;
int biay aPer Tahun = biay aList r ik Per Bulan + biay aAir Per Bulan * 12; Console. Wr it eLine( “ Tot al biay a: ” ) ;
Console. Wr it eLine( biay aPer Tahun) ; }
}
[/program lengkap]
3. Program di bawah ini bertujuan unt uk menampilkan ‘baris 1’, ‘baris2’, dan ‘baris3’
dalam 3 baris yang berbeda. Modifikasi program sampai mendapatkan hasil yang diinginkan! [program lengkap] / / Tes 3. C. 3 using Syst em ; c lass BarisBaris { st at ic v oid Main( ) {
Console. Wr it eLine( @“ ’bar is 1 ’\ n’bar is 2 ’\ n’bar is 3” ) ; }
}
[/program lengkap] [/tes]