BAB IV HASIL PENELITIAN DAN PENERAPAN

dokumen-dokumen yang mirip
BAB I PENDAHULUAN. Sebesta (2002) memaparkan kriteria evaluasi terhadap sebuah bahasa

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

Satuan Acara Perkuliahan (SAP) UNIVERSITAS GUNADARMA

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

2 TIPE DATA DAN VARIABEL

BAB II VARIABEL DAN TIPE DATA

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

BAB II LANDASAN TEORI

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

SUMBER BELAJAR PENUNJANG PLPG

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

Tipe if : If tanpa else (if) If dengan else (if-else) Nested if

IT210 Pemrograman Visual. Ramos Somya

24/09/2017 PERULANGAN

KENDALI PROSES. Untuk mengatur arus program, pemrograman java menyediakan struktur perulangan (looping), kondisional, percabangan, dan lompatan.

Obyektif : KONTROL ALUR PROGRAM

PERTEMUAN 2 ALGORITMA & PEMROGRAMAN

JAVA BASIC PROGRAMMING Joobshet

Modul Tutorial C# 2 DASAR PEMROGRAMAN C# : STATEMENT DAN OPERATOR ENRICO BUDIANTO MICROSOFT INNOVATION CENTER UNIVERSITAS INDONESIA

Badiyanto, S.Kom., M.Kom. PBO java

SILABUS MATA KULIAH PEMROGRAMAN JAVA

Satuan Acara Perkuliahan (SAP) UNIVERSITAS GUNADARMA

Reserved words Reserved words atau keywords merupakan kata-kata spesifik digunakan oleh compiler untuk keperluan pemrograman. Contoh reserved words

Elemen Dasar Dalam Bahasa Java

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

Modul Praktikum 3 Pemograman Berorientasi Objek

Konsep Dasar Pemrograman Berorientasi Obyek I JAVA. Anugrah Kusuma Seno Adi Putra

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

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

PEMAHAMAN DASAR DASAR JAVA

Bahasa Pemrograman 2.

Dasar Pemrograman Java

JAVA FUNDAMENTAL ATURAN PERKULIAHAN SILABUS

Polymorphism. Materi ke-8 Pemrograman Berbasis Objek

PEMROGRAMAN BERORIENTASI OBJEK

MODUL II VARIABEL DAN TIPE DATA

OPERASI PERNYATAAN KONDISI

MODUL A:\VARIABEL, OPERATOR, DAN EKSPRESI

PENYELEKSIAN /PERCABANGAN & PERULANGAN Part II. 5 th week Estu Sinduningrum ST,MT

V. PENGULANGAN. while (kondisi) { Pernyataan ; } Copyright PIK Unsri Agustus 2006

TIPE DATA, VARIABLE, dan OPERATOR DELPHI

Object Oriented Programming (Class, Inheritance, Encapsulation dan Interface)

BAB VII DASAR-DASAR PHP

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

Pemrograman Lanjut Review Class dan Object PTIIK

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

Pemrograman Berorientasi Objek. Beni Suranto, S.T.

BAB V. STATEMEN KONTROL

Satuan Acara Perkuliahan (SAP) UNIVERSITAS GUNADARMA

Pemrograman II (Java)

BAB-2 : TIPE DATA, VARIABEL DAN OPERATOR

BAB 6. Struktur Kontrol

Nama : Julian Chandra W Telp :

Pertemuan 2 Struktur Kontrol Percabangan

BAB V PENYELEKSIAN KONDISI DAN PERULANGAN

Pemrograman Berorientasi. Class dan Obyek 2

Variabel dengan tipe dasar hanya dapat menyimpan sebuah nilai

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

Elemen Bahasa Pemrograman. Aditya Rizki Yudiantika, M.Eng.

KONTRAK PERKULIAHAN TIM KONSORSIUM

Modul Praktikum Bahasa Pemrograman 1

DASAR PEMOGRAMAN JAVA

BAB 6. Struktur Kontrol

Modul 4 Exception, I/O, dan Operasi File

Percabangan dan Perulangan

