Sunday 30 March 2014

KBP pert 4



Data Type
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 Premasalahan 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 Types
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 Types
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

Dangling Pointer Problem
Tombstone = extra heap cell yang merupakan pointer ke heap dynamic variable
-          pointer poin variabel yang sebenarnya hanya pada tombstone
-          Ketika variabel heap-dynamic de-dialokasikan, tombstone yang tersisa di set ke nil
-          Mahal dalam ruang dan waktu
Locks-and-keys = nilai pointer direpresentasikan sebagai pasangan
-          Heap dynamic variable direpresentasikan sebagai variabel ditambah sel untuk nilai kunci bilangan bulat
-          Ketika heap dynamic variabel yang dialokasikan, nilai lock dibuat dan ditempatkan dalam lock cell dan key cell pointer

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.


No comments:

Post a Comment