Programming Language Concept – Data Types

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

Your email address will not be published. Required fields are marked *