Bab VI Value, Domain dan Type

dokumen-dokumen yang mirip
ALGORITMA PEMROGRAMAN 1C PENDAHULUAN KONSEP BAHASA PEMROGRAMAN

Pengenalan Pemrograman

BAHASA PEMROGRAMAN. Merupakan prosedur/tata cara penulisan program.

ANALISIS SEMANTIK. Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom

Implementasi OOP Pada Perangkat Lunak Pemrograman

BAB I KONSEP DASAR PEMROGRAMAN

STRUKTUR PROGRAM. Secara ringkas, struktur suatu program Pascal dapat terdiri dari : 1.Judul Program 2.Blog Program a.

Kuliah Online : TEKKOM [2013/VI]

Satuan Acara Perkuliahan (SAP) UNIVERSITAS GUNADARMA

Web Site :

TIPE DATA, VARIABLE, dan OPERATOR DELPHI

PERTEMUAN 2 ALGORITMA & PEMROGRAMAN

ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

MODUL ARSIKOM POINTER DAN ARRAY. Disusun oleh : Afif Setyo Nugroho ( ) Agus Setyawan ( ) Maulana Akhsan ( )

PENGERTIAN VARIABEL, KONSTANTA DAN TIPE DATA

TUGAS MATA KULIAH TEKNIK KOMPILASI

Algoritma dan Struktur Data

Bahasa Pemrograman :: Pendahuluan

Fungsi Bahasa pemrograman adalah sebagai media untuk menyusun dan memahami serta sebagai alat komunikasi antara pemrogram dengan computer.

BAB I PENDAHULUAN. Sebesta (2002) memaparkan kriteria evaluasi terhadap sebuah bahasa

Dasar Komputer & Pemrograman 2A

ELEMEN DASAR PROGRAM FORTRAN. Kuliah ke-2

MATERI 2 JENIS-JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

Alat bantu (tools) dalam pembuatan parser/ analisis sintaksis. Menggunakan simbol persegi panjang untuk non terminal

BAB IV HASIL PENELITIAN DAN PENERAPAN

Kualitas bahasa pemrograman: Ekspresivitas : secara jelas menggambarkan algoritma yang dibuat oleh programmer

JAVA BASIC PROGRAMMING Joobshet

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

Materi Pelajaran : Algoritma Pemrograman. Siswa memahami tentang dasar dasar Algoritma Pemrograman

BAB 2 TINJAUAN PUSTAKA

Fungsi. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

Himpunan, Dan Fungsi. Ira Prasetyaningrum,M.T

SMA SANTO PAULUS PONTIANAK

Brigida Arie Minartiningtyas, M.Kom

Pertemuan Ke-2 (Teks Algoritma) Rahmady Liyantanto. S1 Teknik Informatika-Unijoyo

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Pointer & Function. Alfa Faridh Suni, S.T., M.T. PTIK

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

11/18/2009. Julio Adisantoso 1. Bahasa Pemrograman Kuliah #1 18 November Tucker & Noonan Chapter 1

UNIVERSITAS BINA NUSANTARA. Program Ganda Teknik Informatika Matematika Skripsi Sarjana Program Ganda Semester Genap 2003/2004

Mengenal Algol. Muhamad Burhanudin. Abstrak. Pendahuluan.

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

ALGORITMA PEMROGRAMAN 1C PEMROGRAMAN FUNGSIONAL

Konsep Bahasa Pemrograman Pertemuan 5

POKOK BAHASAN - 2 PEMROGRAMAN MODULAR

2. Matrix, Relation and Function. Discrete Mathematics 1

VI. FUNGSI. Fungsi Main ( ) Fungsi a ( ) Fungsi b ( ) Fungsi c ( ) Fungsi c1 ( ) Fungsi c2 ( ) Fungsi c3 ( ) Bentuk umumnya :

BAHASA PEMROGRAMAN. Untuk SMK. Kadarisman Tejo Yuwono Totok Sukardiyono Adi Dewanto. : Ratu Amilia Avianti. Perancang Kulit

Kurikulum Qt. { Basic OOP } Chapter 4. Function

Teknik Kompiler 2. oleh: antonius rachmat c, s.kom

Quis. Contoh. Definisi Konsep Part 1,2 Part 3 Part 4. Oleh : Hasan Sanlawi, S.Kom. STMIK Pranata Kampus E : Materi Kuliah STRUKTUR DATA

Tahap pengembangan program

Objek Data, Variabel, dan Konstanta. Konsep Bahasa Pemrograman Materi 4 Yudianto Sujana, M.Kom

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti

Pendahuluan. Komputasi Nuklir. 29 Oktober Komputasi Nuklir Pendahuluan 29 Oktober / 41

