Translate

Selasa, 15 Januari 2013

PENGOLAHAN FILE ACAK


PENGOLAHAN FILE ACAK

PENGOLAHAN FILE ACAK
Pada file sequential pengolahan datanya bersifat FIFO, tetapi dalam pengolahan data kadang-kadang diperlukan proses pengolahan yang sifatnya acak sehingga pengolahannya dapat dilakukan dengan cepat dan sederhana.
File sequential banyak digunakan pada ekspor/impor data antar sistem dimana format pada sistem yang satu tidak dikenali oleh sistem lain, sehingga data dari suatu sistem perlu diekspor dalam bentuk teks, kemudian diimpor kembali oleh sistem lain. Pada pengolahan seperti ini tentu saja proses pengolahannya bersifat FIFO.
Pengolahan data yang membutuhkan pencarian, pengurutan dan perbaikan data tentu saja sulit menggunakan proses pengolahan FIFO, karena akan menggunakan sumber daya yang besar dan menjadi rumit. Pada pengolahan data seperti ini sangat dibutuhkan proses pemasukan maupun pengambilannya berdasarkan alamat data tersebut.
Agar data dapat diambil dengan cepat, tentu saja dalam penyimpannannya membutuhkan keteraturan, yaitu setiap data memiliki ukuran yang sama, sehingga alamat data dapat didapatkan dengan cepat.
FILE ACAK
File acak didalam pengolahannya data ditempatkan dalam bentuk record yang memiliki panjang yang tertentu. Dengan sistem pengolahan yang demikian suatu record data dapat langsung dibaca ataupun ditulis tanpa harus memproses record sebelumnya. Dalam hal ini type data record akan berperan.
Contoh :
TYPE SISWA
NOINDUK AS STRING * 10
NAMA AS STRING * 15
TEORI AS SINGLE
PRAKTEK AS SINGLE
RATA AS SINGLE
END TYPE
Dim DAT As SISWA
Perintah pengolahan file ACAK
1. Perintah membuka file ACAK
Sebelum suatu file randon dapat digunakan harus dibuka, jika file tersebut belum ada, maka akan dibuat yang baru. Adapun perintah membuka file ACAK adalah sebagai berikut :
OPEN namafile FOR RANDOM AS [#]filenum [LEN=reclen]
Contoh :
OPEN “SISWA.REC” FOR RANDOM AS #1 LEN = LEN(DAT)
Membuka file “siswa.rec” untuk diolah secara acak sebagai file nomor 1 dan ukuran tiap record adalah sama dengan ukuran variabel DAT.
2. Mendapatkan jumlah record pada file ACAK yang telah terbuka.
JlhRec = LOF(1)/LEN(DAT)
Jumlah record dalam file ACAK adalah ukuran keseluruhan file ACAK dibagi dengan ukuran tiap record.
3. Perintah input/output pada file ACAK Perintah menulis data PUT [#]filenum[,nomorrecord][,variable]
Contoh :
DAT.NOINDUK = “920403024″
DAT.NAMA = “Hendra”
DAT.TEORI = 70
DAT.PRAKTEK = 80
DAT.RATA = (DAT.TEORI+DAT.PRAKTEK)/2
PUT #1,JlhRec+1,DAT
Menyimpan data dari variabel DAT ke file ACAK nomor 1, sebagai
record baru pada akhir file (JlhRec+1).
Perintah membaca data
GET [#]filenum[,nomorrecord][,variabel]
Contoh :
GET #1,1,DAT
Membaca data record nomor 1 dari file ACAK nomor 1 ke variabel
DAT.
4. Perintah menutup file ACAK
Setelah selesai digunakan, file ACAK perlu ditutup untuk memastikan semua data ditulis ke media penyimpanan, dan memberikan indikator EOF.
Contoh :
CLOSE #1
Menutup file acak nomor 1.
Contoh sederhana program pengolahan data dengan file ACAK.
‘PROGRAM MENGISI DATA KE FILE SISWA.REC
TYPE SISWA
NOINDUK AS STRING * 10
NAMA AS STRING * 15
TEORI AS SINGLE
PRAKTEK AS SINGLE
RATA AS SINGLE
END TYPE
DIM DAT AS SISWA
DIM NOINDUK AS STRING
OPEN “SISWA.REC” FOR RANDOM AS #1 LEN = LEN(DAT)
RECNO = LOF(1)/LEN(DAT)
DO
PRINT “DATA SISWA KE -”;I
INPUT “NO.INDUK :”,NOINDUK
IF NOINDUK “” THEN
DAT.NOINDUK = NOINDUK
INPUT “NAMA :”,DAT.NAMA
INPUT “TEORI :”,DAT.TEORI
INPUT “PRAKTEK :”,DAT.PRAKTEK
DAT.RATA = (DAT.TEORI+DAT.PRAKTEK)/2
PUT #1,RECNO+1,DAT
RECNO = RECNO + 1
ENDIF
LOOP UNTIL NOINDUK = “”
CLOSE #1
END
‘PROGRAM MENGURUT DATA DI FILE SISWA.REC
TYPE SISWA
NOINDUK AS STRING * 10
NAMA AS STRING * 15
TEORI AS SINGLE
PRAKTEK AS SINGLE
RATA AS SINGLE
END TYPE
DIM DAT1 AS SISWA
DIM DAT2 AS SISWA
OPEN “SISWA.REC” FOR RANDOM AS #1 LEN = LEN(DAT)
JD = LOF(1)/LEN(DAT)
FOR I = (JD-1) TO 1 STEP -1
Sempurna = 1
FOR J = 1 TO I STEP 1
GET #1,J,DAT1
GET #1,J+1,DAT2
IF DAT1.NAMA > DAT2.NAMA THEN
PUT #1,J,DAT2
PUT #1,J+1,DAT1
Sempurna = 0
ENDIF
NEXT J
If Sempurna = 1 Then
I = 0
End IF
NEXT I
CLOSE #1
END
‘PROGRAM BACA DATA DARI SISWA.REC DAN MENCETAK KE LAYAR
CLS
TYPE SISWA
NOINDUK AS STRING * 10
NAMA AS STRING * 15
TEORI AS SINGLE
PRAKTEK AS SINGLE
RATA AS SINGLE
END TYPE
DIM DAT AS SISWA
OPEN “SISWA.REC” FOR RANDOM AS #1 LEN = LEN(DAT)
JD = LOF(1)/LEN(DAT)
PRINT ——————————————————————-”
PRINT “NO.INDUK NAMA TEORI PRAKTEK RATA-RATA ULUS “
PRINT “——————————————————————-”
POLA$=”\ \ \ \ ###.## ###.## ###.## \ \ “
VIEW PRINT 4 TO 23
FOR I = 1 TO JD STEP 1
GET #1,I,DAT
IF DAT.RATA 48 jam diberikan Bonus = (jam kerja – 48) * 5000/jam
- jika jam kerja < 48 jan dikenakan Potongan = (48 – jam kerja) * 1000/jam
- Total Gaji = Gaji Pokok + Bonus – Potongan
Output yang diharapkan :
P.T. JAYA WIJAYA
JL. Kemerdekaan Barat No. 12
============================
LAPORAN GAJI PEGAWAI
========================================================
Nama Gol Jam Gaji Bonus Potongan Total
Pegawai Kerja Pokok (Rp) (Rp) (Rp)
——————————————————–
Suryajaya C 50 350,000 10,000 – 360,000
Sutiman B 48 200,000 – - 200,000
========================================================
Total : 560,000
========================================================

PENGOLAHAN SEQUENTIAL FILE


PENGOLAHAN SEQUENTIAL FILE

File merupakan fasilitas penyimpanan data pada external storage
yang bersifat permanen, jika dibandingkan dengan penyimpanan ke
RAM yang sifatnya sementara. Dengan pemakaian file kita dapat
menghemat pemakaian RAM komputer yang memiliki jumlah yang
terbatas serta dapat melakukan dokumentasi untuk jangka waktu
yang panjang.
Pada QBasic pengolahan file dapat dibagi atas tiga jenis, yaitu :
1. SEQUENTIAL FILE
2. RANDOM FILE
3. BINARY FILE
Pada Sequential file (file urut) proses pengolahannya dilakukan
secara linier dari awal sampai akhir, tanpa bisa kembali kebagian
sebelumnya, kecuali proses dimulai lagi dari awal. Jadi dalam
pengolahan datanya bersifat first in first out, artinya pembacaan
data dari file ini harus dimulai dari data yang paling awal.
Pada umumnya pengolahan data yang menggunakan file sebagai media
INPUT maupun OUTPUT memiliki tiga tahap, yaitu :
1. Tahap membuka file (OPEN)
2. Tahap memproses (INPUT/OUTPUT)
3. Dan yang terakhir adalah tahap menutup file (CLOSE)
Membuka File SEQUENTIAL
Untuk membuka file sequential yang akan diproses dapat digunakan
penulisan sebagai berikut :
Syntax :
Open filename [FOR mode] AS [#]filenum
dimana mode terdiri dari :
INPUT, membuka file untuk proses INPUT
OUTPUT, membuka file baru untuk proses OUTPUT
APPEND, membuka file untuk untuk proses OUTPUT dimana data baru
ditambahkan pada bagian akhir.
Contoh :
Open “Siswa.Dat” For Append AS #1
Akan membuka Siswa.Dat sebagai OUPUT dimana data baru ditambahkan
pada bagian akhir. Jika file Siswa.Dat belum ada, maka akan
dibuat yang baru.
Proses INPUT/OUTPUT
Perintah proses INPUT/OUTPUT pada sequential file sangat
tergantung kepada bentuk perlakuan terhadap data. Untuk penulisan
yang berorientasi pada baris, anda dapat menggunakan perintah
PRINT, dan pembacaanya dapat menggunakan LINEINPUT. Penulisan
yang berorientasi kepada data, anda dapat menggunakan perintah
WRITE dan INPUT untuk proses pembacaannya.
Syntax :
PRINT #filenumber,[USING stringexpressin;]expression list
WRITE #filenumber[,expressionlist]
INPUT #filenumber, variablelist
LINEINPUT #filenumber, variable-string
Contoh :
Write #1, “920403024″,”Hendra”,80,90
menulis ke file nomor 1, dan data dapat dibaca kembali dengan
perintah :
Input #1,Nim$,Nama$,Teori,Praktek
Catatan :
Anda dapat menggunakan fungsi bantu EOF(filenumber) untuk
memeriksa apakah berada diposisi akhir file.
Proses CLOSE
Untuk menutup file dapat digunakan perintah CLOSE.
Syntax :
CLOSE #filenumber
Contoh :
CLOSE #1
menutup file nomor 1.
Contoh :
‘PROGRAM MENGISI DATA KE FILE SISWA.DAT
OPEN “SISWA.DAT” FOR APPEND AS #1
DO
PRINT “DATA SISWA KE -”;I
INPUT “NO.INDUK :”,NOINDUK$
IF NOINDUK$ “” THEN
INPUT “NAMA :”,NAMA$
INPUT “TEORI :”,TEORI
INPUT “PRAKTEK :”,PRAKTEK
WRITE #1,NOINDUK$,NAMA$,TEORI
ENDIF
LOOP UNTIL NOINDUK$ = “”
CLOSE #1
END
‘PROGRAM BACA DATA DARI SISWA.DAT DAN MENCETAK KE LAYAR
CLS
OPEN “SISWA.DAT” FOR INPUT AS #1
PRINT “——————————————————————-”
PRINT “NO.INDUK NAMA TEORI PRAKTEK RATA-RATA LULUS “
PRINT “——————————————————————-”
POLA$=”\ \ \ \ ###.## ###.## ###.## \ \ “
VIEW PRINT 4 TO 23
WHILE NOT EOF(1)
INPUT #1, NO_INDUK$,NAMA$,TEORI,PRAKTEK
RATA = (TEORI+PRAKTEK)/2
IF RATA < 60 THEN
LULUS$=”TIDAK”
ELSE
LULUS$ = “YA”
ENDIF
PRINT USING POLA$;NO_INDUK$;NAMA$;TEORI;PRAKTEK;RATA;LULUS$
WEND
CLOSE #1
END

Minggu, 13 Januari 2013

Menambah virtual memory komputer (setting virtual memory)


Menambah virtual memory komputer (setting virtual memory)

Salahsatu fasilitas yang disediakan oleh windows xp adalah virtual memory. Virtual memory merupakan memori cadangan yang diatur oleh windows dengan mengalokasikan sebagian ruang hardisk yang dapat digunakan (berfungsi) sebagai memory jika memory fisik (ddr ram) komputer sudah penuh terpakai oleh aplikasi yang berjalan di komputer. Virtual memory ini sangat membantu dalam menunjang kinerja windows xp. Anda dapat melakukan setting virtual memory windows di komputer agar kinerja windows xp lebih optimal. Berikut adalah cara mengatur (setting) virtual memory windows.

1. Pada start menu pilih setting -> Control Panel. Pada window Control panel double klik icon System

virtual memory
2. Pada kotak dialog system properties, pilih tabulasi Advanced, pada bagian Performance klik Settings

menambah virtual memory
3. Pada kotak dialog performace option pilih tab Advanced klik tombol Change

setting virtual memory
4. Pada kotak dialog Virtual Memory:
a. Bagian Drive: pilih drive yang akan anda jadikan virtual memory, misalnya D (Uasahakan gunakan partisi yang masih kosong, jika tidak ada partisi hardisk anda pilih saja drive C)
b. Bagian Custom Size, ketik angka sesuai keinginan anda, saya memilih maximum size 1000 MB, jika anda punya ruang hardisk yang besar bisa gunakan angka yang lebih tinggi l
c. Klik tombol Set
d. Klik tombol OK

virtual memory windows
5. Tutup kotak dialog yang lain dengan menekan tombol OK.

Virtual memory komputer anda sudah aktif , mudah-mudahan ada perubahan dan peningkatan kinerja windows xp di komputer.


Program Remedial Algoritma 1B


Bagi yang remedial pelajaran algoritma 1b tidak usah panik , saya disini akan membantu agan-agan semua .
koding yang saya tuliskan ini belum terlalu lengkap dan masih banyak kekurangannya tetapi bisa di jalankan di qbasic. silakan agan-agan periksa terlebih dahulu .

5
cls
? "Menu"
? "1.Input Barang"
? "2.Input Data Konsumen"
? "3.Transaksi"
? "4.Laporan Transaksi"
? "5.Laporan Stok Barang"
input "Mau Pilih Yang mana [1/5] = ", a

select case a
case 1
cls
10 ? "Input Barang "
input "Kode Barang = ", kdbrg
input "no Faktur = ", nofaktur
input "Nama Barang = ",nmbrg$
input "Harga Barang = ",hargabrg
input "stok Barang = ", stok
input "Mau Input Lagi ? [Y/N] ", b$
?
if b$ ="Y" then 10
if b$ = "N" Then 5

case 2
cls
20 ? "Data KOnsumen"
input "Nama Konsumen= ", nmk$
input "Nomor Telpon= ", nok$
input "Mau Input Lagi ? [Y/N] ", k$
?
if k$ ="Y" then 20
if k$="N" then 5

case 3
cls
30 ? "Data Transaksi"
input "Nomor Faktur = ", nofaktur2
if nofaktur = nofaktur2 then 40

?"Nofaktur tidak tersedia"
40 ? "Kode Barang= "; kdbrg
? "Nama Barang = "; nmbrg$
? "Harga Barang = "; hargabrg
Input "Jumlah Barang Yang Ingin Dibeli = ", jmlh
total = jmlh*hargabrg
input " Mau Transaksi Lagi [Y/N] = ", t$
?
if t$ ="Y" then 20
if t$ = "N" yhen 5

case 4
cls
? "___________________________________________________________"
? "Barang Yang Terjual Pada Tanggal [MM/DD/YYYY] ="; date$
? "___________________________________________________________"
? "No Faktur = "; nofaktur
? "Kode Barang ="; kdbrg
? "Nama Barang = "; nmbrg$
? "Harga Barang = "; hargabrg
? "Jumlah Barang = "; jmlh
? "Total Bayar = "; total
? "____________________________________________________________"

case 5
cls
? "____________________________________________________________"
? "Barang Yang Terjual Pada Tanggal [MM/DD/YYYY] ="; date$
? "Laporan Stok Barang"
? "____________________________________________________________"
? "Kode Barang = "; kdbrg
? "No Faktur = "; nofaktur
? "Nama Barang = "; nmbrg$
? "Harga Barang ="; hargabrg
Totalstok = stok - jmlh
? "Total Stok Barang = "; totalstok
? "____________________________________________________________"
end select

end

Notes :
? = merupakan statment pengganti PRINT
$ = type data dari variabel itu sendiri

kekurangan Koding ini :
- belum memakai identity . maksudnya jika agan input lebiih dari 2 maka data yang lama akan terganti data yang baru diinput .
- belum menggunakan login

ane kasiih koding ini buat DIPELAJARI bukan hanya di copy . jika masih ada yang belum mengerti silahkan komen di bawah ini . atau kirim email ke fachriarif03@gmail.com . secepatnya ane akan reply :)

"JANGAN JADI PLAGIAT SEJATI "

Sabtu, 05 Januari 2013

Membulatkan Angka Pada Excel 2007


Membulatkan Angka Pada Excel 2007

Kadang dalam melakukan operasi perhitungan matematika pada excel menghasilkan nilai yang tidak bulat atau banyak angka di belakang koma. Ada beberapa cara untuk membulatkan angka pada Excel.
  1. Mengubah jumlah desimal tanpa mengubah angka
  2. Membulatkan ke atas
  3. Membulatkan ke bawah
  4. Membulatkan ke angka yang terdekat
Mengubah jumlah desimal tanpa mengubah angka
  1. Pilih cell berisi angka yang ingin anda format
  2. Untuk mengubah jumlah desimal pada cell, pada tab Home, di group Number, klik Increase Decimal , atau Decrease Decimal .
cara lain:
  1. Pada tab Home, di group Number, klik tanda panah di kanan bawah untuk memunculkan kotak dialog Format cell.


  2. Pada Daftar Category, klik Number, CurrencyAccountingPercentage atau Scientific.


  3. Pada kotak Decimal places, masukkan jumlah desimal yang ingin anda tampilkan.
Membulatkan ke atas

Untuk membulatkan angka ke atas kita gunakan fungsi ROUNDUPEVEN, atau ODD.
Syntax:
Roundup(Number, num_digits)

Contoh:
A1=23,45763
Hasil dari Roundup(A1,0) adalah 2 adalah 24

Membulatkan ke bawah

Untuk membulatkan angka ke bawah kita gunakan fungsi ROUNDDOWN.
Syntax:
Rounddown(Number, num_digits)


Contoh:
A1=23,45763
Hasil dari Rounddown(A1,0) adalah 2 adalah 23

Membulatkan ke angka yang terdekat 

Untuk membulatkan angka ke atas kita gunakan fungsi ROUND.
Syntax:
Round(Number, num_digits)


Contoh:
A1=23,45763
Hasil dari Round(A1,0) adalah 2 adalah 23

Perbedaan dari ketiga bentuk round adalah
Roundup, angka di belakang koma akan dibulatkan ke atas atau 1 tidak peduli berapa nilai angka tersebut.
Rounddown, angka di belakang koma akan dibulatkan ke bawah atau 0 tidak peduli berapa nilai angka tersebut. 
Round, pembulatan akan disesuaikan, jika angka dibelakang koma 5 ke atas akan dibulatkan menjadi 1, selain itu nol.

sumber : http://ilkomtutorial.blogspot.com/2011/01/membulatkan-angka-pada-excel-2007.html#comment-form

Senin, 17 Desember 2012

Cara Mudah Root Galaxy Mini 2



Cara Root Galaxy Mini 2 S6500
Cara Root Galaxy Mini 2 S6500 – Galaxy Mini 2 S6500 merupakan salah satu ponsel android besutan samsung yang masih tergolong baru. Ponsel mungil ini memiliki processor 800mHz yang setara dengan galaxy gio dan galaxy ace. Namun, sayangnya galaxy mini 2 masih memiliki layar yang kecil seperti pendahulunya, namanya juga mini. Nah, pada kesempatan kali ini saya akan share mengenai bagaimana cara mudah untuk root android samsung galaxy mini 2 S6500 ini. Simak saja langsung langkahnya di bawah.

Cara Root Galaxy Mini 2 S6500

Download terlebih dahulu file yang dibutuhkan disini. Semua file sudah saya kompress menjadi satu bagian. Silahkan download dan kemudian ekstrak file yang bernama alatrootmini2.zip menggunakan WinRar. Selanjutnya ikuti langkah di bawah ini mengenai cara root galaxy mini 2 S6500 :
  1. Pastikan mode debugging anda sudah dicentang. Silahkan masuk ke setting -> developer option -> centang usb debugging.
  2. Jika sudah tercentang, buka file yang sudah anda ekstrak tadi dan jalankan Odin3 v1.85.exe, aplikasi ini fungsinya untuk flashing, upgrade OS, dsb.
  3. Pada bagian PDA, masukkan file yang bernama clockworkmod-5.0.2.8.tar.md5.
  4. Selanjutnya matikan galaxy mini 2 anda dan masuk ke download mode dengan menekan tombol volume down, home dan power secara bersamaan sampai masuk ke download mode.
  5. Colokkan galaxy mini 2 anda menggunakan kabel data ke PC/ komputer dan pastikan kolom COM nya berwarna kuning, kemudian klik START dan tunggu sampai proses selesai. Jika selesai kolom yang berwarna kuning akan berubah menjadi biru dan ada tulisan PASS dan ponsel akan reboot secara otomatis.
  6. Selesai langkah untuk pasang recovery.
  7. Selanjutnya menuju proses rooting. Langkah yang paling ditunggu – tunggu :D
  8. Matikan galaxy mini 2 lagi dan masuk ke mode recovery dengan menekan tombol volume upvolume downhome dan power secara bersamaan selama beberapa detik.
  9. Colokkan ponsel ke PC/ Komputer anda.
  10. Ekstrak file yang bernama RootMe.zip yang anda download tadi dan jalankan program yang bernama runme.bat (file ini ada di dalamRootMe.zip)
  11. Setelah itu restrat hp anda .
  12. Selesai.

Cara Mudah Root Galaxy Mini 2 S6500

Bingung ya? Atau mudah? Semua langkah di atas memang agak berbeda dengan langkah – langkah root sebelumnya karena memang pada Samsung Galaxy Mini 2 ini belum terdapat sistem recovery, jadi kita harus menginstallnya terlebih dahulu. Saya rasa cukup sekian penjelasan saya mengenai cara root galaxy mini 2 S6500 ini, dan semoga membantu anda untuk melakukan rooting pada ponsel galaxy mini 2. Do With Your Own RiskJ

Password : tipstrikandroid

Kamis, 29 November 2012

Value, Domain dan Type



Value

Suatu nilai (value) adalah hal apapun yang mungkin dapat dievaluasi, disimpan dalam suatu struktur data, dikirimkan sebagai suatu argumentasi atau dikembalikan lagi sebagai hasil.

Suatu perhitungan adalah suatu urutan operasi yang diberlakukan untuk suatu nilai untuk menghasilkan suatu nilai. Dengan demikian nilai-nilai dan operasi adalah dasar perhitungan.

Dalam matematika, kumpulan dari argumen-argumen dan hasil-hasil dari fungsi dikenal dengan domain dan co-domain. Domain akan ditandai sebagai kumpulan dari nilai-nilai yang dikirimkan sebagai argumen-argumen atau dikembalikan sebagai hasil.

Nilai-nilai kebenaran, karakter, integer, real, file, pointers, record, set, prosedur dan abstrak fungsi, lingkungan, perintah dan definisi tidak lain bagian dari bahasa pemrograman.

Dua kategori domain, yaitu :

  1. Primitive Domain
Sifatnya atomic
  1. Compound Domain
Kumpulan dari nilai-nilai yang dibangun dari domain-domain pembangun satu atau domain pembangun yang lain.

Suatu domain adalah satu kumpulan elemen-elemen dan digabungkan dengan sekumpulan operasi.

Domain

Elemen-elemen Teori Domain

Ada beberapa compound domain yang digunakan dalam computer sign, yaitu: array, tupple, record, union, set, list, tree, file, relation, definition dan mapping.

Compound domain dibangun oleh suatu domain pembangun. Suatu domain pembangun adalah :

  1. Product domain
  2. Sum domain
  3. Function domain
  4. Power domain
  5. Recursive domain


Product Domain

Domain-domain yang dibangun oleh pembangun product domain disebut tuples dalam ML, record dalam Cobol, Pascal dan ADA, struktur dalam C dan C++. Bentuk product domain adalah dasar dari database relational dan pemrograman logic.

Pada kasus biner, product domain pembangun, x, membangun domain A x B dari domain A dan B.

Jika a adalah elemen dari A dan b adalah suatu elemen dari B maka (a,b) adalah suatu elemen dari A x B.
                                A X B = {(a,b)| a in A, b in B}

Product Domain : D0 x … x Dn
Assembly operation: (a0,…,an) in D0 x…x Dn where ai in Di and
D0 x…x Dn = {(a0,…an) | ai in Di}
Disassembly operation: (a0,…,an) | i = ai for 0 <= i <= n

Domain produk disebut “Cartesian” atau “Cross” produk. Dalam Pascal disebut record, sedangkan dalam C disebut suatu struktur.

Sum Domain

Domain-domain yang dibangun oleh pembangun sum domain disebut varian record dalam Pascal dan ADA, Unions dalam Algol-68, Constructor dalam ML.

Dalam kasus biner, sum domain pembangun,+, membangun domain A + B dari domain A dan B.

Jika a adalah elemen dari A dan b adalah elemen dari B maka (A,a) dan (B,b) adalah unsur-unsur A + B

                                A + B = {(A,a) | a in A} union {(B,b) | b in B}

Dimana A dan B disebut tags dan digunakan untuk membedakan pendukung elemen A dan pendukung elemen B.

Sum domain disebut juga disjoint union atau co-product domain. Didalam Pascal disebut record varian dan dalam C disebut suatu struktur.

Sum domain : D0 +…+ Dn
Assembly operations: (Di, di) in D0 +…+ Dn and D0 +…+ Dn = unioni = 0 n {(Di,d) | d in Di}
Disassembly operations: Di(Di,di) = di

Function Domain

Domain-domain yang dibangun oleh pembangun function domain disebut fungsi di dalam Haskell, prosedur di dalam Modula-3 dan proses dalam SR.

Pembangun function domain membentuk domain A à B dari domain A dan B. domain A à B terdiri dari semua fungsi A ke B. A disebut domain dan B disebut co-domain.

(lamda x.e) adalah suatu elemen di A à B dimana e adalah suatu ungkapan yang berisi kejadian dari suatu identifier x, dimana a adalah nilai A merubah kejadian x di dalam e, nilai e[a:x] menghasilkan B.

Function Domain : A à B
Assembly operation: (lamda x.E) in A à B where for all a in A, E[x:a] is a unique value in B
Disassembly operation: (g a) in B, for g in A à b and a in A

Power Domain

Teori set yang menyediakan suatu notasi untuk uraian perhitungan. setL adalah suatu bahasa pemrograman yang didasarkan pada kumpulan (set) dan digunakan untuk menyediakan compiler ADA. Pascal menyediakan operasi set union dan intersection.

Kumpulan dari semua subset dari set adalah power set digambarkan sebagai berikut:

                                PS = { s | s is a subset of S}
Subtypes dan subranges adalah contoh dari pembangun power set.

Beberapa bahasa menyediakan mekanisme untuk dekomposisi suatu jenis ke dalam subtypes. Enumerasi adalah elemen dari subtype yang lainnya adalah subranges.

Power domain membangun suatu domain dari elemen-elemen set. Untuk domain A, pembangun power domain P() menciptakan domain P(A), suatu kumpulan yang anggotanya adalah subset dari A.

Power Domain : PD
Assembly operations: ø in PD, {a} in PD for a in D, and Si union Sj in PD for Si, Sj in PD

Recursively Defined Domain

Recursively defined domain adalah domain yang didefinisikan dari bentuk
                                D : … D …
Definisi disebut Recursively sebab nama domain “recurs” pada sisi kanan dari definisi. Recursively defined domain tergantung pada abstrak karena nama domain adalah suatu bagian penting dari definisi domain.

Lebih dari satu set boleh mencukupi suatu recursively defined. Bagaimanapun, mungkin saja ditunjukkan bahwa suatu recursively defined selalu mempunyai solusi terkecil. Solusi terkecil adalah suatu subset solusi yang lain.

Limit Construction
D0 = null
Di+1 = e[D:Di] for i = 0,…
D = limi à infty Di


Type System

Prosentase besar kesalahan di dalam program adalah dalam kaitan dengan operasi ke object jenis yang bertentangan. Type system telah dikembangkan untuk membantu programmer dalam pendeteksian kesalahan.

Suatu type system adalah satu set aturan untuk mendefinisikan jenis dan menghubungkan suatu type dengan ekspresi dalam bahasa. Suatu type system menolak suatu ekspresi jika tidak menghubungkan suatu type dengan ekspresi. Type checking boleh berjalan pada waktu kompilasi atau waktu berjalan atau kedua-duanya.

Jika kesalahan diharapkan untuk dideteksi pada waktu kompilasi maka suatu static type checking system diperlukan. Satu pendekatan ke static type checking memerlukan programmer untuk menetapkan type masing-masing obyek di dalam program.

Ini mengizinkan compiler untuk melaksanakan type checking sebelum pelaksanaan program dan ini adalah pendekatan yang diambil oleh bahasa seperti Pascal, ADA, C++ dan Java.

Jika pendeteksian kesalahan diharapkan untuk ditunda sampai waktu pelaksanaan, maka dinamic type checking diperlukan.

Di dalam dinamic type checking, masing-masing nilai data berlabel dengan type informasi sehingga lingkungan waktu berjalan dapat memeriksa kecocokan type dan mungkin melaksanakan konversi type jika diperlukan. Bahasa program Lisp, Scheme dan Small-Talk adalah contoh dari bahasa dynamic type.

Type Checking

Suatu bahasa disebut :

·         Untyped jika tidak ada type abstrak yang berlaku
·         Strong type jika menyelenggarakan type abstrak (operasi mungkin diterapkan hanya untuk type object yang sesuai)
·         Type static jika type ekspresi masing-masing dapat ditentukan dari teks program
·         Type dynamic jika penentuan type beberapa ekspresi tergantung pada perilaku waktu berjalan program.
  
Keuntungan dari bahasa Untyped adalah fleksibilitas mereka. Programmer mempunyai kendali penuh atas bagaimana suatu nilai data digunakan tetapi harus mengasumsikan tanggung jawab penuh untuk mendeteksi aplikasi operasi ke type object yang tidak cocok/bertentangan.

Strong type membantu untuk memastikan portabilitas dan keamanan kode dan sering memerlukan programmer dengan tegas menggambarkan type masing-masing object di dalam suatu program. Ini penting juga dalam kumpulan untuk pemilihan operasi yang sesuai dan untuk optimisasi.

Static Type secara luas dikenal sebagai kebutuhan untuk produksi software yang dapat dipercaya dan aman. Type static dipilih ketika efisiensi di dalam waktu pelaksanaan adalah penting dan kompilator pendukung digunakan untuk mendukung rancang bangun software berjalan.

Dynamic type checking menyiratkan bahwa type dicek pada waktu pelaksanaan dan bahwa tiap-tiap nilai berlabel untuk mengidentifikasi typenya dalam rangka membuat type checking mungkin. Hukuman untuk dynamic type checking adalah biaya waktu dan ruang tambahan.

Type Equivalence (Kesamaan Jenis)

Dua type tak dikenal (satuan object) adalah sama jika mereka berisi elemen-elemen yang sama. Yang sama tidak bisa dikatakan type nama mereka yang dulu, maka tidak diperlukan untuk memisah type union. Kapan type dinamai, ada dua pendekatan utama untuk menentukan apakah dua type sama.

Name Equivalence (kesamaan nama)

Di dalam name equivalence dua type adalah sama jika mereka mempunyai nama yang sama. Type diberi nama berbeda diperlakukan berbeda dan tidak bisa secara kebetulan dicampur hanya karena struktur mereka secara kebetulan adalah sama. Name equivalence perlu definisi type untuk global.

Structural Equivalence (kesamaan struktural)

Di dalam structural equivalence, nama type diabaikan dan elemen-elemen type dibandingkan untuk persamaan. Adalah mungkin bahwa dua type logic yang berbeda boleh menjadi kebetulan yang sama dan dapat dicampur.

Definisi type tidak diperlukan untuk menjadi global. Structural equivalence adalah penting di dalam distribusi pemrograman, dimana program terpisah harus mengkomunikasikan type data.

Definisi N.1:

Dua type T, T’ adalah name equivalence iff T dan T’ adalah nama yang sama.

Dua type T, T’ adalah structural equivalence iff T dan T’ memiliki satuan nilai yang sama.

Tiga aturan berikut yang digunakan untuk menentukan jika dua type adalah structural equivalence :

  1. suatu nama type sama secara struktur dengan dirinya sendiri
  2. dua type yang sama secara struktur jika mereka dibentuk dengan menerapkan type pembangun yang sama (secara berulang) ke type structural equivalence.
  3. Setelah suatu deklarasi type, type n = T, nama type n secara structural setara dengan T.



Type Inference (jenis kesimpulan)

Type inference adalah masalah yang umum dalam menjelmakan untyped atau sintaksis type parsial ke dalam terminologi yang baik.

Deklarasi tetap Pascal adalah suatu contoh type inference, typa nama adalah kesimpulan dari type yang tetap. Dalam Pascal untuk pengulangan type index pengulangan dapat ditarik kesimpulan dari type recursively defined dan dengan begitu indeks pengulangan harus suatu variabel lokal dari pengulangan.

Bahasa pemrograman Miranda dan Haskell adalah type static dan menyediakan strong type inference system sehingga seorang programmer tidak perlu mendeklarasikan type apapun. Bahasa juga mengizinkan para programmer untuk menyediakan spesifikasi type eksplisit.

Suatu type checking harus mampu :

  1. menentukan jika suatu program adalah type yang baik dan
  2. jika program adalah type yang baik, tentukan type ekspresi manapun di dalam program

Type Declaration (jenis deklarasi)

Bahkan bahasa yang menyediakan suatu type inference system mengizinkan para programmer untuk membuat deklarasi type eksplisit. Sekalipun compiler dapat dengan tepat menyimpulkan type, pembaca manusia mungkin harus meneliti beberapa halaman kode untuk menentukan type suatu fungsi.

Kesalahan kecil oleh programmer dapat menyebabkan compiler mengeluarkan pemberitahuan kesalahan atau untuk menyimpulkan suatu type yang berbeda dibanding yang diharapkan. Karena pertimbangan ini adalah praktek pemrograman yang baik dengan tegas menyatakan type atas semua kecuali kasus yang paling nyata.

Polymorphism

Suatu type system adalah monomorphic jika masing-masing konstanta, variabel, parameter, dan hasil fungsi mempunyai suatu type unik. Type checking suatu system monomorphic adalah type secara langsung. Tetapi system type monomorphic semata-mata tidak memuaskan untuk penulisan software yang bisa dipakai kembali.

System yang sepenuhnya monomorphic jarang. Kebanyakan bahasa pemrograman berisi beberapa operator atau prosedur yang mengizinkan argumentasi lebih dari satu type.

Definisi N.2 :

Monomorphism : tiap-tiap konstanta, variabel, parameter, fungsi dan operator mempunyai suatu type unik.

Pemuatan lebih mengacu pada penggunaan dari sintaksis pengenal tunggal untuk mengacu pada beberapa operasi berbeda yang dibedakan oleh type dan jumlah argumentasi pada operasi.

Polymorphism : suatu operator, fungsi atau prosedur yang mempunyai suatu keluarga type yang terkait dan berorientasi secara seragam atas argumentasinya dengan mengabaikan type.

Suatu operasi polymorphic adalah yang dapat berlaku untuk type yang berbeda tetapi berhubungan dengan argumentasi.

Suatu type system adalah polymorphic jika abstrak beroperasi secara seragam pada argumentasi suatu keluarga type terkait.

Polymorphism type ini kadang-kadang disebut parametric polymorphism.

Type Completeness (jenis kelengkapan)

Prinsip type ini, tidak ada operasi yang dapat berlaku semaunya, terbatas yang berhubungan dengan nilai type.

Sumber : http://cai.elearning.gunadarma.ac.id/webbasedmedia/semua-download-22.html