Enumerasi

Dengan tipe data enumerasi kita bisa mendeklarasikan tipe data ordinal dengan urutan buatan kita sendiri. Angka bisa digantikan dengan nama tertentu seperti nama hari, nama bulan, dll.

Tipe data enumerasi atau enumerated types harus terlebih dahulu dideklarasikan sebagai tipe data buatan dg deklarasi "type". Berikut ini adalah deklarasi tipe enumerasi :

Type Nama_hari = (Minggu, Senin=1000, Selasa, Rabu, Kamis, Jumat, Sabtu);


Kemudian bisa kita mendeklarasikan variabel dengan tipe data tersebut. Contohnya :

var Hari : Nama_hari;


Kalian dapat mengganti nilai pada variabel dengan tipe data enumerasi, misalnya :

Hari := Rabu;

Semua fungsi dan operator tipe data ordinal berlaku pada tipe enumerasi. Jika menggunakan ord kita akan bisa mengubahnya menjadi angka sesuai urutannya. ord (Januari) = 0, dan ord (Desember) = 11. Beberapa batasan berlaku pada tipe enumerasi. Nama nilai pada tipe enumerasi berlaku internal untuk sebuah program. Nilai-nilai tersebut tidak dapat dibaca dari atau ditulis ke file teks secara sederhana sebagai tipe enumerasi dengan nama sekaligus urutannya.

Salah satu tujuan dari tipe enumerasi adalah untuk memungkinkan pemrogram merujuk pada nama yang punya makna berupa suatu urutan. Selain itu, tipe enumerasi memungkinkan fungsi dan prosedur untuk memastikan parameter yang valid, karena nilai yang khas dari tipe data enumerasi. Walaupun tidak bisa disimpan sesuai tipe datanya dan hanya berlaku internal, Write dan Writeln dapat digunakan untuk mencetak string yang mewakili nilai saat ini dalam variabel tipe enumerasi.

Program enumerasi;
uses crt;
Type Nama_hari = (Minggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu=1000);
var Hari : Nama_hari;
begin
    clrscr;
    Hari := Senin;
    dec(hari);
    Writeln (hari, ' adalah hari ke-', ord(hari)+1);
    inc(hari);
    Writeln (hari, ' adalah hari ke-', ord(hari)+1);
    Writeln (Sabtu, ' adalah hari ke-', ord(Sabtu));
    Readln;
end.
Dari contoh di atas, kita melihat bahwa kita bisa menggunakan inc(x) untuk menggeser variabel dengan tipe enumerasi ke posisi berikutnya, dan dec(x) ke posisi sebelumnya. Selain itu, kita bisa menggunakan isi dari variabel dengan tipe enumerasi sebagai konstanta.

Kalian bisa menggunakan ord(x) untuk mengetahui urutan atau nilai dari anggota tipe enumerasi. Jika anggota dari tipe enumerasi sudah memiliki nilai, maka yang ditunjukkan bukan urutannya, melainkan nilainya. Ord akan menghasilkan nilai sesuai urutan isi dari variabel dengan tipe data enumerasi kecuali jika ada nilai lain yang diberikan. Pada contoh di atas, nilai dari "Sabtu" (yang merupakan bagian dari variabel hari) adalah 1000 sesuai nilai yang diberikan saat deklarasi.