BAB 8 TIPE ENUMERASI DAN SUB JANGKAUAN Bab
BAB 8 TIPE ENUMERASI DAN SUB JANGKAUAN
Bab 8 8. 1 Tipe Enumerasi 8. 2 Subjangkauan (Subrange)
8. 1 Tipe Enumerasi • Enumerasi merupakan salah satu tipe yg dapat dibuat sendiri oleh pemrogram. • Tipe ini biasa digunakan pada variabel yg nilai kemungkinannya terbatas (tidak begitu banyak). • Nilainya dinyatakan dengan nama-nama pengenal. • Dengan menggunakan pengenal maka diharapkan akan lebih memberikan kejelasan, daripada kalau memakai kode 0, 1, 2 dan seterusnya.
8. 1 Tipe Enumerasi 8. 1. 1 Pendeklarasian Enumerasi 8. 1. 2 Operasi pada Tipe Enumerasi 8. 1. 3 Dari Nilai Ordinal ke Nilai Enumerasi
8. 1. 1 Pendeklarasian Enumerasi • Tipe enumerasi bisa dibuat pada bagian TYPE. • Bentuk pendeklarasiannya: TYPE nama_tipe=(pengenal_1, pengenal_2, …, pengenal_n); • Sebagai contoh: TYPE Sistem. Operasi = (UNIX, MS_DOS, OS_2, WINDOWS_NT, dan WINDOWS_95 • Pada contoh ini tipe Sistem. Operasi berisi 5 pengenal yaitu UNIX, MS_DOS, OS_2, WINDOWS_NT dan WINDOWS_65. • Setelah membuat tipe seperti di atas, Anda dapat mendeklarasikan variabel seperti berikut: VAR Sis. Op : Sistem. Operasi;
• Pendeklarasian variabel seperti berikut: VAR Sis. Op : (UNIX, MS_DOS, OS_2, WINDOWS_NT, WINDOWS_95); juga diperkenankan. Tetapi biasanya yg dipakai adalah melalui pembuatan tipe terlebih dahulu.
• Apa arti pendeklarasian seperti: Sis. Op : Sistem. Operasi; • Inilah yg perlu diperhatikan. Pendeklarasian di atas menyatakan bahwa variabel Sis. Op bertipe enumerasi, yakni Sistem. Operasi. Dalam hal ini Sis. Op dapat berisi salah satu pengenal berikut: o o o UNIX MS_DOS OS_2 WINDOWS_NT WINDOWS_95
• Bentuk seperti : TYPE Sistem. Operasi = (UNIX, MS_DOS, OS_2, WINDOWS_NT, WINDOS_95); • Kira-kira sepadan dengan pendeklarasian: CONST UNIX = 0; MS_DOS = 1; OS_2 = 3; WINDOWS_NT = 4; WINDOWS_95 = 5; • Tetapi dengan menggunakan enumerasi, pendeklarasiannya menjadi lebih sederhana.
8. 1. 2 Operasi pada Tipe Enumerasi • • Setiap pengenal pada tipe enumerasi mempunyai nilai internal yg disebut sebagai nilai ordinal. Pada pendeklarasian: TYPE Sis. Op = (UNIX, MS_DOS, OS_2, WINDOWS_NT, WINDOWS_95) o Nilai ordinal UNIX adalah 0. o Nilai ordinal MS_DOS adalah 1. o Nilai ordinal OS_2 adalah 2. o Nilai ordinal WINDOWS_NT adalah 3. o Nilai ordinal WINDOWS_95 adalah 4. • Nilai ordinal tersebut ditentukan oleh urutan pengenal dalam pendeklarasian. Berdasarkan nilai ordinal maka relasi berikut berlaku: UNIX < MS_DOS < OS_2 Semua operator relasi (=, <>, <, >, <=, >=) dapat dikenakan pada tipe enumerasi. Ekspresi seperti berikut: UNIX <> MS_DOS UNIX < MS_DOS WINDOWS_95 > WINDOWS_NT memberikan nilai TRUE. Sebelum melangkah lebih jauh, ada 3 fungsi yg dapat dikenakan pada tipe enumerasi. Ketiga fungsi tersebut dapat dilihat pada tabel 1. • •
Tabel 1. Fungsi untuk tipe enumerasi Fungsi Ord(x) Pred(x) Succ(x) Keterangan Memperoleh nilai ordinal dari x Memperoleh nilai pendahulu dari (predecessor) dari x Memperoleh nilai penerus (successor) dari x
Source code enum 1. dpr :
Hasil enum 1. dpr :
• • • Fungsi Ord, Pred dan Succ dapat dikenakan pada semua tipe ordinal (misalnya Boolean, Char dan Integer). Fungsi Ord berguna untuk memperoleh nilai ordinal dari suatu nilai enumerasi. Fungsi Pred berguna unutk memperoleh pendahulu suatu nilai enumerasi. Sebagai contoh, pada pendefinisian: o Pendahulu OS_2 adalah MS_DOS. o Pendahulu MS_DOS adalah UNIX. o Pendahulu UNIX tidak ada. Fungsi Succ digunakan untuk memperoleh penerus dari nilai enumerasi. Pada contoh di depan: – Penerus UNIX adalah MS_DOS. – Penerus MS_DOS adalah OS_2. – Penerus OS_2 adalah WINDOWS_NT. – Penerus WINDOWS_NT adalah WINDOWS_95. – Penerus WINDOWS_95 tidak ada. Harap jangan kacaukan istilah “penerus” pada PASCAL dengan istilah yg sama yg biasa kita kenal sehari-hari. Sebab, sebagai contoh, fakktanya kita mengetahui bahwa sistem operasi MS_DOS bukanlah penerus dari sistem operasi Unix. Keduanya adalah 2 sistem operasi yg berbeda.
Bagaimana source code enum 2. dpr jika yang pada source code enum 1. dpr perintah FOR…DO diganti dengan REPEAT ?
Source code enum 2. dpr :
Hasil enum 2. dpr :
Perlu diketahui isi dari variabel enumerasi tidak dapat ditampilkan dengan Write dan Writeln. Contoh source code enum 3. dpr memberikan gagasan untuk mengetahui keadaan tersebut.
Source code enum 3. dpr :
Hasil enum 3. dpr :
8. 1. 3 Dari Nilai Ordinal ke Nilai Enumerasi • Turbo Pascal menyediakan cara untuk mendapatkan nilai enumerasi melalui nilai ordinalnya. • Caranya adalah dengan menyebutkan nama tipe enumerasi diikuti dengan nilai ordinalnya yg diletakkan dalam tanda kurung: nama_tipe_enumerasi(nilai_ordinal) • Sebagai contoh: o Sistem. Operasi (0) memberikan UNIX o Sistem. Operasi (1) menghasilkan MS_DOS dan sebagainya • Contoh source code enum 4. dpr memberikan gambaran cara mengisi nilai enumerasi ke variabel enumerasi melalui kode yg dimasukkan dari keyboard (perhatikan deklarasi prosedur Entri. Kode. Sis. Op). Selain itu juga memberikan gambaran mengenai parameter yg bertipe enumerasi.
Source code enum 4. dpr :
Hasil enum 4. dpr :
8. 2 Subjangkauan (Subrange) • Subjangkauan merupakan suatu tipe yg menyatakan suatu jangkauan nilai dari suatu tipe yg sudah ada. • Jangkauan nilai ditentukan oleh nilai terkecil dan nilai terbesar. • Antara nilai terkecil dan nilai terbesar dipisahkan oleh tanda subjangkauan (. . ). • Bentuk pendeklarasian: TYPE nama_type = nilai_terkecil…nilai_terbesar; • Subjangkauan tdk dapat diterapkan untuk tipe real. Semua tipe ordinal bisa dipakai.
• Contoh: TYPE Nilai. Bulan : 1. . 12; {Subjangkauan dari integer} Huruf kapital : ‘A’. . ’Z’; {Subjangkauan dari tipe char} • Pada contoh di atas: – Tipe. Bulan adalah tipe dari nilai yg berkisar antara 1 sampai dengan 12. – Huruf. Kapital adalah tipe dari nilai yg berkisar antara huruf ‘A’ sampai dengan ‘Z’. • Seperti halnya tipe enumerasi, tipe subjangkauan dimaksudkan untuk memberikan penjelasan kepada pembuat atau pembaca program tentang jangkauan nilai yg bakal terjadi pada suatu data.
• Contoh yg lain: TYPE Nama. Bulan = (JAN, FEB, MAR, APR, MEI, AGU, JUN, JUL, AGU, SEP, OKT, NOP, DES); Musim. Dingin = JAN. . MAR; • Pada contoh di atas, Nama. Bulan adalah tipe enumerasi sedangkan Musim. Dingin adalah subjangkauan dari pengenal-pengenal pada Nama. Bulan yakni terbatas pada JAN, FEB, dan MAR.
- Slides: 26