SATUAN ACARA PERKULIAHAN MATA KULIAH PEMROGRAMAN PASCAL * (TK) KODE / SKS: KK /2 SKS

Struktur Kontrol. Gambar 1: Flowchart Statement If

PERKEMBANGAN PASCAL. Pascal adalah bahasa tingkat tinggi ( high level language) yang orientasinya pada segala tujuan

24/09/2017 PERCABANGAN

PHP (HYPERTEXT PREPROCESSOR)

BAHASA PEMROGRAMAN JAVA

PERTEMUAN II ARRAY, PERCABANGAN, DAN PERULANGAN TUJUAN PRAKTIKUM

Algoritma Pemrograman [BS204]

TUGAS MATA KULIAH TEKNIK KOMPILASI

MODUL 2 STRUKTUR KONTROL

BEKERJA DENGAN JAVA CLASS LIBRARY

PEMROGRAMAN JAVA : PENYELEKSIAN KONDISI DAN PERULANGAN

Percabangan & Perulangan

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

BAB 5 PERULANGAN DAN ARRAY

Pada akhir pembahasan, peserta diharapkan mampu untuk:

SMA SANTO PAULUS PONTIANAK

Universitas gunadarma. pascal. Bab 4- bab 10. Hana Pertiwi S.T

TPI4202 e-tp.ub.ac.id

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

PERTEMUAN 2 PEMOGRAMAN BERORIENTASI OBJEK L/O/G/O

SATUAN ACARA PERKULIAHAN (SAP) Dosen menerangkan materi kuliah. Mahasiswa duduk berkelompok dan saling membantu memahami penjelasan dosen

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

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

Pemrograman Berorientasi Obyek. Dasar Pemrograman Java

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

Praktikum 6 Abstract, Interface, Overloading, Overriding, dan Package

Java Basic. Variabel dan Tipe Data. Lokasi di dalam memori komputer yang digunakan untuk menyimpan suatu informasi (nilai)

Kesalahan Umum dalam Pemrograman C#

Transkripsi:

87 BAB IV HASIL PENELITIAN DAN PENERAPAN 4.1 Karakteristik bahasa pemrograman DOGI Berikut ini akan dijabarkan karakteristik-karakteristik bahasa pemrograman DOGI yang mempengaruhi readability, writability serta reliability. 4.1.1 Simplisitas ortogonalitas Karakteristik bahasa DOGI dalam hal simplisitas dan ortogonalitas dijabarkan sebagai berikut. Baik definisi package, access, class, interface, method maupun code dibatasi dengan begin dan end. Tidak ada pembedaan bagi keenamnya. Tipe data adalah kelas. Hal ini memungkinkan untuk pembentukan struktur yang lebih kompleks, karena sembarang kelas penampung data (seperti string, int, real, bool, dan code) dapat diturunkan untuk keperluan yang lebih spesifik. Metoda dapat diberi nama sebagai identifier maupun simbol operator. Hal ini memudahkan pendefinisian operator, karena secara umum tidak ada perlakuan yang berbeda antara metoda dengan nama identifier maupun simbol operator. Perlakuan yang berbeda hanya terdapat pada penulisan ekspresi berbentuk <metoda> <objek>, yang hanya mengijinkan metoda dengan nama berupa simbol operator.

88 Sebuah operator dasar dapat dikombinasikan dengan operator dasar lainnya membentuk pasangan operator (kecuali kombinasi / dan *, karena telah dipakai untuk komentar). Dengan demikian terbuka kemungkinan untuk mendefinisikan operator-operator baru. Setiap nama objek yang dideklarasikan dalam deklarasi field, argumen, maupun deklarasi lokal merupakan reference pada sebuah objek, sehingga pembuat program tidak perlu membuat perlakuan yang berbeda terhadap setiap nama objek. 4.1.2 Struktur kendali Tidak ada konstrak khusus untuk struktur kendali dalam DOGI, hanya ada metoda if, for, foreach, while dan loop yang merupakan metoda dalam kelas void. Dibantu oleh kelas _if dan _loop, keduanya mampu menghasilkan penulisan serupa dengan penulisan yang umum terdapat pada bahasa pemrograman lainnya. Struktur kendali yang dapat dituliskan dengan kedua metoda tersebut adalah: Seleksi, dengan menggunakan metoda if(bool) yang mengembalikan kelas _if, dapat menghasilkan penulisan if(kondisi) then begin.. end. Perulangan dengan kondisi, menggunakan metoda while(code) yang mengembalikan kelas _loop, dapat menghasilkan penulisan loop([kondisi]) do begin..end.