Pemrograman Dasar M E T H O D / F U N G S I

Algoritma Pemrograman

JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

LAPORAN PRAKTIKUM RESMI TIPE DATA, KONSTANTA DAN VARIABEL

Proses Kompilasi. Otomata dan Pengantar Kompulasi Pertemuan 3

Dasar Komputer dan Pemrograman. Konsep Tipe Data dan Operator Nama dan Nilai Data

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan

KOM204 : BAHASA PEMROGRAMAN

MK. PEMROGRAMAN SISTEM Semester/SKS : 6/3 COMPILER. Jurusan Sistem Komputer S1 Universitas Gunadarma

Tabel Informasi. Hal di atas dapat dilakukan dengan menambah dan mengambil atribut identifier yang digunakan pada program, melalui tabel informasi.

TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 1

BAB V Abstraksi dan Generalisasi

Algoritma Pemrograman

Algoritma Pemrograman

Pertemuan 2 Bahasa Visual Basic Aplication

1/8/2011. Pertemuan 13-14: Dasar Pemrograman. Sub pokok bahasan. Program Komputer dan Bahasa Pemrograman. Program Komputer dan Bahasa Pemrograman

Definisi. Himpunan (set) adalah kumpulan objek-objek yang berbeda. Objek di dalam himpunan disebut elemen, unsur, atau anggota.

Konsep Dasar Pemrograman Pascal

Aturan Penilaian & Grade Penilaian. Deskripsi. Matematika Diskrit 9/7/2011

Algoritma dan Struktur Data

Himpunan (set) Himpunan (set) adalah kumpulan objekobjek yang berbeda. Objek di dalam himpunan disebut elemen, unsur, atau anggota.

Pengantar Matematika Diskrit

PENGANTAR KOMPUTER & SOFTWARE I REPRESENTASI DATA

Bahan kuliah IF2120 Matematika Diskrit. Himpunan. Oleh: Rinaldi Munir. Program Studi Teknik Informatika STEI - ITB 1

Himpunan (set) Himpunan (set) adalah kumpulan objek-objek yang berbeda. Objek di dalam himpunan disebut elemen, unsur, atau anggota.

Modul Praktikum Bahasa Pemrograman 1

SQL (Structure Query Language) Gentisya Tri Mardiani, S.Kom

PENGENALAN DASAR PEMROGRAMAN

PEMROGRAMAN JAVA. Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita

Bahan kuliah IF2120 Matematika Diskrit. Himpunan. Oleh: Rinaldi Munir. Program Studi Teknik Informatika STEI - ITB 1

Pertemuan Ke-3 (Tipe Data dan Nama) Rahmady Liyantanto. S1 Teknik Informatika-Unijoyo

Contoh soal Struktur Program Pascal (Seleksi tingkat propinsi TOKI 2004)

Kurikulum Qt. Chapter 4 Function. Fungsi

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan.

Polymorphism. Materi ke-8 Pemrograman Berbasis Objek

Bahasa Pemograman Modul XI

Function nama dipisahkan

Himpunan. Nur Hasanah, M.Cs

Hirarki Comsky. Unrestricted. Context Sensitive Context free Regular

Tabel 1. Instruksi untuk menampilkan teks No. Bahasa Pemrograman Instruksi 1. Pascal WRITE ( Bahasa pemrograman itu mudah );

Konsep Bahasa Pemrograman Pertemuan 2

STACK ATAU TUMPUKAN 3.1 DAFTAR LINEAR

Transkripsi:

Bab VI 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 : a. Primitive Domain Sifatnya atomic b. 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 : a. Product domain b. Sum domain c. Function domain d. Power domain e. Recursive domain 1

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 : D 0 x x D n Assembly operation: (a 0,,a n ) in D 0 x x D n where a i in D i and D 0 x x D n = {(a 0, a n ) a i in D i } Disassembly operation: (a 0,,a n ) i = a i 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 : D 0 + + D n Assembly operations: (Di, di) in D 0 + + D n and D 0 + + D n = union i = 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. 2

(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: P S = { 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 D 0 = null D i+1 = e[d:d i ] for i = 0, D = lim i infty D i 3

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 masingmasing 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 4

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 : a. suatu nama type sama secara struktur dengan dirinya sendiri b. dua type yang sama secara struktur jika mereka dibentuk dengan menerapkan type pembangun yang sama (secara berulang) ke type structural equivalence. c. Setelah suatu deklarasi type, type n = T, nama type n secara structural setara dengan T. Type Inference (jenis kesimpulan) 5

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 : a. menentukan jika suatu program adalah type yang baik dan b. 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. 6

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. 7