Data type menjelaskan kumpulan objek data dan sebuah set operasi yang telah ditetapkan pada objek tersebut. Descriptor adalah kumpulan atribut dari sebuah variabel. Salah satu permaslahanan desain untuk semua tipe data adalah operasi apa yang didefinisikan dan bagaimana mereka ditentukan?.
- Primitive Data Type
Primitive data type adalah tipe data yang berbentuk primitive, dan pasti ada dalam setiap bahasa pemrograman.
Contoh dari primitive data type :
– Integer
– Floating Point
– Complex
– Decimal
– Boolean
– Character
- Character String Type
Character String Type adalah satu tipe di mana nilai-nilai terdiri dari urutan karakter. Karakter string yang konstan digunakan untuk label output, dan input
dan output dari semua jenis data yang sering dilakukan dalam hal string.
Adapun Permasalahan pada character string type :
o Apakah tipe primitif atau hanya jenis khusus array?
o Haruskah panjang string statis atau dinamis?
Tipe – tipe operasi :
o Assignment and copying
o Comparison (=, >, etc.)
o Catenation
o Substring reference
o Pattern matching
- User Defined Ordinal Type
User defined ordinal type Adalah kisaran nilai yang mungkin dapat dengan mudah terkait dengan himpunan bilangan bulat positif.
3 tipe data user defined primitive :
o Integer
o Char
o Boolean
- Enumeration Type
Enumeration type adalah semua nilai yang mungkin, dimana dinamai konstan, dan memberikan, atau, disebutkan dalam definisi. Fungsinya untuk memudahkan dalam tipe data grup.
Contoh :
enum days {Mon, Tue, Wed, Thu, Fri, Sat, Sun};
- Subrange Type
Subrange type adalaah Sebuah subsequence berdekatan memerintahkan tipe ordinal
- Implementation of User-Defined Ordinal Types
Enumeration type diimplementasikan sebagai Integer
Subrange types diimplementasikan seperti type parent dengan kode dimasukkan (oleh kompiler) untuk membatasi tugas untuk subrange variabel
- Array Type
Array adalah agregat homogen elemen data di mana seorang individu elemen diidentifikasi oleh posisinya dalam agregat, relatif terhadap elemen pertama.
Subscript Binding and Array Categories
– Static = rentang subscript yang statis terikat dan alokasi penyimpanan statis (dilakukan sebelum run time).
– Fixed stack-dynamic = rentang subscript yang statis terikat, namun alokasi dilakukan pada saat deklarasi elaborasi selama
eksekusi.
– Stack-dynamic = rentang subscript dan alokasi penyimpanan dinamis terikat pada waktu elaborasi.
– Fixed heap-dynamic = rentang subscript dan storage binding keduanya tetap, setelah penyimpanan dialokasikan.
– Heap-dynamic = pengikatan rentang subscript dan alokasi penyimpanan dinamis dan dapat berubah beberapa kali selama seumur hidup array.
- Heterogeneous Arrays
Heterogeneous array adalah satu di mana unsur-unsur tidak perlu dari jenis yang sama.
Rectangular array adalah array multidimensional di mana semua baris memiliki jumlah yang sama elemen dan semua kolom memiliki jumlah yang sama dari elemen. Array Rectangular bermodelkan meja persegi panjang.
jagged array adalah di mana panjang dari baris tidak perlu menjadi sama. Sebagai contoh, sebuah matriks jagged dapat terdiri dari tiga baris, satu dengan 5 elemen, satu dengan 7 elemen, dan satu dengan 12 elemen.
- Associative Arrays
Associative Arrays adalah koleksi tak berurut elemen data yang diindeks oleh jumlah yang sama nilai-nilai yang disebut kunci.
- Record Type
Record adalah jumlah elemen data di mana unsur-unsur individu
diidentifikasi oleh nama dan diakses melalui offset dari awal
struktur. Record adalah agregat mungkin heterogen elemen data di mana unsur-unsur individu diidentifikasi dengan nama
- Tuple Type
Tuple adalah adalah tipe data yang mirip dengan catatan, kecuali bahwa unsur-unsur yang tidak bernama .
Digunakan dalam Python, ML, dan F # untuk memungkinkan fungsi untuk kembali beberapa nilai
- List Type
Lists pertama kali didukung dalam bahasa pemrograman fungsional LISP. Mereka selalu menjadi bagian dari bahasa-bahasa fungsional, tetapi dalam beberapa tahun terakhir mereka telah menemukan cara mereka ke dalam beberapa bahasa imperatif.
Lists dalam Skema dan LISP dipisahkan oleh tanda kurung dan
unsur tidak dipisahkan oleh tanda baca apapun. Sebagai contoh,
(A B C D)
Nested lists memiliki bentuk yang sama, sehingga kita bisa memiliki
(A (B C) D)
- Union Type
Union adalah jenis variabel yang dapat menyimpan nilai jenis yang berbeda pada waktu yang berbeda selama eksekusi program. Sebagai contoh kebutuhan untuk jenis serikat, mempertimbangkan tabel konstanta untuk compiler, yang digunakan untuk menyimpan konstanta ditemukan dalam program yang dikompilasi.
- Pointer and Reference Types
Sebuah variabel tipe pointer memiliki berbagai nilai-nilai yang terdiri dari alamat memori dan nilai khusus, nil. Memliki kemampuan untuk indirect addressing . memberikan cara untuk me manage dynamic memory. Pointer dapat digunakan sebagai akses lokasi di area penyimpanan dinamis(Heap)
- Pointer Operations
Terdiri dari 2 operasi :
Assignment = digunakan untuk menetapkan nilai variabel pointer untuk beberapa alamat berguna
Deferencing = menghasilkan nilai yang disimpan di lokasi yang diwakili oleh nilai pointer ini
- Problem pada Pointer
Dangling pointers = Sebuah pointer menunjuk ke variabel tumpukan-dinamis yang telah deallocated
Lost heap-dynamic variable = Sebuah variabel heap-dinamis dialokasikan yang tidak lagi dapat diakses oleh program pengguna
- Reference Counter
Maintain counter di setiap cell yang menyimpan jumlah pointer yang saat ini menunjuk pada cell
Kekurangan : ruang yang dibutuhkan, waktu eksekusi yang dibutuhkan, komplikasi untuk sel terhubung sirkuler
keuntungan :intrinsik tambahan, sehingga penundaan yang signifikan dalam pelaksanaan aplikasi dihindari
- Type Checking
Type checking adalah kegiatan memastikan bahwa operan dari operator adalah dari jenis yang compatible .
Compatible type adalah salah satu yang legal bagi operator, atau diperbolehkan di bawah aturan bahasa yang akan dikonversi secara implisit, dengan kode compiler yang dihasilkan, untuk tipe legal. Konversi otomatis ini disebut coercion.
Type error adalah aplikasi operator untuk operan dari tipe yang tidak layak
- Strong Typing
Strong Typing adalah jika jenis kesalahan selalu terdeteksi. Ini mensyaratkan bahwa semua jenis operan dapat ditentukan, baik pada waktu kompilasi atau run time. Pentingnya String typing terletak pada kemampuannya untuk mendeteksi semua penyalahgunaan variabel yang menghasilkan jenis kesalahan. Strong typing juga memungkinkan deteksi, pada waktu berjalan, kegunaan dari jenis yang salah nilai dalam variabel yang dapat menyimpan nilai lebih dari satu jenis.
Leave a Reply