89 Perulangan dengan counter, menggunakan metoda loop(int) yang mengembalikan kelas _loop, dapat menghasilkan penulisan loop(n) do begin..end. Perulangan ini mengulang sebanyak n kali. Perulangan dengan counter dan batas, menggunakan metoda for(int, int, int) yang mengembalikan kelas _loop, menghasilkan penulisan for(counter, from, to) do begin..end. Perulangan ini mengulang dengan memastikan nilai counter bergerak dari nilai from sampai to. Perulangan dengan array, menggunakan metoda foreach(void, array) yang mengembalikan kelas _loop, menghasilkan penulisan berbentuk foreach(x, array) do begin..end. Perulangan ini membaca setiap elemen array dari elemen pertama hingga terakhir. Elemen yang sedang dibaca direferensikan ke x. 4.1.3 Tipe data dan struktur DOGI menyediakan kelas string untuk menangani string, int untuk menangani integer, real untuk menangani floating-point, bool untuk menangani boolean, dan code untuk menangani kode program. Record dapat dengan mudah dibuat karena kelas sendiri berbentuk record. Untuk menangani array tersedia kelas array.

90 4.1.4 Disain sintaks Kata-kata tercadang (reserved words) dipilih sehingga cukup jelas artinya, seperti package untuk package, class untuk kelas, access untuk akses, method untuk metoda, dan sebagainya. Keharusan pemberian awalan method untuk metoda mempermudah pembaca program dalam membedakan antara metoda dan field. Sedangkan ketidakharusan menuliskan kata kunci field sebelum deklarasi field mempermudah penulis program dalam mendeklarasikannya. Sama halnya dengan metoda dan field, dalam akses terdapat kata kunci visible dan hidden untuk membedakan antara visibilitas protected dengan visibilitas public. Penggunaan begin..end untuk kode dengan banyak statement maupun [.. ] untuk kode dengan satu statement dapat menghindarkan kesalahan yang umum terjadi pada beberapa bahasa pemrograman. Sebagai contoh, kesalahan berikut dalam bahasa Pascal. Program diharapkan mencetak kalimat iterasi ke # pada setiap iterasi. for i:=0 to 3 do write( iterasi ke ); writeln(i); Akan menghasilkan output: iterasi ke iterasi ke iterasi ke iterasi ke 3

91 Hasil yang muncul tidak sesuai dengan yang diharapkan karena penulis program lupa untuk menuliskan kedua statement dalam sebuah blok begin..end. Hal seperti ini tidak akan terjadi dalam DOGI, karena struktur kontrol dalam DOGI mengambil argumen berupa objek code yang harus dituliskan di antara begin..end atau [..]. 4.1.5 Abstraksi Karena DOGI merupakan bahasa pemrograman berorientasi objek, kiranya cukup jelas bahwa DOGI mendukung abstraksi data dan proses dalam sebuah kelas. Terpisahnya akses dengan kelas mempermudah abstraksi suatu kelas, sehingga pembaca program tidak perlu melihat implementasi metodametoda dalam kelas. 4.1.6 Ekspresivitas Dukungan pendefinisian operator sebagai metoda dalam DOGI memungkinkan ekspresi ditulis dalam bentuk yang paling intuitif. Sebagai contoh, ekspresi penjumlahan a dengan b dapat dituliskan a+b. Walaupun demikian, DOGI belum mengenal presedensi operator, sehingga a*b+c akan berarti b dan c dijumlahkan, dan kemudian a dikalikan dengan hasil penjumlahan tersebut. 4.1.7 Type checking Bahasa DOGI tidak mengijinkan pengiriman parameter yang tidak kompatibel. Pengiriman parameter hanya sah jika kelas yang terdaftar dalam signature metoda sama atau superclass dari kelas parameter yang dikirimkan.

