BASIC DATA TYPES, VARIABLES & OPERATORS
Penyajian dan Pengolahan Informasi Sehari-hari, kita menggunakan abjad-abjad dan angka-angka ketika kita bekerja dengan komputer. Misalnya ketika menulis menggunakan Word atau mengolah angka-angka memakai Excel Contoh abjad/angka : ‘a’,’b’,”elektro”,100,255, dsb Apakah komputer dapat secara langsung bisa mengolah/menyajikan data-data tersebut?? Jawabnya:Komputer tidak dapat langsung menggunakan abjad/sistem bilangan yang biasa kita gunakan
MENGAPA?? Komputer digital hanya dapat mengenal dua keadaan, yang setara dengan bilangan biner 0 dan 1 Setiap simbol dalam abjad perlu disandikan ke dalam sandi(kode) runtun digit biner (bit) dan menggunakan sistem bilangan biner untuk semua komputasi.
Jadi, apakah kita harus selalu menggunakan bilangan biner, ketika mengoperasikan komputer?? Tentu tidak, karena di komputer sudah terdapat software yang mengkonversi informasi yang kita berikan menjadi bilangan biner Yang perlu kita tahu sebagai programmer adalah cara komputer menyandikan abjad dan angka dalam bentuk biner
Penyajian Abjad(karakter) Pada Komputer Himpunan karakter yang digunakan dalam komputer disandikan dengan kode ASCII (American Standard code for Information Interchange) Apa maksudnya?? karakter-karakter yang digunakan komputer,misalnya : ‘A’ .. ‘Z’, ‘a’ .. ‘z’, ‘0’…’9’,’!’..’%’ dst masing-masing mempunyai kode dalam bentuk bilangan biner, kode-kode yang mewakili karakter-karakter itulah yang disandikan dengan kode ASCII Misalnya, kode ASCII karakter ‘a’ = …. , karakter ‘0’ = 00110000 Kode ASCII berukuran 8 bit
Penyajian bilangan bulat tak bertanda (unsigned integer) Tidak mengenal bilangan negatif atau pecahan Disandikan dalam bilangan biner Banyaknya bilangan biner(bit) yang digunakan untuk menyandikan bilangan tersebut, menentukan range(jangkauan) bilangan yang disandikan Contoh: bilangan 4 bit disandikan dari 0000 – 1111 untuk mewakili bilangan 0 – 15(bilangan basis 16). Range bilangan unsigned 4 bit = 0 – 24-1 Range bilangan unsigned n bit = 0 – 2n-1
Contoh : bilangan tak bertanda 4 bit Kode biner 4 bit decimal hexadecimal bit 3 bit 2 bit 1 bit 0 1 2 3 4 5 6 7 8 9 10 A 11 B 12 C 13 D 14 E 15 F
Penyajian bilangan bertanda(signed) Terdiri dari bilangan bulat negatif dan positif Misalnya bilangan 4 bit(basis 16) : ada 16 bilangan anggota maka range bilangan : {-8,-7,…,0,1,..,6,7} Range : -(basis/2) s/d ((basis/2)-1) Penentuan kode biner bilangan negatif menggunakan metode komplemen 2 Kode_biner (n) = kode_biner_unsigned (basis + n), dengan n negatif Contoh : kode -6 = kode biner unsigned (16 – 6) = kode biner unsigned 10 = 1010 Range bilangan signed n bit = -(2n-1) s/d (2n-1)-1
Cara mengenali bil positif dan negatif untuk bilangan bertanda Bilangan nol dan positif: 0 s/d basis/2 (0 < n < [basis/2]-1 ) Bilangan negatif Basis/2 s/d basis – 1 (basis/2 < n < basis – 1)
Signed & Unsigned Contoh : Suatu bilangan 16 bit, misalnya 0b1110101001100000 (0xEA60) akan dibaca sebagai bilangan 60000 oleh tipe unsigned, tapi akan dibaca sebagai -5536 oleh tipe signed.
Bilangan heksadesimal (hex) Sebagai simbol untuk bilangan 4 bit dari 0000 sampai 1111 Simbol yang digunakan 0 s/d 9 ditambah A s/d F Masing-masing simbol mewakili satu kombinasi 4 bit
konversi Contoh 3010= 111102 = 1E16 1010 11012 = AD16 10102=A16 , 11012=D16 7F16=0111 11112 716=01112,F16=11112 Lebih mudah melakukan konversi antara bilangan biner dan hexadecimal Bilangan hexadecimal biasanya digunakan untuk menyajikan bilangan biner, terutama yang lebih dari 4 bit
Konversi desimal ke biner Bilangan desimal dikonversi ke biner dengan membagi bilangan tersebut dengan 2 kemudian diambil sisanya Pembagian dilakukan sampai didapat hasil bagi = 1 Sisa hasil bagi hanya berupa bilangan 1/0 Bilangan biner disusun dari sisa yang didapat
Contoh konversi 9010= ……..2 2| 90 |0 90 dibagi 2 = 45 sisa 0 2| 45 |1 2| 22 |0 2| 11 |1 2| 5 |1 2| 2 |0 2| 1 | 9010= 10110102
Notasi C/C++ Desimal tulis saja apa adanya Biner diberi awalan ‘0b’ / ‘0B’ Contoh :0b11110000, 0b1010 Hexadecimal diberi awalan ‘0x’ / ‘0X’ Contoh :0xFF,0x10
Basic types di C Tipe data Bit Range char 8 -128 127 unsigned char 255 255 int 32 -2,147,483,648 2,147,483,647 unsigned int 4,294,967,295 short int 16 -32,768 32,767 unsigned short int 65,535 long int unsigned long int float 3.40E-38 3.40E+38 double 64 1.7E-308 1.7E+308 long double 80 3.4E-4932 1.1E+4932
Basic Types Tipe data float, double,dan long double digunakan untuk menyajikan tipe bilangan real, termasuk pecahan Tipe data char dan int digunakan untuk menyajikan bilangan bulat Di C, tipe data char juga digunakan untuk menyimpan kode ASCII suatu karakter
Deklarasi Variabel Nilai suatu variabel bisa diubah didalam program Variabel harus dideklarasikan sebelum digunakan di program Untuk memberi tahu program atau fungsi bahwa variabel tersebut akan digunakan Bentuk umum: type variable_list; Contoh : char a,b;//deklarasi variable a dan b unsigned int jumlah;//deklarasi var jumlah float rerata;//deklarasi var rerata
Literals Pada suatu program, dimungkinkan mengakses suatu nilai (angka,karakter) secara langsung tanpa melewati suatu variabel, misalnya: a = 5; my_func(100); pi=3.14; ch=‘a’; printf(“hello world”); Nilai 5, 100, 3.14,‘a’,”hello world” pada contoh di atas adalah literal
Defined constant (#define) #define adalah suatu preprosesor pengarah Fungsinya adalah untuk mendefinisikan suatu konstanta yang bisa digunakan di seluruh bagian program Formatnya : #define identifier value Contoh : #define phi 3.14 , #define g 10
#define Biasanya #define ditempatkan pada awal program atau pada file header Seluruh bagian program bisa mengakses nilai yang sudah di-define tadi, misalnya: a=phi; F=10*g;//phi dan g sudah terdefinisi Ingat, phi dan g bukan variabel!! Jadi tidak bisa dipakai seperti ini : g=10;
Inisialisasi variabel Suatu variable bisa diinisialisasi secara langsung pada saat dideklarasikan, contoh: int a = 1000; char x = ‘x’; float nilai = 123.10; char hello[12] = “hello world”;
Representasi suatu variabel di memori Pada saat program berjalan, data-data variabel program akan menempati suatu ruang di memori Berapa besar ruang di memori yang dipakai dan seperti apa konfigurasi data di memori, tergantung dari tipe datanya
Representasi bilangan unsigned char dan int Bilangan unsigned short int Konfigurasi akan sama pada bilangan 32 bit, hanya jumlah bitnya yang berbeda
Representasi bilangan signed Bilangan char Bilangan short int Konfigurasi akan sama pada bilangan 32 bit, hanya jumlah bitnya yang berbeda
Bagaimana suatu bilangan negatif disimpan di memori? Menggunakan teknik komplemen-2(pengantar tentang komplemen-2 ada di PPT ini hal 9) Komplemen-2 komplemen-1 + 1
Apa itu komplemen-1? Komplemen-1 suatu data adalah bit-wise negation dari data tersebut Misalnya : d = 15 = 0b00001111 Komplemen1(d)= 0b11110000 Maka komplemen2(d) = 0b11110001 Jadi -15 disimpan sebagai 0b11110001 di memori
Bagaimana dengan bilangan pecahan atau real? Bilangan pecahan disimpan di memori dalam bentuk floating point Untuk membahas floating point, kita awali dengan menyajikan suatu bilangan pecahan dalam bentuk biner
Representasi suatu bilangan pecahan Representasi desimal : misal: bilangan -17.25 Scientific notation: -17.25 = - 1.725 * 10^1 ^-sign ^- mantissa ^- exponent
Representasi suatu bilangan pecahan Representasi biner Besarnya bilangan adalah: B= …+ b2*22 + b1*21+ b0*20 + b-1*2-1 + b-2*2-2 + … Misalnya bilangan – 17.25 = -(17 + ¼) = -(17 + 2-2) Penulisan bilangan binernya : 17 = 10001 , ¼ = 0.01 Jadi, -17.25 = - 10001.01
Format floating point Suatu bilangan pecahan tidak disimpan di memori komputer dalam format representasi binernya Bilangan tersebut akan disimpan dalam format floating point Untuk format float 32 bit, skema bilangan tersebut adalah sbb:
Format floating point Bilangan yang akan disimpan dalam memori disajikan melalui persamaan berikut: B =(-1)S * 2(E-127) * 1.M Ket: S bernilai 0(positif) atau 1(negatif) E dimasukkan ke rumus dalam bentuk desimal M dimasukkan ke rumus dalam bentuk biner
Contoh konversi Bilangan B=-17.25 Konversi ke biner B=-10001.01 ke biner scientific B=-1.000101 * 24 Dari bentuk biner scientific tersebut, B bisa ditulis sbb: B = (-1)1 * 2(131-127) * 1.000101 Jadi didapat sbb: S = 1, E = 131, M =000101
Penyimpanan ke memori S = 1 E = 131 = 10000011 17 buah 0 ditambahkan sehingga jumlah bit total pada M adalah 23 bit bentuk yang tersimpan di memori adalah: 1 10000011 00010100000000000000000 ket:hijau : S, biru : E, merah : M
Operator Operator Aritmatika Increment & Decrement Operator Logika Operator Relasional
Operator Aritmatika - Operator Action pengurangan / negasi + penjumlahan * perkalian / pembagian % modulus (sisa)
Operator increment & decrement Increment : menambah variabel tersebut dengan 1 ( x = x + 1) Decrement : mengurangi variabel tersebut dengan 1 (x = x -1) Operator Action -- decrement (x=x-1) ++ increment (x=x+1)
Operator relasional Digunakan untuk membandingkan 2 variabel atau variable dengan literal Output operasi relasional adalah kondisi true atau false (1 atau 0) Operator makna > lebih dari >= lebih dari atau sama dengan < kurang dari <= kurang dari atau sama dengan != tidak sama dengan == sama dengan
Operator Logical Digunakan untuk menghubungkan 2 operasi relasional atau mengoperasikan bilangan bool Inputnya berupa kondisi true/false(1/0) outputnya juga kondisi true/false Operator Action && Logical AND || Logical OR ! Logical NOT
Operator Bit-wise Masukan operator bit-wise ini adalah suatu bilangan/karakter Operator ini mengoperasikan bit demi bit yang ada di karakter atau bilangan itu operator description & Bitwise AND | Bitwise OR ^ Bitwise Exclusive OR (XOR) ~ Unary complement (bit inversion) << Shift Left >> Shift Right
Operator lainnya C masih punya beberapa operator lainnya Selengkapnya baca buku teks
casting Merupakan konversi dari suatu tipe ke tipe yang lain Notasi : variabel2=(tipe)variabel1; //c dan c++ Variabel2=tipe(variabel1); //khusus c++ Contoh: float pi=3.14; int a; a = (int)pi; //ini disebut tipe casting //jadi, sekarang berapa nilai a??