Pertemuan 7 Dasar Pemrograman Komputer Tipe Data Sederhana 1
Tujuan Memberikan pemahaman mengenai berbagai tipe data sederhana yang disediakan oleh C, sehingga mahasiswa mampu memilih tipe data yang sesuai untuk menyelesaikan persoalan pemrograman. 2
Format Data Format internal tipe int dan tipe double : Bilangan Biner Mantissa Eksponen Format int Format double Bilangan real = mantissa x 10 eksponen 3
Range Tipe Data Tipe Range short -32.767. 32.767 unsigned short 0. 65.535 int -32.767. 32.767 unsigned int 0. 65.535 long -2.147.483.647.2.147.483.647 unsigned long 0. 4.294.967.295 float 10-37. 10 38 double 10-307. 10 308 long double 10-4931. 104932 4
Ketidakakuratan secara Numerik Representational error : kesalahan yang berkaitan dengan pengkodean bilangan real menggunakan jumlah digit biner yang terbatas. Untuk variabel yang mengontrol perulangan sebaiknya digunakan variabel integer, tidak variabel real. Cancellation error : kesalahan sebagai akibat operasi aritmetika pada operan-operan dengan magnitude yang berbeda; sehingga pengaruh dari operand yang nilainya kecil hilang. 5
Ketidakakuratan secara Numerik Arithmetic underflow : kesalahan yang disebabkan karena hasil komputasi yang nilainya sangat kecil dinyatakan sebagai nol. Arithmetic overflow : kesalahan yang disebabkan karena kita berusaha menyatakan hasil komputasi yang terlalu besar. 6
Konversi Tipe Data Konversi tipe data secara otomatis : int k=5, m=4, n; double x=1.5, y=2.1, z; z=k+5; z=k/m; n=x*y; Konversi tipe data secara eksplisit : z=(double) k/ (double) m; 7
Konversi Tipe Data #include <stdio.h> #define START_CHAR #define END_CHAR Z int main(void) id) { } int char_code; for (char_code code=(int) START_CHAR; char_code code <= (int) END_CHAR; char_code ++) printf( %c, (char) char_code); printf( \n ); return(0); 8
Tipe Enumerasi Tipe enumerasi adalah tipe data yang nilainilainya ditentukan oleh programer pada saat deklarasi tipe. Konstanta enumerasi : suatu identifier yang merupakan salah satu nilai dalam tipe enumerasi Harus berupa identifier Tidak boleh numerik, karakter kt atau string Secara default, nilainya diawali dengan integer 0. Suatu identifier tidak boleh muncul lebih dari sekali dalam definisi tipe enumerasi. 9
Tipe Enumerasi #include <stdio.h> typedef enum {entertainment, rent, utilities, food, clothing, automobile, insurance, miscellaneous} expense_t; void print_expense(expense_t expense_kind); int main(void) { } expense_t expense_kind; scanf( %d, & expense_kind); printf( Expense code represent ); printf_expense(expense_kind); printf( \n ); return(0); 10
Tipe Enumerasi void print_expense(expense_t expense_kind) { switch (expense_kind) { case entertainment: printf( entertainment ); break; case rent: printf( rent ); break; case utilities : printf( utilities ); break; case food : printf( food ); break; case clothing : printf( clothing ); break; case automobile : printf( automobile ); break; case insurance : printf( insurance ); break; case miscellaneous : printf( miscellaneous ); break; default : printf( invalid code ); } } 11
Studi Kasus Masalah : Buatlah fungsi bisect yang mengaproksimasi akar dari sebuah fungsi f pada interval yang berisi i jumlah akar yang ganjil. 12
Studi Kasus Design : Algoritma awal : 1. jika interval berisi akar dengan jumlah genap 2. set variabel error true 3. tampilkan pesan kesalahan else 4. set variabel error false 5. ulangi selama ukuran interval lebih besar dari epsilon dan akar belum ditemukan 6. hitung nilai fungsi pada titik tengah interval 7. jika nilai fungsi nol, titik tengah adalah akar else 8. pilih separuh di kiri atau separuh di kanan dari interval untuk melanjutkan pencarian 9. kembalikan nilai titik tengah dari interval terakhir sebagai akar dari fungsi 13
Referensi Bab 7, Simple Data Types, Problem Solving and Program Design in C, Jeri R. Hanly dan Elliot B. Koffman, Addison Wesley, 2002 14