92 4.1.8 Aliasing Karena setiap nama objek dalam program DOGI adalah reference terhadap suatu objek, dapat terjadi dua buah nama menunjuk pada sebuah objek yang sama. Penggunaan lebih dari satu nama untuk satu objek tidak akan menimbulkan masalah dangling pointer, karena bahasa DOGI mengharuskan implementasi salah satu dari garbage collection ataupun reference counter bagi kompilernya. 4.2 Perbandingan dengan bahasa pemrograman lainnya Berikut ini akan disajikan perbandingan antara bahasa pemrograman DOGI dengan beberapa bahasa pemrograman lainnya, yaitu: Bahasa C++ Bahasa C# Bahasa Java Bahasa Object Pascal Delphi Setiap bahasa dibandingkan berdasarkan komponen-komponen yang tersedia dan perbedaan antara penulisan komponen-komponen tersebut. Perbandingan dilakukan terhadap DOGI. Perbedaan-perbedaan pada setiap bahasa di atas tidak akan diuraikan di sini. Untuk selanjutnya frasa bahasa yang lain menunjuk pada keempat bahasa pemrograman yang telah disebutkan di atas. Perbandingan dengan masing-masing bahasa akan diuraikan secara singkat hanya untuk perbedaan yang cukup signifikan, dan secara keseluruhan dapat dilihat pada Tabel 4.1.

93 4.2.1 Komponen yang dibandingkan Komponen-komponen yang dibandingkan antara tiap bahasa pemrograman antara lain adalah sesuai dengan yang telah dipaparkan dalam bagian 2.2. Fitur DOGI C++ C# Java Object Pascal Namespace package namespace namespace package unit Tipe data primitif - Y Y Y Y Literal Integer Y** Y Y Y Y Floating-point Y** Y Y Y Y Boolean Y** Y Y Y Y String Y** Y Y Y Y Karakter - Y Y Y Y Null Y** - Y - Y Operator overloading Y(metoda) Y - - - Objek Y Y Y Y Y Access Multiple access visibility private, protected, public private, protected, public private, protected, public, internal, protected internal private, protected, public, friendly, private protected private, protected, public, published Y - - - - Inheritance Y Y Y Y Y Multiple inheritance - Y - - - Interface Y - Y Y Y Virtual method Y(semua) Y Y Y Y Abstract method Y Y Y Y Y Final method - - - Y - Field Y Y Y Y Y Method Y Y Y Y Y Static method/class method Y Y Y Y Y Constructor Y Y Y Y Y Destructor Y Y Y - Y Property Y * - - - Y Indexer - - Y - Y

94 Array Y ** Y(sama Y Y Y dengan pointer) Record Y(kelas) Y Y Y Y Pointer - Y Y (unsafe) - Y Reference Y(semua) Y Y Y hanya untuk object dan interface Garbage management Y hanya untuk objek yang dideklarasikan dalam sebuah scope Y Y hanya untuk string, array, variant dan interface Struktur kendali Lompatan Go to - goto goto - goto Loop control - break, continue break, continue break, continue break, continue Return void.return return return return - Seleksi if..else void.if, _if.then, code.else if..else if..else if..else if..then..else Multiple - switch switch switch case Perulangan Counter Pretest void.for, _loop.do void.while, _loop.do for for for for while while while while Posttest - do..while do..while do..while repeat..until Array Eksepsi void.foreach, _loop.do - foreach - - Pembangkit - throw throw throw raise Handler - try..catch try..catch try..catch try..except Komentar Line comment // // // // // Nested comment /*..*/ /*..*/ /*..*/ /*..*/ {..} Keterangan: Y tersedia; * tidak dikompilasi; ** berupa objek Tabel 4.1 Perbandingan fitur-fitur yang dimiliki bahasa-bahasa pemrograman

