Bab 05 Tipe Data dan Mengisi Variabel 5.1 Bab 05 Tipe Data dan Mengisi Variabel 67
C C++ #include <stdio.h> void main() { int A, B, T; A = 5; 5.2 5.1. Menyiapkan dan Mengisi Variabel (Assignment Statement). C C++ #include <stdio.h> void main() { int A, B, T; A = 5; B = 2; T = A + B; printf(“%i”, T); } #include <iostream.h> void main() { int A, B, T; A = 5; B = 2; T = A + B; cout << T; } int A; A = 5; Menyiapkan variabel A (isinya ada tapi tidak diketahui) Mengisi variabel A (diisi dengan suatu nilai yang dikehendaki dalam contoh ini nilai = 5 ) 67
A = 5; maksudnya megisi variabel A dengan nilai 5. 5.3 A = 5; maksudnya megisi variabel A dengan nilai 5. B = 2; maksudnya mengisi variabel B dengan nilai 2. A = B; maksudnya mengisi variabel A dengan nilai yang dimiliki oleh B T = A + B; maksudnya mengisi variabel T dengan nilai hasil penambahan nilai A dan nilai B. Catatan : nilai A maksudnya isi varibel A 67
J a k a r t a 69 5.2.1. Mengisi dan Mencetak Variabel String Pada Program C / C++ 5.4 C C++ char S[10] = “Jakarta”; printf(“%s”, S); char S[10] = “Jakarta”; cout << S; Tercetak : Jakarta Tercetak : Jakarta 0 1 2 3 4 5 6 7 8 9 Dalam memory : S J a k a r t a \0 \0 \0 0 0 0 0 0 0 0 0 karakter NULL 69
Error 69 #include<stdio.h> void main() { char S[10]; 5.5 #include<stdio.h> void main() { char S[10]; S = “Jakarta”; printf(“%s”, S); } Error #include<stdio.h> #include<string.h> void main() { char S[10]; strcpy(S,“Jakarta”); printf(“%s”, S); } Lihat halaman 24 String copy Tercetak : Jakarta 69
5.6
5.7 5.3. Mengisi dan Mencetak Variabel Character ( char ) C C++ #include<stdio.h> void main() { char C; C = ‘A’; printf(“%c”, C ); } #include<iostream.h> void main() { char C; C = ‘A’; cout << C; } Tercetak : A Tercetak : A 128 64 32 16 8 4 2 1 0 1 0 0 0 0 0 1 Karakter = A Nilai desimal = 65 C 70
71 x x x x x x x x sign -128 127 x x x x x x x x 5.3.1. Mengisi dan Mencetak isi variabel tipe char, pada program C 5.8 Bila dianggap numerik sign : 0 nilai positip 1 nilai negatip dalam bentuk two’s complement 1. char atau signed char x x x x x x x x sign -128 127 2. unsigned char Bila isinya dianggap sebagai nilai numerik, maka nilai yang dapat ditampung berkisar dari : 0 sampai dengan 255 x x x x x x x x 71
71 Lebih jelasnya dapat digambarkan sebagai berkut : 00000000 00000001 5.9 2) signed char 3) unsigned char 4) Kode ASCII 2) signed char 3) unsgned char 4) Kode ASCII 1) data 8 bit 1) data 8 bit 00000000 00000001 . 00110001 00110010 01000001 01000010 01100001 01100010 01111111 1 . 49 50 65 66 97 98 127 1 . 49 50 65 66 97 98 127 null 1 2 . A B a b 10000000 10000001 . 10100000 10100001 10101011 10101100 11000000 11000001 11111111 -128 -127 . -96 -95 -85 -84 -64 -63 -1 128 129 . 160 161 171 172 192 193 255 Ç ü . á í ½ ¼ + - _ 71
0 1 0 0 0 0 0 1 67 #include<stdio.h> void main() Beberapa contoh program C yang memperlihatkan berbedaan tipe signed char dan unsigned char. 5.10 1. #include<stdio.h> void main() {signed char C = ‘A’; printf(“%c\n”, C); printf(“%i\n”, C); } #include<stdio.h> void main() { unsigned char C = ‘A’; printf(“%c\n”, C); printf(“%i\n”, C); } Tercetak : A 65 Tercetak : A 65 128 64 32 16 8 4 2 1 Karakter = A Nilai desimal = 65 0 1 0 0 0 0 0 1 C Untuk nilai decimal < 128 signed dan unsigned bernilai numerik sama 67
0 1 0 0 0 0 0 1 67 2. #include<stdio.h> #include<stdio.h> 5.11 #include<stdio.h> void main() {signed char C = 65; printf(“%c\n”, C); printf(“%i\n”, C); } #include<stdio.h> void main() { unsigned char C = 65; printf(“%c\n”, C); printf(“%i\n”, C); } Tercetak : A 65 Tercetak : A 65 128 64 32 16 8 4 2 1 Karakter = A Nilai desimal = 65 0 1 0 0 0 0 0 1 C 67
5.12 3. #include<stdio.h> void main() {signed char C = 192; printf(“%c\n”, C); printf(“%i\n”, C); } #include<stdio.h> void main() { unsigned char C = 192; printf(“%c\n”, C); printf(“%i\n”, C); } Tercetak : + -64 Tercetak : + 192 128 64 32 16 8 4 2 1 1 1 0 0 0 0 0 0 = 192 0 0 1 1 1 1 1 1 = 1’s complement dari 192 bernilai = 63 1 + 1’s compl + 1 = 2’s compl. 0 1 0 0 0 0 0 0 = 2’s complement dari 192 bernilai = 64 72
4. #include<stdio.h> void main() {signed char C = 255; printf(“%c\n”, C); printf(“%i\n”, C); } #include<stdio.h> void main() { unsigned char C = 255; printf(“%c\n”, C); printf(“%i\n”, C); } 5.13 Tercetak : _ -1 Tercetak : _ 255 128 64 32 16 8 4 2 1 1 1 1 1 1 1 1 1 = 255 0 0 0 0 0 0 0 0 = 1’s complement dari 255 bernilai = 0 1 + 1’s compl + 1 = 2’s compl. 0 0 0 0 0 0 0 1 = 2’s complement dari 255 bernilai = 1 72
Beberapa contoh hasil cetakan data dengan tipe char atau signed char dicetak dengan berbagai macam format. 5.14 dicetak dengan format hasil yang tercetak Isi variabel C Keterangan %c %i atau %d %X %x %li %f A 65 41 error char C = ‘A’; atau dengan char C = 65; nilai ASCII karakter A = 65 niliai Hexadecimal karaktaer A = 41 tidak bisa dicetak dengan format floating point 0 1 0 0 0 0 0 1 4 1 73
4 1 73 %c %i atau %d %X %x %li %f A 65 41 error char C = ‘AB’; 5.15 dicetak dengan format hasil yang tercetak Isi variabel C Keterangan %c %i atau %d %X %x %li %f A 65 41 error char C = ‘AB’; nilai ASCII karakter A = 65 niliai Hexadecimal karaktaer A = 41 tidak bisa dicetak dengan format floating point 0 1 0 0 0 0 0 1 4 1 Bila ditulis 2 karakter, maka yang diambil hanyalah karakter pertama 73
4 1 73 %c %i atau %d %X %x %li %f } 125 7D 7d error char C = 125; 5.16 dicetak dengan format hasil yang tercetak Isi variabel C Keterangan %c %i atau %d %X %x %li %f } 125 7D 7d error char C = 125; 0 1 1 1 1 1 0 1 4 1 73
4 1 73 %c %i atau %d %X %x -1 FFFF ffff char C = 255; char C = 32767; 5.17 dicetak dengan format hasil yang tercetak Isi variabel C Keterangan %c %i atau %d %X %x -1 FFFF ffff char C = 255; atau dengan char C = 32767; Mencetak spasi 1111 1111 = 255 1 1 1 1 1 1 1 1 4 1 1111 1111 1111 1111 = 32767 Untuk %i, %X data dianggap 2 byte yaitu tipe int. 73
5.18 Diambil 8 bit terakhir karena disimpan dalam tipe char dicetak sebagai Nilai karakter numeric ASCII Nilai yang akan disimpan Binary digit (bit) nilai yang akan disimpan 65 127 128 255 32767 32768 65535 65536 100 0001 0111 1111 1000 0000 1111 1111 0111 1111 1111 1111 1000 0000 0000 0000 1111 1111 1111 1111 1 0000 0000 0000 0000 0100 0001 0111 1111 1000 0000 1111 1111 0000 0000 65 127 -128 -1 A Ç _ 74
5.4. Mengisi dan Mencetak isi Sebuah Variabel Numerik Integer 5.19 C C++ #include<stdio.h> void main() { int N = 65; printf(“%i”, N); } #include<iostream.h> void main() { int N = 65; cout << N; } untuk nilai integer, digunakan format “%i” atau “%d” Pada program C++, nilai variabel integer yang dapat dicetak berada dalam batas : -2147483647 s.d. 42944667295 Java public class Contoh01 { public static void main(String args[]) { int N = 65 System.out.println(N); } Ketiga program diatas, akan mencetak sebuah nilai 65 dilayar monitor 77
77 Beberapa Contoh Pencetakan Variabel Numerik khusus pada program C 5.20 #include<stdio.h> void main() { unsigned int N = 65; printf(“%u”, N); } #include<stdio.h> void main() { float F = 25.75 printf(“%f”, F); } tercetak : 65 tercetak : 25.750000 #include<stdio.h> void main() { long int N = 65; printf(“%li”, N); } #include<stdio.h> void main() { double D = 25.75; printf(“%f”, D); } tercetak : 65 tercetak : 25.750000 77
xxxx xxxx xxxx xxxx sign xxxx xxxx xxxx xxxx 78 5.4.1 Mengisi dan Mencetak isi Variabel Numerik Integer pada program C 5.21 1. int atau signed int (numerik integer bertanda) 2 Byte ( 16 bit) xxxx xxxx xxxx xxxx -32768 32767 sign 2. unsigned int (numerik integer tanpa tanda) 2 Byte ( 16 bit) xxxx xxxx xxxx xxxx 65535 78
79 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx sign : 0 = positip 3. long atau long int atau signed long int 5.22 4 Byte ( 32 bit) xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx sign : 0 = positip 1 = negatip dalam bentik two’s complement -2 147 483 648 2 147 483 647 4. unsigned long int 4 Byte ( 32 bit) xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 4 284 967 295 79
5.4.1.1 Mengisi dan Mencetak isi Variabel Numerik Integer tipe int atau signed int dan unsigned int pada program C 5.23 1. #include<stdio.h> void main() {signed int N = 65; printf(“%i\n”, N); printf(“%u\n”, N); printf(“%c\n”, N); printf(‘%X\n”, N); } #include<stdio.h> void main() { unsigned int N = 65; printf(“%i\n”, N); printf(“%u\n”, N); printf(“%c\n”, N); printf(“%X\n”, N); } Tercetak : 65 65 A 41 Tercetak : 65 65 A 41 N 0000 0000 0100 0001 Catatan: Hexadecimal dari 65 sebenarnya adalah 0 0 4 1 tapi yang dicetak hanya 4 1 80
0000 0011 0100 0001 80 N 5.24 2. #include<stdio.h> void main() { unsigned int N = 833; printf(“%i\n”, N); printf(“%u\n”, N); printf(“%c\n”, N); printf(“%X\n”, N); } #include<stdio.h> void main() {signed int N = 833; printf(“%i\n”, N); printf(“%u\n”, N); printf(“%c\n”, N); printf(‘%X\n”, N); } Tercetak : 833 833 A 341 Tercetak : 833 833 A 341 0000 0011 0100 0001 N Yang dicetak dengan format %c (karakter) hanyalah 8 bit paling kanan atau satu byte yang paling kanan 80
81 5.25 #include<stdio.h> void main() {signed int N; N = 32768; 3. #include<stdio.h> void main() {signed int N; N = 32768; printf(“%i\n”, N); printf(“%u\n”, N); printf(‘%X\n”, N); } 5.25 Tercetak : -32768 32768 8000 4. #include<stdio.h> void main() {signed int N; N = 65535; printf(“%i\n”, N); printf(“%u\n”, N); printf(‘%X\n”, N); } Tercetak : -1 65535 FFFF 81
81 5.26 %u %i Diambil 32 bit terakhir karena disimpan dalam tipe signed int atau unsinged int 5.26 Yang tercetak bila dicetak dengan %u %i Nilai yang akan disimpan Binary digit (bit) nilai yang akan disimpan 65 32767 32768 65535 65536 65546 98304 100 0001 0111 1111 1111 1111 1000 0000 0000 0000 1111 1111 1111 1111 1 0000 0000 0000 0000 1 0000 0000 0000 1010 1 1000 0000 0000 0000 0000 0000 0100 0001 0000 0000 0111 1111 1000 0000 0000 0000 1111 1111 1111 1111 0000 0000 0000 0000 0000 0000 0000 1010 65 32767 -32768 -1 10 65 32767 32768 65535 10 81
82 5.4.1.2 Mengisi dan Mencetak isi Variabel Numerik Integer tipe long int atau signed long int dan unsigned long int pada program C 5.27 Batas nilai untuk signed long int adalah : -2 147 483 640 ---- 2 147 483 647, dan batas nilai untuk unsigned long int adalah : 0 ---- 4 294 967 295 1. #include<stdio.h> void main() {signed long int N; N = 65; printf(“%i\n”, N); printf(“%u\n”, N); printf(“%li\n”, N); printf(“%lu\n”, N); printf(“%c\n”, N); printf(‘%X\n”, N); } Tercetak : 65 65 A 41 82
Signed long int N; N = 65; 82 5.28 Nilai yang disimpan kedalam N = 65 Binary digit untuk nilai 65 = 100 0001 Disimpan dalam 4 Byte signed long int menjadi : 5.28 #include<stdio.h> void main() {signed long int N; N = 65; printf(“%i\n”, N); printf(“%u\n”, N); printf(“%li\n”, N); printf(“%lu\n”, N); printf(“%c\n”, N); printf(‘%X\n”, N); } 0000 0000 0000 0000 0000 0000 0100 0001 %c %i atau %u atau %X %li atau %lu Bila dicetak denganformat %c, (karakter), maka hanya isi satu byte paling kanan yang diambil untuk dicetak. Bila dicetak dengan %i, %d, %u, atau %X maka hanya 2 byte paling kanan yang diambil untuk dicetak. 82
83 2. signed long int N; N = 2147483647; printf(“%i\n”, N); Tercetak : printf(“%u\n”, N); printf(“%li\n”, N); printf(“%lu\n”, N); printf(‘%X\n”, N);} 5.29 Tercetak : -1 65535 2147483647 FFFF 2147483647 : bit = Tersimpan sebagai : 0111 1111 1111 1111 1111 1111 1111 1111 0111 1111 1111 1111 1111 1111 1111 1111 Yang dicetak dengan: -1 %i %u %X %li %lu 65535 F F F F 2147483647 2147483647 83
83 3. signed long int N; N = -2147483648; Tercetak : 5.30 3. signed long int N; N = -2147483648; printf(“%i\n”, N); printf(“%u\n”, N); printf(“%li\n”, N); printf(“%lu\n”, N); printf(‘%X\n”, N);} Tercetak : -2147483648 2147483648 -2147483648 : bit = Tersimpan sebagai : 1000 0000 0000 0000 0000 0000 0000 0000 1000 0000 0000 0000 0000 0000 0000 0000 Yang dicetak dengan: %i %u %X %li %lu -2147483648 2147483648 83
84 4294967295 = batas tertinggi nilai 5.31 unsigned long int 4. signed long int N; N = 4294967295; printf(“%i\n”, N); printf(“%u\n”, N); printf(“%li\n”, N); printf(“%lu\n”, N); printf(‘%X\n”, N);} Tercetak : -1 65535 4294967295 FFFF 4294967295 : bit = Tersimpan sebagai : 1111 1111 1111 1111 1111 1111 1111 1111 -1 65535 F F F F 4294967295 Yang dicetak dengan: %i %u %X %li %lu 84
84 5. signed long int N; N = 4294967296; printf(“%i\n”, N); Tercetak : 5.32 5. signed long int N; N = 4294967296; printf(“%i\n”, N); printf(“%u\n”, N); printf(“%li\n”, N); printf(“%lu\n”, N); printf(‘%X\n”, N);} Tercetak : 4294967296 : bit = Tersimpan sebagai : 1 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 Yang dicetak dengan: %i %u %X %li %lu 84
5.4.2. Mengisi dan Mencetak isi variabel numeric integer, 5.33 5.4.2. Mengisi dan Mencetak isi variabel numeric integer, pada program C++ Sama dengan tipe variabel numeric integer pada bahasa C, pada C++ , tipe numeric integer adalah : signed int atau cukup ditulis :int unsigned int, signed long int, dan unsigned long int. Batas nilai yang disimpanpun sama yaitu : signed int : dari -32768 -- 32767 unsigned int : dari 0 -- 65535 signed long int : dari -2147483647 -- 2147483647 unsigned long int : dari 0 -- 4294967295 Perbedaan C++ dengan C, adalah pada C++, hasil yang tercetak tergantung pada tipe variabel dimana data tersebut disimpan. Perhatikan beberapa contoh berikut ini : 85
85 5.4.2.1 Mengisi dan Mencetak isi Variabel Numerik 5.34 5.4.2.1 Mengisi dan Mencetak isi Variabel Numerik Integer tipe int atau signed int dan unsigned int pada program C++ menggunakan signed int menggunakan unsigned int 1. #include<iostream.h> void main() { signed int N; N = 65; cout << N; } #include<iostream.h> void main() { unsigned int N; N = 65; cout << N; } Tercetak : 65 Tercetak : 65 85
85 menggunakan signed int menggunakan unsigned int 2. 5.35 menggunakan signed int menggunakan unsigned int 2. #include<iostream.h> void main() { signed int N; N = 32768; cout << N; } #include<iostream.h> void main() { unsigned int N; N = 32768; cout << N; } Tercetak : -32768 Tercetak : 32768 Batas tertinggi nilia signed int adalah 32767. 85
86 menggunakan signed int menggunakan unsigned int 3. 5.36 menggunakan signed int menggunakan unsigned int 3. #include<iostream.h> void main() { signed int N; N = 65535; cout << N; } #include<iostream.h> void main() { unsigned int N; N = 65535; cout << N; } Tercetak : -1 Tercetak : 65535 Nilai tertinggi yang dapat disimpan dalam : signed int adalah : 32767 dan pada unsigned int adalah 65535. Bagaimana bit-bit 65535 disimpan dalam 2 Byte memory dapat dilihat pada sub bab 5.4.1.1 86
86 menggunakan signed long int menggunakan unsigned long int 1. 5.37 5.4.2.2 Mengisi dan Mencetak isi Variabel Numerik Integer tipe signed long int dan unsigned long int pada program C++ menggunakan signed long int menggunakan unsigned long int 1. #include<iostream.h> void main() { signed long int N; N = 2147483648; cout << N; } #include<iostream.h> void main() { unsigned long int N; N = 2147483648; cout << N; } Tercetak : 2147483648 Tercetak : -2147483648 86
86 #include<iostream.h> void main() { signed long int N; 5.38 menggunakan signed long int menggunakan unsigned long int 2. #include<iostream.h> void main() { signed long int N; N = 4294967295; cout << N; } #include<iostream.h> void main() { unsigned long int N; N = 4294967295; cout << N; } Tercetak : -1 Tercetak : 4294967295 Nilai tertinggi yang dapat disimpan dalam : signed long int adalah : 2147483648 dan pada unsigned long int adalah : 4294967295. Bagaimana bit-bit 4294967295 disimpan dalam 4 Byte memory dapat dilihat pada sub bab 5.4.1.2. 86
87 5.5. Mengisi dan Mencetak isi Variabel Numerik 5.39 5.5. Mengisi dan Mencetak isi Variabel Numerik Floating Point float dan double Data floating point dalam Bahasa C dan C++, dibagi 2 macam yaitu : 1. Tipe float : 4 Byte memory Menampung nilai : 3.4E-38 -- 3.4E38 baik positip maupun negatip 2. Tipe double : a. double : b. long double : 8 Byte memory Menampung Nilai :1.7E-308 -- 1.7E308 baik positip nmaupun negatip 10 Byte memory Menempung nilai : 3.4E-4932 -- 1.1E4932 baik positip maupun negatip 87
87 Tercetak : 27.500000 Tercetak : 27.5 C C++ Tercetak : 27.500000 5.40 Contoh penggunaan : C C++ #include<stdio.h> void main() { float F = 27.5; printf(“%f”, F); } #include<iostream.h> void main() { float F = 27.5; cout << F; } Tercetak : 27.500000 Tercetak : 27.5 C C++ #include<stdio.h> void main() { double D = 27.5; printf(“%f”, D); } #include<iostream.h> void main() { double D = 27.5; cout << D; } Tercetak : 27.500000 Tercetak : 27.5 Format hasil cetakan yang lebih rinci dapat dilihat pada Bab 4, mencetak nilai konstanta floating point 87
4.8 Soal Latihan Mandiri 88 I. Pemahaman Mengenai Pemilihan Tipe Data. 5.41 4.8 Soal Latihan Mandiri I. Pemahaman Mengenai Pemilihan Tipe Data. 1. Sebutkan bermacam-macam tipe data standard yang termasuk dalam tipe integer, serta sebutkan jumlah byte yang diperlukan, dan jangkauan (rentang) nilai yang dapat ditampung oleh masing-masing tipe data tersebut. 2. Sebutkan format untuk mencetak nilai integer. 3. Sebutkan jumlah byte yang diperlukan untuk menyimpan data tipe float (floating point) serta rentang nilai yang dapat ditampung oleh tipe tersebut. Sebutkan format untuk mencetak nilai untuk tipe data float 4. Sebutkan format untuk mencetak nilai untuk tipe data float 88
5.42 5. Untuk menyimpan data Gaji Pegawai, pilih salah satu tipe data berikut ini yang sebaiknya digunakan : 1) int 2) long int 3) float dan berikan alasan memilih tipe data tersebut 6. Untuk menyimpan jumlah penduduk di Indonesia, pilih salah satu tipe data berikut iniyangsebaiknya digunakan : 3) float dan berikan alasan memilih tipe data tersebut. 7. Untuk menghitung jumlah huruf yang digunakan untuk memberi nama seseorang, pilih salah satu tipe data berikut ini yang sebaiknya digunakan : 1) char 2) int 3) long int dan berikan alasan memilih tipe data tersebut. 88
5.43 II. Pemahaman mengenai nilai yang tersimpan dalam sebuah tipe data tertentu. 1. Gambarkan bit-bit isi variabel A, yang dibuat dan diisi dengan instruksi sebagai berikut : a. int A; A = 25; b. int A; A = -97; c. char A; A = ‘C’; d. char A; A = 175; 2. Berapa nilai numeric isi variabel A yang dibuat dengan int A, bila komposisi bit bit isi variabel tersebut digambarkan sebagai berikut : a. 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 b. 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 0 88
0 1 0 0 0 0 1 1 88 a. printf(“%c”, A); b. printf(“%i”, A); 5.44 3. Variabel A yang dibuat dengan char A; komposisi bit-bit isi variabel tersedut digambarkan sebagai berikut : 0 1 0 0 0 0 1 1 Apa yang tercetak bila dicetak dengan instruksi : a. printf(“%c”, A); b. printf(“%i”, A); c. printf(“%X”, A); d. printf(“%o”, A); 88
0 1 1 0 0 0 0 1 88 a. printf(“%c”, A); b. printf(“%i”, A); 5.45 4. Variabel A yang dibuat dengan char A; komposisi bit-bit isi variabel tersedut digambarkan sebagai berikut : 0 1 1 0 0 0 0 1 Apa yang tercetak bila dicetak dengan instruksi : a. printf(“%c”, A); b. printf(“%i”, A); c. printf(“%X”, A); d. printf(“%o”, A); 88
Bersambung ke Bab-6 halaman 89 5.46 Bersambung ke Bab-6 halaman 89 88