Pertemuan 7Dasar Pemrograman KomputerDasar 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 untukmahasiswa mampu memilih tipe data yang sesuai untuk menyelesaikan persoalan pemrograman.
2
Format Data
Format internal tipe int dan tipe double :
Bilangan Biner Mantissa EksponenBilangan Biner Mantissa Eksponen
Format int Format double
Bilangan real = mantissa x 10 eksponen
3
Range Tipe Data
Tipe Rangeshort -32.767 …. 32.767unsigned short 0 …. 65.535i t 32 767 32 767int -32.767 …. 32.767unsigned int 0 …. 65.535long -2.147.483.647 ….2.147.483.647long 2.147.483.647 ….2.147.483.647unsigned long 0 …. 4.294.967.295float 10-37 …. 1038
double 10-307 …. 10308
long double 10-4931 …. 104932
4
Ketidakakuratan secara NumerikRepresentational error : kesalahan yang
berkaitan dengan pengkodean bilangan real menggunakan jumlah digit biner yang terbatasmenggunakan jumlah digit biner yang terbatas.Untuk variabel yang mengontrol perulangan sebaiknya digunakan variabel integer, tidaksebaiknya 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 hilangdari operand yang nilainya kecil hilang.
5
Ketidakakuratan secara Numerik Arithmetic underflow : kesalahan yang disebabkan
karena hasil komputasi yang nilainya sangat kecil dinyatakan sebagai noldinyatakan 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;d bl 1 5 2 1double x=1.5, y=2.1, z;z=k+5;z=k/m;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’i i ( id) {int main(void) {
int char_code;for (char code=(int) START CHAR; char code <= (int)for (char_code (int) START_CHAR; char_code (int)
END_CHAR; char_code ++)printf(“%c”, (char) char_code);
printf(“\n”);p ( \ );return(0);
}
8
Tipe Enumerasi
Tipe enumerasi adalah tipe data yang nilai-nilainya ditentukan oleh programer pada saat deklarasi tipedeklarasi tipe.
Konstanta enumerasi : suatu identifier yang merupakan salah satu nilaisuatu identifier yang merupakan salah satu nilai
dalam tipe enumerasi Harus berupa identifier
Tid k b l h ik k kt t t i Tidak boleh numerik, karakter atau string Secara default, nilainya diawali dengan integer 0. Suatu identifier tidak boleh muncul lebih dari sekaliSuatu 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}clothing, automobile, insurance, miscellaneous}expense_t;void print_expense(expense_t expense_kind);int main(void) {int main(void) {
expense_t expense_kind;scanf(“%d”, & expense_kind);printf(“Expense code represent “);printf( Expense code represent );printf_expense(expense_kind);printf(“\n”);return(0);return(0);
}
10
Tipe Enumerasi
void print_expense(expense_t expense_kind) {switch (expense_kind) {
case entertainment: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;printf( clothing ); break;
case automobile : printf(“automobile”); break;
case insurance : printf(“insurance”); break;
i llcase miscellaneous : printf(“miscellaneous“); break;
default :printf(“invalid code” );
}}}
11
Studi Kasus
Masalah :Buatlah fungsi bisect yang mengaproksimasi akar dari
b h f i f d i t l b i i j l h ksebuah fungsi f pada interval yang berisi jumlah akar yang ganjil.
12
Studi KasusDesign :Algoritma awal :1. jika interval berisi akar dengan jumlah genap
2 t i b l “t ”2. set variabel error “true”3. tampilkan pesan kesalahan
else4 set variabel error “false”4. set variabel error false5. ulangi selama ukuran interval lebih besar dari epsilon dan akar belum
ditemukan6. hitung nilai fungsi pada titik tengah interval7 jika nilai fungsi nol titik tengah adalah akar7. jika nilai fungsi nol, titik tengah adalah akarelse
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 g gfungsi
13
Referensi
Bab 7, “Simple Data Types”, Problem Solving and Program Design in C, Jeri R. Hanly dan Elliot B. Koffman Addison Wesley 2002Koffman, Addison Wesley, 2002
14