95 4.2.2 Perbandingan secara umum dengan C++, C#, Java, dan Object Pascal Tipe data primitif Bahasa DOGI tidak memiliki tipe data primitif. Bahasa lainnya memiliki tipe data primitif untuk menyimpan data integer, floating-point, boolean, karakter dan string. Dalam DOGI terdapat kelas int, real, bool, dan string untuk langsung menangani data-data tersebut, bukan dalam bentuk tipe data primitif. Hal ini, seperti telah disinggung sebelumnya, meningkatkan simplisitas-ortogonalitas. Literal DOGI memiliki literal null, integer, floating-point, boolean, string, array dan code. Literal yang ada dalam bahasa pemrograman lainnya adalah integer, floatingpoint dan string, dan yang tidak ada adalah code. Literal character tidak ada dalam DOGI, sebuah karakter tunggal diperlakukan sebagai string. Setiap literal dalam DOGI dianggap sebagai instansiasi dari kelas yang berasosiasi dengan literal tersebut, sementara dalam bahasa lainnya literal diasosiasikan dengan tipe data primitif. Akses Hal yang berbeda dalam DOGI adalah visibilitas anggota kelas yang dapat bersifat multiple visibility menggunakan akses atau antarmuka kelas. Hal ini tidak terdapat dalam bahasa pemrograman lainnya. Walaupun demikian, kompiler DOGI masih belum dapat secara sempurna membedakan dua akses yang berbeda.

96 Garbage management Reference counter dalam DOGI lebih mudah diimplementasikan dalam pembuatan kompilernya, mengingat bahwa setiap variabel menunjuk pada objek, dan setiap objek memiliki metoda addref dan release yang memang digunakan untuk reference counter. Tidak semua bahasa yang lain mendukung mekanisme untuk menangani dealokasi otomatis secara keseluruhan. Struktur kendali Struktur kendali yang dimiliki DOGI untuk saat ini adalah metoda if dan loop. DOGI samasekali tidak menyediakan struktur kendali go to. Sementara bahasa lainnya memiliki mekanisme exception handling, DOGI belum memiliki konstrak untuk exception handler. 4.2.3 Perbandingan secara khusus dengan C++ Operator overloading Setiap operator dalam bahasa DOGI merupakan metoda. Dalam bahasa C++, operator adalah operator, walaupun dapat di-overload. Garbage management Pada C++ dealokasi tidaklah otomatis untuk objek yang dibuat dengan operator new. Objek harus dihapus secara manual dengan perintah delete.

97 4.2.4 Perbandingan secara khusus dengan bahasa C# Indexer DOGI belum memiliki indexer. Elemen array diambil dari metoda item. C# menyediakan indexer sehingga elemen suatu objek list dapat dituliskan dengan mudah. 4.2.5 Perbandingan secara khusus dengan bahasa Java Tipe data primitif Sementara bahasa DOGI menggunakan kelas secara langsung untuk menangani data, Java memerlukan wrapper object untuk melakukannya. 4.2.6 Perbandingan secara khusus dengan Object Pascal Delphi Namespace Jika dalam DOGI sebuah file boleh mengandung lebih dari satu package, sedangkan satu file kode sumber Delphi hanya untuk satu unit. Properti DOGI direncanakan akan memiliki konstrak untuk properti seperti dalam Object Pascal. Garbage management Delphi hanya menggunakannya untuk dynamic array, string, variant, dan interface, menggunakan reference counter.

98 Struktur kendali DOGI menyediakan metoda return untuk keluar dari suatu metoda, seperti yang terdapat pada bahasa lainnya selain Delphi. Delphi hanya memiliki perintah exit yang tidak selalu dipakai, dan tidak dapat mengembalikan nilai. Nilai pada Delphi dikembalikan melalui variabel Result. Komentar Komentar pada DOGI mengikuti C++, sementara Delphi menggunakan {..} atau (*..*) untuk komentar bersarang. 4.3 Contoh program Sebagai perbandingan program yang ditulis dalam bahasa DOGI dengan program-program dalam bahasa lainnya, akan dibuat sebuah program. Program contoh ini akan dibuat dalam bahasa DOGI, C++, C#, Java, dan Object Pascal. Kode sumber masing-masing program dapat dilihat pada Lampiran C.