Iklan

Monday, 14 December 2015

Pemodelan dan Metode numerik menggunakan borland delphi

METODE BAGI DUA (Bisection Method)

Prinsip :
Ide awal metode ini adalah metode table, dimana area dibagi menjadi N bagian. Hanya saja metode biseksi ini membagi range menjadi 2 bagian, dari dua bagian ini dipilih bagian mana yang mengandung dan bagian yang tidak mengandung akar dibuang. Hal ini dilakukan berulang-ulang hingga diperoleh akar persamaan.
Langkah – langkah dalam menyelesaikan Metode Bagi Dua :

Langkah 1 :
Pilih a sebagai batas bawah dan b sebagai batas atas untuk taksiran akar sehingga terjadi perubahan tanda fungsi dalam selang interval. Atau periksa apakah benar bahwa f(a) . f(b) < 0


Taksiran nilai akar baru, c diperoleh dari :

Langkah 2 :



Menentukan daerah yang berisi akar fungsi:
Langkah 3 :
  • Jika z merupakan akar fungsi, maka f(x < z) dan f(x > z) saling berbeda tanda.
  • f(a)*f(c) negatif, berarti di antara a & c ada akar fungsi.
  • f(b)*f(c) positif, berarti di antara b & c tidak ada akar fungsi


Menentukan kapan proses pencarian akar fungsi berhenti:
Langkah 4 :
Proses pencarian akar fungsi dihentikan setelah keakuratan yang diinginkan dicapai, yang dapat diketahui dari kesalahan relatif semu.

Contoh implementasi dalam bahasa pemrograman delphi :
Listng source code program sebagai berikut :

unit Unit3;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, Grids;
type
  TForm3 = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label5: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    StringGrid1: TStringGrid;
    GroupBox2: TGroupBox;
    Label3: TLabel;
    Edit4: TEdit;
    Label7: TLabel;
    Edit5: TEdit;
    GroupBox3: TGroupBox;
    Label4: TLabel;
    Label6: TLabel;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form3: TForm3;
implementation
{$R *.dfm}

procedure TForm3.BitBtn1Click(Sender: TObject);
const g=9.8;v=40;t=10;
var m,a,b,c,fa,fb,fc,fca,err:Real;
    iterasi:byte;
begin
Stringgrid1.RowCount:=1;
Stringgrid1.Cols[0].Add('ITERASI');
Stringgrid1.Cols[1].Add('A');
Stringgrid1.Cols[2].Add('B');
Stringgrid1.Cols[3].Add('C');
Stringgrid1.Cols[4].Add('F(c)');
Stringgrid1.Cols[5].Add('Error');
m:=strtofloat(edit3.Text);
a:=strtofloat(edit1.Text);
b:=strtofloat(edit2.Text);
iterasi:=1;
fa:=0;
fb:=0;
err:=0;
fca:=0;
fc:=0;
repeat
c:=(a+b)/2;
fc:=((g*m)/c)*(1-exp(-((c/m)*t)))-v;
edit4.Text:=floattostr(c);
edit5.Text:=floattostr(fc);
err:=((fc-fca)/fc)*100;
Stringgrid1.RowCount:=Stringgrid1.RowCount+1;
Stringgrid1.Cols[0].Add(floattostr(iterasi));
Stringgrid1.Cols[1].Add(floattostr(a));
Stringgrid1.Cols[2].Add(formatfloat('#0.00',b));
Stringgrid1.Cols[3].Add(formatfloat('#0.00',c));
Stringgrid1.Cols[4].Add(formatfloat('#0.00',fc));
Stringgrid1.Cols[5].Add(formatfloat('#0.00',abs(err))+'%');
if fc>0 then
      b:=c
else
      a:=c;
iterasi:=iterasi+1;
fca:=fc;
until (abs(err)<=0.5) or (abs(err)<=0.1);
end;

procedure TForm3.FormShow(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
edit3.SetFocus;
Stringgrid1.RowCount:=1;
Stringgrid1.Cols[0].Add('ITERASI');
Stringgrid1.Cols[1].Add('A');
Stringgrid1.Cols[2].Add('B');
Stringgrid1.Cols[3].Add('C');
Stringgrid1.Cols[4].Add('F(c)');
Stringgrid1.Cols[5].Add('Error');
edit3.SetFocus;
end;

procedure TForm3.BitBtn2Click(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
Stringgrid1.RowCount:=1;
Stringgrid1.Cols[0].Add('ITERASI');
Stringgrid1.Cols[1].Add('A');
Stringgrid1.Cols[2].Add('B');
Stringgrid1.Cols[3].Add('C');
Stringgrid1.Cols[4].Add('F(c)');
Stringgrid1.Cols[5].Add('Error');
edit3.SetFocus;
end;

procedure TForm3.BitBtn3Click(Sender: TObject);
begin
form3.Close;
end;
end.

Sekian dulu dari saya...semoga bermanfaat !

Tuesday, 24 November 2015

Praktikum pemrograman terstruktur II - Membuat koneksi MySql dengan ODBC

Praktikum ke-VI.pdf - 277 KB
Praktikum ke-VII dan VIII.pdf - 437 KB

HTML (Hyper Text Markup Language)

Definisi HTML
HTML (Hyper Text Markup Languange) adalah bahasa pengkodeaan untuk menghasilkan dokumen-dokumen hypertext untuk digunakan di World Wide Web. HTML terlihat seperti bahasa pengkodean lama, yang di awali dan diakhiri dengan kode-kode html dimana menunjukkan bagaimana keluarannya pada saat di jalankan pada sebuah web browser.

Program Editor HTML
Untuk membuat aplikasi web, dalam hal ini menggunakan HTML, maka kita membutuhkan suatu editor guna mengetikkan,mengedit atau menyimpan dokumen dokumen HTML. Editor untuk memdesain suatu web dibagi 2 yaitu yang bersifat text murni dan yang WYSIWYG (Graphic) Editor untuk text, anatara lain Notepad dan Ultra Edit. Sedang editor WYSIWYG adalah Netscape dan Front Page.

Struktur Dasar HTML
Seperti umumnya dokumen lain, dokumen HTML terdiri dari teks-teks dan bahkan lebih dari dari itu. Dokumen HTML juga dapat mengandung suatu gambar, suara, ataupun video. Satu hal yang membedakan dokumen HTML dengan dokumendokumen lainnya adalah adanya elemen-elemen HTML beserta tag-tagnya. Elemen dan tag HTML berfungsi untuk menformat atau menandai suatu bagian tertentu dari
dokumen HTML dan juga untuk menentukan struktur bagian tersebut dalam dokumen HTML. Elemen dan Tag inilah yang merupakan ciri utama dari suatu dokumen HTML. Secara garis besar, untuk menulisakn sebuah dokumen HTML dibutuhkan kerangka penulisan dengan tag-tag dasar sebagai berikut HTML, HEAD,TITLE dan BODY.
Sebagai contoh berikut ini adalah penulisan HTML minimal yang menggunakan tag tag dasar tersebut

<HTML>
<HEAD>
<TITLE> Judul dokumen </TITLE>
</HEAD>
<BODY>
data-data yang akan di tampilkan
</BODY>
</HTML>



Elemen dan Tag HTML
Dua komponen utama pembentuk dokumen HTML adalah Elemen dan Tag Dengan adanya dua komponen ini, maka kita dapat membuat dokumen HTML dengan baik

Elemen
Dalam dokumen HTML, elemen dibagi menjadi dua kategori utama, yaitu elemen-elemen <HEAD> yang berikan informasi tentang dokumen tersebut, seperti judul dokumen astau hubungannya dengan dokumen lain. Elemen-elemen <BODY> yang menentukan bagaimana isi suatu dokumen ditampilkan oleh browser, seperti paragraf, list (daftra), tabel dan lain-lain. Di dalam elemen HTML terdiri dari tag-tag beserta teks yang ada dalam tag-tag tersebut.

Tag
Pada saat web browser menampilkan suatu web page, browser tersebut akan membaca teks-teks pada dokumen HTML, dan mencari kode khusus yang disebut tag. Tag diapit oleh tanda <>. Tag biasanya merupakan pasangan, yang disebut tag awal dan tag akhir. Tag awal dinyatakan dalam bentuk <nama tag> sedang tag akhir dinyatakan dalam bentuk </nama tag>. Format umum suatu tag berpasangan adalah :
<nama tag> Teks yang akan ditampilkan </nama tag>
Sebagai contoh untuk menampilkan teks dalam format miring digunakan elemen I (italic), seperti contoh di bawah ini:
<i> Teks ini akan tercetak miring bila dilihat di browser </i>
Penulisan program yang baik adalah secara terstruktur. Artinya antara tag pertama dan tag berikutnya tidak saling tumpang tindih.
Kemungkinan kesalahan yang terjadi adalah lupa memberi tag awal atau tag akhir sehingga web page yang dihasilkan akan terlihat lain dari yang diinginkan. Tidak semua tag mengikuti aturan seperti diatas, terdapat beberapa macam bentuk tag yang dikenal oleh HTML, di mana umumnya tag-tag dalam HTML muncul dalam bentuk seperti berikut :

<nama tag>teks</nama tag>
<nama tag>
<nama tag atribut1=argumen atribut2=argumen dst>
<nama tag antribut=argumen>teks</nama tag>


Sebagai contoh :
<Title> Home Page Irawan </Title>
<BR>
<HR Width=10 color=”red”>
<A Href=http://www.andiharmin.ga/>WebSite ANDI HARMIN </a>


Desain HTML
Untuk mempermudah pemahaman diberikan contoh dalam bentuk file HTML
<html>
<head>
<title>Modul Pengantar Ilmu Komputer</title>
</head>
<body>
<h1>Klasifikasi dan Kegunaan Komputer</h1>
Komputer berasal dari kata <i>to compute</i> yaitu menghitung.Jadi
pada awalnya komputer hanya digunakan sebagai alat hitung, namun
perbedaan yang mendasar dengan kalkulator adalah bahwa komputer
mempunyai perkembangan zaman, komputer digunakan manusia untuk
memproses pemecahan masalah.
<hr>
Untuk lebih jelas tentang kegunaan komputer, komputer dibagi dalam
beberapa klasifikasi, yaitu :
<h5>
<ol>
<li><a href="jenis_data.html">Berdasarkan Jenis Data Yang Diolah
</a> </li>
<li><a href="kemampuan.html">Berdasarkan Kemampuan Komputer </a>
</li>
<li><a href="ukuran_fisik.html>Berdasarkan Ukuran Fisik</a></li>
<li><a href="bidang_masalah.html> Berdasarkan Bidang Masalah </a>
</li>
</ol>

</h5>
</body>
</html>


Untuk menampilkan hasilnya, kita buka internet explorer dan buka file html tersebut.



Untuk lebih memahami tentang pemrograman web HTML...silahkan download disini

Code Source SKRIP HTML

tagheader.html - 419 B
tagFont.html - 637 B
tagParagrap.html - 461 B
tagList.html - 818 B
tagImage.html - 129 B
tagTable.html - 473 B

Monday, 23 November 2015

Pemrograman PHP - Membuat koneksi database MySQL

Pengenalan Database, DBMS dan RDBMS

Basis data (atau database) adalah kumpulan informasi yang disimpan di dalam komputer secara sistematik sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis data tersebut (http://id.wikipedia.org/wiki/Database). Database digunakan untuk menyimpan informasi atau data yang terintegrasi dengan baik di dalam komputer. Untuk mengelola database diperlukan suatu perangkat lunak yang disebut DBMS (Database Management System). DBMS merupakan suatu sistem perangkat lunak yang memungkinkan user (pengguna) untuk membuat, memelihara, mengontrol, dan mengakses database secara praktis dan efisien. Dengan DBMS, user akan lebih mudah mengontrol dan memanipulasi data yang ada.
Sedangkan RDBMS atau Relationship Database Management System merupakan salah satu jenis DBMS yang mendukung adanya relationship atau hubungan antar tabel. Di samping RDBMS, terdapat jenis DBMS lain, misalnya Hierarchy DBMS, Object Oriented DBMS, dsb.

Beberapa software atau perangkat lunak DBMS yang sering digunakan dalam aplikasi program antara lain :
  • DB2 - http://www-306.ibm.com/software/data/db2/
  • Microsoft SQL Server - http://www.microsoft.com/sql/
  • Oracle - http://www.oracle.com
  • Sybase - http://www.sybase.com/
  • Interbase - http://www.borland.com/interbase
  • Teradata - http://www.teradata.com/
  • Firebird - http://www.firebirdsql.org/
  • MySQL – http://www.mysql.com
  • PostgreSQL - http://www.postgresql.org/ 
Beberapa Istilah Database
  1. Table, Sebuah tabel merupakan kumpulan data (nilai) yang diorganisasikan ke dalam baris (record) dan kolom (field). Masing-masing kolom memiliki nama yang spesifik dan unik.
  2. Field, Field merupakan kolom dari sebuah table. Field memiliki ukuran type data tertentu yang menentukan bagaimana data nantinya tersimpan.
  3. Record, Field merupakan sebuah kumpulan nilai yang saling terkait.
  4. Key, Key merupakan suatu field yang dapat dijadikan kunci dalam operasi tabel. Dalam konsep database, key memiliki banyak jenis diantaranya Primary Key, Foreign Key, Composite Key, dll.
  5. SQL, SQL atau Structured Query Language merupakan suatu bahasa (language) yang digunakan untuk mengakses database. SQL sering disebut juga sebagai query.
MySQL
MySQL adalah sebuah perangkat lunak sistem manajemen basis data SQL (bahasa Inggris: database management system) atau DBMS yang multithread, multi-user, dengan sekitar 6 juta instalasi di seluruh dunia. MySQL AB membuat MySQL tersedia sebagai perangkat lunak gratis di bawah lisensi GNU General
Public License (GPL), tetapi mereka juga menjual dibawah lisensi komersial untuk kasus-kasus dimana penggunaannya tidak cocok dengan penggunaan GPL.
Tidak seperti PHP atau Apache yang merupakan software yang dikembangkan oleh komunitas umum, dan hak cipta untuk kode sumber dimiliki oleh penulisnya masing-masing, MySQL dimiliki dan disponsori oleh sebuah perusahaan komersial Swedia yaitu MySQL AB. MySQL AB memegang penuh hak cipta hampir atas semua kode sumbernya. Kedua orang Swedia dan satu orang Finlandia yang mendirikan MySQL AB adalah: David Axmark, Allan Larsson, dan Michael "Monty" Widenius. MySQL dapat didownload di situs resminya, http://www.mysql.com.

Fitur-fitur MySQL antara lain :
  1. Relational Database System. Seperti halnya software database lain yang ada di pasaran, MySQL termasuk RDBMS.
  2. Arsitektur Client-Server. MySQL memiliki arsitektur client-server dimana server database MySQL terinstal di server. Client MySQL dapat berada dikomputer yang sama dengan server, dan dapat juga di komputer lain yang berkomunikasi dengan server melalui jaringan bahkan internet.
  3. Mengenal perintah SQL standar. SQL (Structured Query Language) merupakan suatu bahasa standar yang berlaku di hampir semua software database. MySQL mendukung SQL versi SQL:2003.
  4. Mendukung Sub Select. Mulai versi 4.1 MySQL telah mendukung select dalam select (sub select).
  5. Mendukung Views. MySQL mendukung views sejak versi 5.0
  6. Mendukung Stored Prosedured (SP). MySQL mendukung SP sejak versi 5.0
  7. Mendukung Triggers. MySQL mendukung trigger pada versi 5.0 namun masih terbatas. Pengembang MySQL berjanji akan meningkatkan kemampuan trigger pada versi 5.1.
  8. Mendukung replication.
  9. Mendukung transaksi.
  10. Mendukung foreign key.
  11. Tersedia fungsi GIS.
    Free (bebas didownload)
  12. Stabil dan tangguh
  13. Fleksibel dengan berbagai pemrograman
  14. Security yang baik
  15. Dukungan dari banyak komunitas
  16. Perkembangan software yang cukup cepat. 
Langka-langkah membuat koneksi database MySQL menggunakan skrip PHP, yaitu :
Langkah 1:
Membuat Database
Sintaks umum SQL untuk membuat suatu database adalah sebagai berikut :

CREATE DATABASE [IF NOT EXISTS] nama_database;

Bentuk perintah di atas akan membuat sebuah database baru dengan nama nama_database. Aturan penamaan sebuah database sama seperti aturan penamaan sebuah variabel, dimana secara umum nama database boleh terdiri dari huruf, angka dan under-score (_). Jika database yang akan dibuat sudah ada, maka akan muncul pesan error. Namun jika ingin otomatis menghapus database yang lama jika sudah ada, aktifkan option IF NOT EXISTS.
Berikut ini contoh perintah untuk membuat database baru dengan nama “bukutamu” :
CREATE DATABASE bukutamu;
Jika query di atas berhasil dieksekusi dan database berhasil dibuat, maka akan ditampilkan pesan kurang lebih sebagai berikut :
Query OK, 1 row affected (0.02 sec)
Membuat Tabel Baru
Bentuk umum SQL untuk membuat suatu table secara sederhana sebagai berikut :
CREATE TABLE nama_tabel (
field1 tipe(panjang),
field2 tipe(panjang),
...
fieldn tipe(panjang),
PRIMARY KEY (field_key)
);

Bentuk umum di atas merupakan bentuk umum pembuatan tabel yang sudah disederhanakan. Penamaan tabel dan field memiliki aturan yang sama dengan penamaan database. Sebagai contoh, kita akan membuat tabel baru dengan struktur sebagai berikut :
Perintah MySQL untuk membuat tabel seperti diatas adalah:
create table anggota(
nomor int(6) not null primary key,
nama char(40) not null,
email char(255) not null,
alamat char(80) not null,
kota char(20) not null
);


Sedangkan data yang akan diisikan dalam tabel anggota adalah sebagai berikut:

Langkah 1:
MENGHUBUNGKAN PHP DENGAN MySQL
Agar script PHP yang kita buat dapat berhubungan dengan database dari MySQL dapat menggunakan fungsi berikut ini:
Bila anda menggunakan editor notepad++ ketik skrip php seperti tampak dibawah ini :
<?php
$host="localhost";
$user="root";
$pass="";
$dbnm="bukutamu";
$conn = mysql_connect ($host, $user, $pass);
if ($conn) {
    $buka = mysql_select_db ($dbnm);
    if (!$buka)   {
            die ("Database tidak dapat dibuka");
        }           
   }
else {
die ("Server MySQL tidak terhubung");
}
?>

Simpan dengan nama file : Koneksi.php (jangan lupa simpan di direktori : C:\xampp\htdocs\namafolder).

jalankan browser seperti contohnya Mozila firefox kemudian di address bar ketik perintah seperti berikut ini :

localhost/namafolder/koneksi.php

Jika browser tidak menampilkan pesan error (halaman browser tidak menampilkan apa-apa) itu bisa dijadikan indikator bahwa database kita sudah terkoneksi...OK !

Tutor By : Achmad Solichin (http://achmatim.net, achmatim@gmail.com)
 

selamat mencoba...!

TUTORIAL KONEKSI JAVA DENGAN DATABASE MYSQL DENGAN TOOL NETBEANS

Koneksi ke database pada Java ditangani oleh JDBC (java database connectivity).
JDBC merupakan salah satu API(Application Programming Interface) Java yang secara khusus ditujukan untuk menangani koneksi ke database. Dengan JDBC, kita memungkinkan untuk menghubungkan database MySQL, oracle , access dan database lain ke java. Pada tutorial ini akan dibahas cara menghubungkan JAVA dengan MySQL. Yang dibutuhkan :
1. Netbeans
2. J2SE(Java)
3. Apache/Lampp (yang didalamnya terdapat database MySQL)
Langkah pertama : jika kita menggunakan netbeans, buatlah project baru java standar application, atau jika sudah ada projectnya, kita tinggal melakukan import library MySql JDBC Driver, yaitu library yang berisi API(application programming interface) untuk koneksi java ke MySql.
Caranya :
1. Klik kanan pada folder library pada project anda. Lihat gambar :
2. Pilih “add library”, dan kemudian akan muncul banyak pilihan library, dan cari “MySQL JDBC Driver”. Lalu klik add Library.
Langkah kedua : buatlah sebuah kelas yang bertugas untuk membuat/ mengatur/ mengkondisikan/ mengeksekusi koneksi dari program Java anda ke MySql. Kenapa perlu digunakan kelas baru???. Agar kita tidak perlu mengkoding ulang jika kita membutuhkan koneksi database lebih dari 1 kali. Dengan adanya kelas koneksi, kita tinggal menginstansiasi objek dari kelas koneksi tersebut,sehingga tidak terjadi pemborosan kode dan program pun menjadi lebih optimal efisien dan lebih rapi.
Dalam contoh program, kelas yang bertugas untuk menangani koneksi database MySql diberi nama dengan kelas koneksi.java 

Source Code koneksi.java:
package formdbmysql;
import com.mysql.jdbc.ResultSetMetaData;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
/**
*
* @author pattimura
*/
public class koneksi {
private Statement data = null;
private Connection koneksi = null;
private String Url="jdbc:Mysql://localhost/"; //host database anda
private String DbName="tes_java"; //nama database Anda
private String DBUser="root"; //username dari database, jika menggunakan default
xampp maka username = root
private String DBPassword="root";//password db , default xampp tidak ada = "";
public koneksi(){
try {
//setting driver yang digunakan untuk terhubung ke database
Class.forName("com.mysql.jdbc.Driver");
//membuat koneksi dengan parameter url +nama database, username dan
password
koneksi = DriverManager.getConnection(Url+DbName, DBUser, DBPassword);
//membuat statement yang akan digunakan untuk mengeksekusi query dari
aplikasi
data = this.koneksi.createStatement();
} catch (Throwable ex) {
System.out.println("error : "+ex);
System.exit(1);
}
}
public Connection getConnection(){
return koneksi;
}
public Statement getStatement(){
return data;
}
}

Langkah ketiga : Buatkan 1 file utama menggunakan jFrame dengan nama Utama.java
Source Code :

package formdbmysql;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
/**
*
* @author pattimura
*/
public class Utama extends javax.swing.JFrame {
/** Creates new form Utama */
public Utama() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jButton4 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("Stambuk :");
jLabel1.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
jLabel2.setText("Nama :");
jLabel2.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
jLabel3.setText("Komentar :");
jLabel3.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);
jButton1.setText("Input");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("Update");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton3.setText("Delete");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null}
},
new String [] {
"Stambuk", "Nama", "Komentar"
}
));
jScrollPane2.setViewportView(jTable1);
jButton4.setText("Show");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup()
.addContainerGap(13, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignm
ent.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Al
ignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addGap(15, 15, 15)
.addGroup(layout.createParallelGroup(javax.swing.GroupL
ayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.Compon
entPlacement.RELATED)
.addComponent(jScrollPane1))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swin
g.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jLabel2))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swin
g.GroupLayout.Alignment.LEADING, false)
.addComponent(jTextField2)
.addComponent(jTextField1,
javax.swing.GroupLayout.PREFERRED_SIZE, 224,
javax.swing.GroupLayout.PREFERRED_SIZE)))))
.addGroup(layout.createSequentialGroup()
.addGap(33, 33, 33)
.addComponent(jButton1,
javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jButton2,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addGap(18, 18, 18)
.addComponent(jButton3,
javax.swing.GroupLayout.PREFERRED_SIZE, 82,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addComponent(jScrollPane2,
javax.swing.GroupLayout.PREFERRED_SIZE, 373,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
.addGroup(layout.createSequentialGroup()
.addGap(177, 177, 177)
.addComponent(jButton4)
.addContainerGap(178, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(25, 25, 25)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignm
ent.TRAILING)
.addComponent(jTextField1,
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED
)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignm
ent.TRAILING)
.addComponent(jLabel2)
.addComponent(jTextField2,
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignm
ent.LEADING)
.addComponent(jLabel3)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignm
ent.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton2))
.addComponent(jButton3))
.addGap(18, 18, 18)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE,
98, Short.MAX_VALUE)
.addGap(18, 18, 18)
.addComponent(jButton4)
.addGap(19, 19, 19))
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
this.insert(this.jTextField1.getText(), this.jTextField2.getText(),
this.jTextArea1.getText());
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
this.update(this.jTextField1.getText(), this.jTextField2.getText(),
this.jTextArea1.getText());
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
this.delete(this.jTextField1.getText());
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
this.setTableFromDB();
}
private void insert(String nim, String nama, String komentar){
// buat objek koneksi yang menangani koneksi ke database
koneksi conect = new koneksi();
// tentukan query yang akan dijalankan pada mySql/database
// kita akan memasukkan data ke dalam tabel mahasiswa
String query = "insert into mahasiswa (nim,nama,komentar) values
('"+nim+"','"+nama+"','"+komentar+"')";
//eksekusi query tersebut dengan cara :
try {
conect.getStatement().executeUpdate(query); //eksekusi
JOptionPane.showMessageDialog(this, "insert berhasil");//pemberitahuan
jika berhasil
} catch (SQLException ex) {
//jika ada kesalahan, maka akan ada pesan error dari sintaks dibawah
ini.
Logger.getLogger(Utama.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(this, "insert gagal");//pemberitahuan
jika gagal
}
}
private void update(String nim, String nama, String komentar){
// buat objek koneksi yang menangani koneksi ke database
koneksi conect = new koneksi();
// tentukan query update yang akan dijalankan pada mySql/database
// dalam queri ini kita akan mengganti nama dan komentar dari data yang
terkait dengan nim.
String query = "update mahasiswa set nama='"+nama+"', komentar=
'"+komentar+"' where nim='"+nim+"' ";
//eksekusi query tersebut dengan cara :
try {
conect.getStatement().executeUpdate(query); //eksekusi
JOptionPane.showMessageDialog(this, "update berhasil");//pemberitahuan
jika berhasil
} catch (SQLException ex) {
//jika ada kesalahan, maka akan ada pesan error dari sintaks dibawah
ini.
Logger.getLogger(Utama.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(this, "update gagal");//pemberitahuan
jika gagal
}
}
private void delete(String nim){
// buat objek koneksi yang menangani koneksi ke database
koneksi conect = new koneksi();
// tentukan query update yang akan dijalankan pada mySql/database
// dalam queri ini kita akan menghapus data yang terkait dengan nim
String query = "delete from mahasiswa where nim='"+nim+"' ";
//eksekusi query tersebut dengan cara :
try {
conect.getStatement().executeUpdate(query); //eksekusi
JOptionPane.showMessageDialog(this, "data berhasil
dihapus");//pemberitahuan jika berhasil
} catch (SQLException ex) {
//jika ada kesalahan, maka akan ada pesan error dari sintaks dibawah
ini.
Logger.getLogger(Utama.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(this, "data gagal
dihapus");//pemberitahuan jika gagal
}
}
private void setTableFromDB(){
koneksi conect = new koneksi();// objek koneksi utk koneksi ke DB
ResultSet data = null; //
int jumBaris=0; // variable untuk menentukan jumlah baris matriks nantinya.
//query yang akan ditampilkan, misalkan kita ingin menampilkan data
mahasiswa dari DB ke table
String query="select * from mahasiswa";
try {
data = conect.getStatement().executeQuery(query); // query dijalankan
while(data.next()){
jumBaris++;
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null,"Error pada jumlah baris :
"+ex.getMessage());
}
//jika jumlah baris telah didapatkan maka buat array 2 dimensi untuk
menyimpan data sementara
String isi[][]= new String[jumBaris][3]; //jumbaris, dan jumlah kolom =
3{nim, nama, komentar}
// masukkan data dari ResultStatement kedalam matriks
int i=0;//just for loop
try {
data = conect.getStatement().executeQuery(query);//eksekusi kembali
query
while (data.next()) {
System.out.println("disiko");
isi[i][0] = "" + data.getString("nim"); // ini sintaks untk
mengambil isinya, "nim" adalah nama kolom dalam DB
System.out.println("nim = "+data.getString("nim"));
isi[i][1] = "" + data.getString("nama");
isi[i][2] = "" + data.getString("komentar");
i++;
}
} catch (SQLException ex) {
Logger.getLogger(Utama.class.getName()).log(Level.SEVERE, null, ex);
}
String NamaKolom[] ={"Nim","Nama","Komentar"};//nama kolom yang nantinya
akan ada pada tabel
DefaultTableModel model= new DefaultTableModel(isi,NamaKolom){};
//selanjutnya adalah mlakukan pengesetan pada tabel
jTable1.setModel(model);
//done!!!
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Utama().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTable jTable1;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
// End of variables declaration
}

Langkah keempat : Buat database dengan nama tes_java dan tabel mahasiswa.
Langkah kelima :
Run file Utama.java




Selamat mencoba...!




Modul Materi pemrograman java Netbean : Koneksi Java dengan Mysql.pdf - 67 KB

Thursday, 19 November 2015

KRIPTOGRAFI

DEFENISI
Cryptography adalah suatu ilmu ataupun seni mengamankan pesan, dan dilakukan oleh cryptographer. Cryptanalysis adalah suatu ilmu dan seni membuka (breaking) ciphertext dan orang yang melakukannya disebut cryptanalyst.

ELEMEN




CRYPTOSYSTEM
Cryptographic system atau cryptosystem adalah suatu fasilitas untuk mengkonversikan plaintext ke ciphertext dan sebaliknya. Dalam sistem ini, seperangkat parameter yang menentukan transformasi pencipheran tertentu disebut suatu set kunci. Proses enkripsi dan dekripsi diatur oleh satu atau beberapa kunci kriptografi.
1. Kriptografi dapat memenuhi kebutuhan umum suatu transaksi:
  • Kerahasiaan (confidentiality) dijamin dengan melakukan enkripsi (penyandian).
  • Keutuhan (integrity) atas data-data pembayaran dilakukan dengan fungsi hash satu arah.
  • Jaminan atas identitas dan keabsahan (authenticity) pihak-pihak yang melakukan transaksi dilakukan dengan menggunakan password atau sertifikat digital. Sedangkan keotentikan data transaksi dapat dilakukan dengan tanda tangan digital.
  • Transaksi dapat dijadikan barang bukti yang tidak bisa disangkal (non-repudiation) dengan memanfaatkan tanda tangan digital dan sertifikat digital.
2. Karakteristik cryptosytem yang baik sebagai berikut :
  • Keamanan sistem terletak pada kerahasiaan kunci dan bukan pada kerahasiaan algoritma yang digunakan.
  • Cryptosystem yang baik memiliki ruang kunci (keyspace) yang besar.
  • Cryptosystem yang baik akan menghasilkan ciphertext yang terlihat acak dalam seluruh tes statistik yang dilakukan terhadapnya.
  • Cryptosystem yang baik mampu menahan seluruh serangan yang telah dikenal sebelumnya
3. MACAM CRYPTOSYSTEM
A. Symmetric Cryptosystem
Dalam symmetric cryptosystem ini, kunci yang digunakan untuk proses enkripsi dan dekripsi pada prinsipnya identik, tetapi satu buah kunci dapat pula diturunkan dari kunci yang lainnya. Kunci-kunci ini harus dirahasiakan. Oleh karena itulah sistem ini sering disebut sebagai secret-key ciphersystem. Jumlah kunci yang dibutuhkan umumnya adalah :



dengan n menyatakan banyaknya pengguna.
Contoh dari sistem ini adalah Data Encryption Standard (DES), Blowfish, IDEA.

B. Assymmetric Cryptosystem
Dalam assymmetric cryptosystem ini digunakan dua buah kunci. Satu kunci yang disebut kunci publik (public key) dapat dipublikasikan, sedang kunci yang lain yang disebut kunci privat (private key) harus dirahasiakan. Proses menggunakan sistem ini dapat diterangkan secara sederhana sebagai berikut : bila A ingin mengirimkan pesan kepada B, A dapat menyandikan pesannya dengan menggunakan kunci publik B, dan bila B ingin membaca surat tersebut, ia perlu mendekripsikan surat itu dengan kunci privatnya. Dengan demikian kedua belah pihak dapat menjamin asal surat serta keaslian surat tersebut, karena adanya mekanisme ini. Contoh sistem ini antara lain RSA Scheme dan Merkle-Hellman Scheme.

4. PROTOKOL CRYPTOSYSTEM
Cryptographic protocol adalah suatu protokol yang menggunakan kriptografi. Protokol ini melibatkan sejumlah algoritma kriptografi, namun secara umum tujuan protokol lebih dari sekedar kerahasiaan. Pihak-pihak yang berpartisipasi mungkin saja ingin membagi sebagian rahasianya untuk menghitung sebuah nilai, menghasilkan urutan random, atau pun menandatangani kontrak secara bersamaan.
Penggunaan kriptografi dalam sebuah protokol terutama ditujukan untuk mencegah atau pun mendeteksi adanya eavesdropping dan cheating.

5. JENIS PENYERANGAN PADA PROTOKOL
  • Ciphertext-only attack. Dalam penyerangan ini, seorang cryptanalyst memiliki ciphertext dari sejumlah pesan yang seluruhnya telah dienkripsi menggunakan algoritma yang sama.
  • Known-plaintext attack. Dalam tipe penyerangan ini, cryptanalyst memiliki akses tidak hanya ke ciphertext sejumlah pesan, namun ia juga memiliki plaintext pesan-pesan tersebut.
  • Chosen-plaintext attack. Pada penyerangan ini, cryptanalyst tidak hanya memiliki akses atas ciphertext dan plaintext untuk beberapa pesan, tetapi ia juga dapat memilih plaintext yang dienkripsi. Adaptive-chosen-plaintext attack. Penyerangan tipe ini merupakan suatu kasus khusus chosen-plaintext attack. Cryptanalyst tidak hanya dapat memilih plaintext yang dienkripsi, ia pun memiliki kemampuan untuk memodifikasi pilihan berdasarkan hasil enkripsi sebelumnya. Dalam chosen-plaintext attack, cryptanalyst mungkin hanya dapat memiliki plaintext dalam suatu blok besar untuk dienkripsi; dalam adaptive-chosen-plaintext attack ini ia dapat memilih blok plaintext yang lebih kecil dan kemudian memilih yang lain berdasarkan hasil yang pertama, proses ini dapat dilakukannya terus menerus hingga ia dapat memperoleh seluruh informasi.
  • Chosen-ciphertext attack. Pada tipe ini, cryptanalyst dapat memilih ciphertext yang berbeda untuk didekripsi dan memiliki akses atas plaintext yang didekripsi.
  • Chosen-key attack. Cryptanalyst pada tipe penyerangan ini memiliki pengetahuan tentang hubungan antara kunci-kunci yang berbeda.
  • Rubber-hose cryptanalysis. Pada tipe penyerangan ini, cryptanalyst mengancam, memeras, atau bahkan memaksa seseorang hingga mereka memberikan kuncinya.
6. JENIS PENYERANGAN PADA JALUR KOMUNIKASI
  • Sniffing: secara harafiah berarti mengendus, tentunya dalam hal ini yang diendus adalah pesan (baik yang belum ataupun sudah dienkripsi) dalam suatu saluran komunikasi. Hal ini umum terjadi pada saluran publik yang tidak aman. Sang pengendus dapat merekam pembicaraan yang terjadi.
  • Replay attack [DHMM 96]: Jika seseorang bisa merekam pesan-pesan handshake (persiapan komunikasi), ia mungkin dapat mengulang pesan-pesan yang telah direkamnya untuk menipu salah satu pihak.
  • Spoofing [DHMM 96]: Penyerang – misalnya Maman – bisa menyamar menjadi Anto. Semua orang dibuat percaya bahwa Maman adalah Anto. Penyerang berusaha meyakinkan pihak-pihak lain bahwa tak ada salah dengan komunikasi yang dilakukan, padahal komunikasi itu dilakukan dengan sang penipu/penyerang. Contohnya jika orang memasukkan PIN ke dalam mesin ATM palsu – yang benar-benar dibuat seperti ATM asli – tentu sang penipu bisa mendapatkan PIN-nya dan copy pita magentik kartu ATM milik sang nasabah. Pihak bank tidak tahu bahwa telah terjadi kejahatan.
  • Man-in-the-middle [Schn 96]: Jika spoofing terkadang hanya menipu satu pihak, maka dalam skenario ini, saat Anto hendak berkomunikasi dengan Badu, Maman di mata Anto seolah-olah adalah Badu, dan Maman dapat pula menipu Badu sehingga Maman seolah-olah adalah Anto. Maman dapat berkuasa penuh atas jalur komunikas ini, dan bisa membuat berita fitnah.
METODE CRYPTOGRAFI
1. METODE KUNO
a. 475 S.M. bangsa Sparta, suatu bangsa militer pada jaman Yunani kuno, menggunakan teknik kriptografi yang disebut scytale, untuk kepentingan perang. Scytale terbuat dari tongkat dengan papyrus yang mengelilinginya secara spiral.
Kunci dari scytale adalah diameter tongkat yang digunakan oleh pengirim harus sama dengan diameter tongkat yang dimiliki oleh penerima pesan, sehingga pesan yang disembunyikan dalam papyrus dapat dibaca dan dimengerti oleh penerima.

b. Julius Caesar, seorang kaisar terkenal Romawi yang menaklukkan banyak bangsa di Eropa dan Timur Tengah juga menggunakan suatu teknik kriptografi yang sekarang disebut Caesar cipher untuk berkorespondensi sekitar tahun 60 S.M. Teknik yang digunakan oleh Sang Caesar adalah mensubstitusikan alfabet secara beraturan, yaitu oleh alfabet ketiga yang mengikutinya, misalnya, alfabet ‘’A" digantikan oleh "D", "B" oleh "E", dan seterusnya. Dengan aturan yang dibuat oleh Julius Caesar tersebut, pesan sebenarnya adalah "Penjarakan panglima divisi ke tujuh segera".

Tutor By : Mohammad Iqbal, Skom, MMSi - mohiqbal@softhome.net
 


Link Materinya :

kriptografi.pdf - 1.6 MB
kriptografi_modul.pdf - 752 KB
teori-bilangan.pdf - 68 KB

Pemrograman JAVA dengan Netbean IDE

1. Sekilas tentang Netbean IDE
The NetBeans IDE adalah sebuah lingkungan pengembangan - sebuah tools untuk programmer menulis, mengompilasi, mencari kesalahan dan menyebarkan program. Netbeans IDE ditulis dalam Java - namun dapat mendukung bahasa pemrograman lain. Terdapat banyak modul untuk memperluas Netbeans IDE. Netbeans IDE adalah sebuah produk bebas dengan tanpa batasan bagaimana digunakan. (dikutip dari : www.netbean.org ).
NetBeans mengacu pada dua hal, yakni platform untuk pengembangan aplikasi desktop java, dan sebuah Integrated Development Environment (IDE) yang dibangun menggunakan platform NetBeans. Platform NetBeans memungkinkan aplikasi dibangun dari sekumpulan komponen perangkat lunak moduler yang disebut ‘modul’. Sebuah modul adalah suatu arsip Java (Java archive) yang memuat kelas-kelas Java untuk berinteraksi dengan NetBeans Open API dan file manifestasi yang mengidentifikasinya sebagai modul. Aplikasi yang dibangun dengan modul-modul dapat dikembangkan dengan menambahkan modul-modul baru. Karena modul dapat dikembangkan secara independen, aplikasi berbasis platform NetBeans dapat dengan mudah dikembangkan oleh pihak ketiga secara mudah dan powerful.
Pengembangan NetBeans diawali dari Xelfi, sebuah proyek mahasiswa tahun 1997 dibawah bimbingan Fakultas Matematika dan Fisika Universitas Charles, Praha. Sebuah perusahaan kemudian dibentuk untuk proyek tersebut dan menghasilkan versi komersial NetBeans IDE hingga kemudian dibeli oleh Sun Microsystem pada tahun 1999. Sun kemudian menjadikan NetBeans open source pada bulan Juni tahun 2000. Sejak itu komunitas NetBeans terus berkembang.

2. Pengenalan IDE (Integrated Development Environtment) Netbean
Lingkungan Pengembangan yang terintegrasi pada netbean IDE, memudahkan pengguna untuk membuat beragam aplikasi dengan mudah.
Keterangan Gambar :
1. Menu Bar
2. Toolbar
3. Project Explorer
4. Daftar Komponen yang digunakan
5. Jendela Utama
6. Kontrol Komponen
7. Jendela Properties
8. Jendela keluaran (debugging)

Membuat Aplikasi dengan Netbean
Untuk membuat program/aplikasi dengan Netbean, langkah-langkahnya sbb:
1. Dari menu File, pilih dan Klik New Project…

Akan ditampilkan jendela New Project seperti Gambar dibawah ini :
2. Selanjutnya, pada bagian Categories pilih Java (pilihan untuk membuat aplikasi desktop). Kemudian pada bagian Projects pilih Java Application. Untuk membuat program desktop yang lengkap dengan menu bar pilihlah Java Desktop Application. Setelah terpilih selanjutnya klik Next untuk melanjutkan.
3. Pada langkah kedua (Gambar 4), tentukan nama project-nya pada bagian Project Name serta lokasi penyimpanan file (default-nya disimpan pada folder yang sama dengan nama project-nya). Untuk contoh program/aplikasi ini, kita akan membuat program untuk melakukan konversi suhu dari Celcius (C) ke Fahrenheit (F), dengan rumus konversi sbb:
F = C * 1.8 + 32
Hilangkan tanda ceklis pada Create Main Class (karena kita tidak membuat class utama). Pada bagian set as Main Project, ceklislah untuk menjadikan project utama, sehingga setiap melakukan kompilasi menuju project yang sedang dibuat. Setelah disesuaikan, klik Finish.
4. Setelah langkah kedua dilakukan, selanjutnya tampilan pada Netbean akan terlihat seperti Gambar 5. Sampai dengan ini, project telah dibuat tetapi kita belum menempatkan komponen apapun didalamya, untuk menempatkan komponen-komponen java terlebih dahulu diperlukan komponen utama sebagai landasan (penempatan) komponen lain yaitu :
JFrame Form.
Untuk menempatkan JFrame kedalam project, lakukan Klik Kanan pada subfolder Source Package (dibawah project) pilih New, kemudian pilih dan klik JFrame Form.
6. Pilihan penambahan JFrame diatas, akan menampilkan jendela New JFrame Form sebagai berikut;
7. Pada jendela New JFrame diatas, lakukan perubahan nama JFrame jika diperlukan. Untuk latihan kali ini, biarkan saja Class Name seperti itu. Klik Finish.
8. Untuk menambahkan komponen lainnya kedalam JFrame, klik komponen yang ingin digunakan kemudian klik pada JFrame (sesuaikan posisinya)




Tutor by : Asep Ramdhani Mahbub (http://www.arm.web.id/)...
 
Selengkapnya tentang materi ini silahkan download disini

 

MIDTEST Pemrograman Terstruktur II

midtest pemrograman terstruktur.pdf - 188 KB

Tuesday, 17 November 2015

Konsep dasar pemrograman android

Pendahuluan

Perkembangan  aplikasi  Android  saat  ini  berkembang  dengan pesat. Bermacam-macam aplikasi Android gratis ataupun  bayar  dapat kita install di handphone  (smartphone) berbasis sistem  operasi  Android. Banyaknya kebutuhan  aplikasi-aplikasi  berbasis  Android di  masa sekarang dan masa yang akan datang membuka peluang yang sangat menjanjikan bagi siapa saja yang  mau  untuk menjadi pembuat  atau pengembang  aplikasi  Android. Namun  kebanyakan  dari pemilik smartphone saat  ini  hanya  sebagai pengguna aplikasinya  saja.  Sudah  saatnya  sekarang ini  kita  Putra  Putri  Bangsa  Indonesia    membuat  atau  pengembangkan  aplikasi  Android    dan menunjuk  ke  pada  dunia  bahwa  kita  mampu  bersaing  secara global,  salah  satunya  dengan membuat  atau mengembangkan  aplikasi  Android,  atau    minimal  aplikasinya  bisa  digunakan sendiri. Oleh  karena  itu,  tutorial ini  dibuat  untuk  khusunya  bagi  siapa  saja  yang  ingin  menjadi pembuat atau pengembang aplikasi Android dan umumnya bagi yang ingin menambah wawasan tentang Android.
Untuk  memulai  pemrograman  Android,  pengetahuan  dan  pemahaman akan  dasar dari pemrograman   Android tersebut   sangatlah   penting.   Pemahaman   yang   dimaksud seperti memahami   mekanisme   kerja komponen dalam   sistem   operasi   Android   dan   bagaimana menggunakan komponen secara  efektif  dalam  membuat  aplikasi  Android tersebut. Tanpa pengetahuan dan pemahaman tersebut kita ibarat kapal yang berlayar tanpa membawa peta. Pada  Tutorial  ini akan  membahas  tentang struktur, mekanisme dan  contoh program dari setiap  komponen  yang  ada  di pemrograman  Android.  Materi  yang akan  dibahasa diantaranya pengenalan  dasar widget  view (Text  Control, Button, Check  box, Radio  Button, List View, Grid View,Spinner, Date and Time),  Layout, Adapter, Menu, Dialog,  dan Animasi.
Dasar Pemrograman Android
Aplikasi  Android  ditulis  dengan  menggunakan  bahasa  pemrograman  Java.  Kode  Java dikompilasi   beserta   dengan   data   dan   file   sumber   yang   dibutuhkan   oleh   aplikasi yang digabungkan oleh tool aapt ke dalam paket Android, dan hasilnya berupa file archive berekstensi .apk.  File  inilah  yang  di  distribusikan  atau  diunduh  pengguna  dan  menginstalnya  ke  dalam perangkat mobile. Semua kode yang ada di dalam sebuah file berekstensi .apk dianggap sebagai sebuah aplikasi. Dalam banyak hal, setiap aplikasi Android hidup di dalam dunianya sendiri:
a. Secara default,  setiap  aplikasi  berjalan  pada  proses  Linuxnya  masing-masing.  Android memulai  prosesnya  ketika  kode  yang  ada  di  dalam  aplikasi  akan  dieksekusi,  dan  akan mengakhirinya ketika proses itu tidak lagi diperlukan(system resources akan digunakan oleh aplikasi lain).
b. Setiap proses mempunyai virtual machine (VM) masing-masing, sehingga kode aplikasi akan dipisahkan dari aplikasi yang lainnya.
c. Secara default,   setiap   aplikasi diberikan   sebuah user   ID Linux   yang   unik.   Aturan penggunaan telah  ditentukan  sedemikian  rupa  sehingga  hanya  pengguna  yang  berhak  saja yang  dapat  mengakses  dan  menggunakan  aplikasi  tersebut  walaupun  ada  beberapa  cara untuk mengekspor sebuah aplikasi ke dalam aplikasi lainnya.
User ID yang sama juga dapat digunakan oleh dua buah aplikasi sehingga aplikasi tersebut dapat melihat file yang ada di kelolah oleh kedua aplikasi tersebut. User ID dapat mengatur dua aplikasi,  sehingga  kedua  aplikasi  tersebut  dapat  saling  berbagi  file  dan virtual  machine untuk menghemat system resources
Komponen Aplikasi
Fitur utama dari Android adalah sebuah aplikasi dapat menggunakan elemen dari aplikasi lainnya (apabila diizinkan). Contohnya, jika aplikasi ditugaskan untuk menampilkan daftar gambar yang dapat bergulir, maka aplikasi yang lain dapat menggunakannya untuk menampilkandi dalam aplikasi tersebut. Fungsi yang sama dapat dipanggil di dalam dua aplikasi tanpa harus membuatnya lagi. Aplikasi Android tidak mempunyai single entry point di dalamnya (contohnya, tidak ada fungsi main()). Namun, Android mempunyai komponen penting yang dapat di instantiatedan dijalankan oleh sistem apabila dibutuhkan. Ada empat macam komponen, yaitu:
a. Activities
Sebuah activity menyajikan  sebuah user interface visual  yang  berfokus  pada kegiatan dari user.  Sebuah  aplikasi  dapat  terdiri  dari  satu  atau  beberapa activity.  Ragam  dan  banyaknya activity tersebut  tergantung  pada  aplikasi  dan  perancangannya.  Umumnya, sebuah activity ditugaskan  sebagai activity pertama  yang  akan  tampil  ketika  aplikasi  dijalankan, kemudian dilanjutkan oleh activity berikutnya. Contohnya,  sebuah  aplikasi  dapat  menyajikan  daftar  menu  item  atau  menampilkan  gambar beserta keterangan yang dipilih oleh user. Sebuah aplikasi pengiriman teks bisa mempunyai sebuah activity yang  menampilkan  daftar  kontak  untuk  mengirim  pesan, activity kedua adalah   menulis   pesan   ke   kontak   yang   telah   dipilih,   dan activity yang   lain   adalah menampilkan  pesan  lama  atau  mengubah  pengaturan  pesan.  Walaupun activity tersebut bekerja  bersama  pada  sebuah user  interface,  namun  setiap activity tidak  saling  bergantung satu  sama  lain.  Setiap activity diimplementasikan  sebagai  turunan  (subclass)  dari class utama.
b. Services
Servis  adalah  sebuah  komponen  aplikasi  yang  dapat  melakukan  operasi  panjang  yang berjalan  di background dan  tidak  menyediakan  sebuah  tampilan.  Komponen  aplikasi  yang lain  dapat  memulai  sebuah  servis  dan  terus  berjalan  di background meskipun  pengguna berpindah ke aplikasi lain. Sebagai tambahan, sebuah komponen dapat mengikat ke sebuah services dan bahkan melakukan komunikasi antar proses (interprocess communication/IPC). Sebagai  contoh,  sebuah services dapata  menangani  traksaksi  jaringan,  memutar  musik, melakukan file  I/O, atau berinteraksi dengan sebuah content provider semuanya berjalan dibackground.

Selengkapnya download disini
.

Metode Simulated annealing

Pendahuluan
Simulated annealing (Kirkpatrick et al. 1983) merupakan prosedure optimisasi fungsi berdasarkan:
  1. Perturbasi random dari kandidat solusi
  2. Keputusan probabilistik untuk mempertahankan solusi yang telah di mutasi
Simulated annealing diinspirasikan dari proses metalurgi à shaping hot metals menuju ke titik stabil melalui proses pendinginan bertahap dari bentuk:
• disordered,
• unstable,
• high-energy state to an ordered
• stable, low-energy state

Penjelasan singkat Algoritma SA
Dalam simulated annealing à material merupakan kandidat solusi, di mana parameter kandidat solusi diinisialisasi secara random
– Jika energi (eqivalen dengan invers fitness function) lebih rendah: Solusi mengalami mutasi dari kondisi sebelumnya dan solusi yang telah dimutasi menggantikan solusi sebelumnya
– Jika energi lebih tinggi, solusi yang telah dimutasi menggantikan solusi sebelumnya dengan tingkat probabilitas yang proporsional terhadap perbedaan energi dan temperatur
Inisialisasi dengan temperatur sistem tinggi, kemudian solusi dimutasi dengan tingkat energi yang lebih tinggi (low fitness) à beberapa solusi dipertahankan berdasarkan tingkat probabilitas tertentu
Temperatur sistem diturunkan setelah n kali evaluasi dan secara efektif dengan menurunkan probabilitas solusi yang telah dimutasi sebelumnya (state energi yang lebih tinggi)
Prosedur berhenti ketika temperatur annealing bernilai nol.

What is simulated annealing and why do we use it?
• Ketika kita menyelesaikan problem optimisasi yang sulit dengan proses iterasi, solusi mungkin secara prematur terhenti pada suatu lokal minimum (Lihat Gbr)
• Simulated annealing merupakan salah satu teknik di mana kita bisa menghindari solusi pada lokal minima yang tak diinginkan
• Secara umum banyak teknik optimisasi yang iteratif dapat menentukan solusi minimalisasi atau maksimalisasi fungsi objektif sistem, seperti total error, energi, biaya, dst
• Minimalisasi dan maksimalisasi secara teknik identik (teknik yang sama digunakan sama) à untuk minimalisasi kita menuju ke bawah dan sebaliknya untuk maksimalisasi kita menuju ke atas dalam hal pengaturan energi dan temperatur

Ide dasar untuk teknik iteratif sebagai berikut:
• Jika kita dapat menemukan solusi tentang nilai minimum fungsi objective dalam satu kali langkah iterasi maka itulah cara yang terbaik
• Dalam kalkulus, untuk menentukan nilai x sehingga suatu fungsi minimum, maka kita perlu mencari turunan fungsi f'(x) = 0 à inilah yang disebut solusi dengan satu kali langkah
• Akan tetapi, banyak persoalan yang sulit di mana pendekatan solusi satu kali langkah ini tidak berhasil, sehingga kita perlu melakukan proses iterasi
• Proses iterasi à kita perlu memulai dengan pemilihan solusi awal sendiri (bisa diambil random), kemudian solusi ini perlahan-lahah diperbaiki melalui proses iterasi
• Dalam setiap iterasi ini, fungsi f(x) ini menurun secara perlahan dan diharapkan mencapai nilai yang paling bawah (absolute bottom).
• Persoalan umum yang bisa muncul yaitu secara prematur kita sampai pada suatu titik minimum dan secara langsung mengklaim bahwa inilah solusi yang terbaik

•Simulated annealing mencoba menyelesaikan persoalan solusi prematur pada lokal minima dengan mengambil pendekatan probabilistik dibanding sekedar deterministik dalam proses pencarian optimal solusi
•Istilah “probabilistic” = “statistical” or “stochastic”
•Originalitas "simulated annealing“: pendinginan bertahap (proses annealing) metal ke level energi paling rendah sehingga dihasilkan kristal
•Jika metal dipanaskan hingga temperatur tinggi, maka metal akan mencair.
•Jika metal ini didinginkan secara cepat (quenching), atom atau molekul mengikat bersama tanpa mencapai level energi ikat atorm yang terendah sehingga akan diperoleh bahan amorphous (defective state) è Inilah merupakan analogi ketika proses iterasi terhenti pada lokal minimum yang tak diharapkan
•Target kita dalam simulated annealing bahwa kita ingin menghasilkan crystal state, à a global minimum, dengan proses annealing.
•Oleh karena itu kita mula-mula mengeset temperatur tinggi kemudian perlahan-lahan menurunkan temperatur hingga dekat dengan temperartu thermal equilibrium material.

Analogi algoritma dengan konteks fisik dari sistem: • Algoritma yang dijelaskan di sini beranalogi dengan fenomena fisik à khususnya mekanika statistik (statistic mechanics)
• Istilah Energy E adalah ukuran yang digunakan untuk menentukan apakah solusi minimum atau maksimum telah dicapai
• E bisa menyatakan total error, cost, profit, etc., bergantung pada aplikasi
• E tidak menggambarkan energi secara fisik
• Sama halnya dengan temperature T merupakan ukuran lain yang sering disebut pseudo-temperature ;
• T beranalogi dengan temperature dalam thermodynamics, tetapi bukan secara fisik

Probabilities of states in terms of the energy and the temperature
(teori singkat tentang statistic mechanics berkaitan dengan simulated annealing)
Dalam thermodynamics, probabilitas sistem dalam state dengan energy E and temperature T secara proporsional dengan faktor probabilitas Boltzmann:
Selengkapnya silahkan download materinya disini


Monday, 16 November 2015

Logika Fuzzy

Anda pernah mendengar istilah kecerdasan buatan (artificial intelligence atau disingkat AI)? AI merupakan suatu aplikasi yang meniru kecerdasan manusia untuk digunakan dalam mesin-mesin atau peralatan-peralatan cerdas. Konon katanya otak manusia memiliki 2 fungsi utama, yaitu fungsi berpikir dan fungsi belajar. Fungsi berpikir manusia tercermin dari kemampuannya untuk berlogika, sedangkan fungsi belajar membuat manusia bisa mengingat sesuatu melalui pembentukan pola-pola di otaknya. Sejalan dengan fungsi otak manusia tersebut, maka AI juga dikelompokan menjadi 2 kelompok, yaitu AI yang meniru fungsi berpikir dan AI yang meniru fungsi belajar. Salah satu contoh AI yang meniru fungsi berpikir adalah logika fuzzy (fuzzy logic), sedangkan contoh AI yang meniru fungsi belajar adalah neural network (NN). Tulisan ini akan membahas fuzzy logic dan salah satu aplikasinya di bidang kontrol proses. Logika Fuzzy. Logika fuzzy pertama kali diperkenalkan oleh Prof Lotfi Zadeh tahun 1965. Saat ini logika fuzzy sudah banyak digunakan dalam berbagai bidang, salah satunya adalah dalam bidang kontrol (proses kontrol). Fuzzy yang diperkenalkan oleh Zadeh didasarkan pada teori possibility yang berbeda dari teori probability yang sudah lebih umum dikenal. Secara umum, logika fuzzy terdiri dari beberapa komponen, yaitu Fuzzifier, Fuzzy Rule Base, Fuzzy Inference Engine dan Defuzzifier, seperti diperlihatkan pada gambar berikut.
Yang menjadi inti dari logika fuzzy adalah Fuzzy Rule Base, yang berisi pernyataan-pernyataan logika. Fuzzy Inference Engine merupakan komponen fuzzy yang menerjemahkan pernyataan logika yang ada di Rule Base menjadi perhitungan-perhitungan matematika. Fuzzifier digunakan untuk memetakan nilai/harga variable di dunia nyata kedalam himpunan fuzzy (fuzzy sets), sedangkan Defuzzifier mengembalikan hasil perhitungan fuzzy (himpunan fuzzy) menjadi variable sesuai rentang nilainya di dunia nyata.

Materi lengkap tentang fuzzy silahkan download Disini

Metode Ant Colony Optimation (ACO)

Ant Colony Optimization (ACO)
Ant Colony Optimization (ACO) diadopsi dari perilaku koloni semut yang dikenal sebagai sistem semut (Dorigo, et.al, 1996). Semut mampu mengindera lingkungannya yang kompleks untuk mencari makanan dan kemudian kembali ke sarangnya dengan meninggalkan zat Pheromone pada rute-rute yang mereka lalui Pheromone adalah zat kimia yang berasal dari kelenjar endokrin dan digunakan oleh makhluk hidup untuk mengenali sesama jenis, individu lain, kelompok, dan untuk membantu proses reproduksi. Berbeda dengan hormon, Pheromone menyebar ke luar tubuh dan hanya dapat mempengaruhi dan dikenali oleh individu lain yang sejenis (satu spesies). Proses peninggalan Pheromone ini dikenal sebagai stigmery, yaitu sebuah proses memodifikasi lingkungan yang tidak hanya bertujuan untuk mengingat jalan pulang ke sarang, tetapi juga memungkinkan para semut berkomunikasi dengan koloninya.
Seiring waktu, bagaimanapun juga jejak Pheromone akan menguap dan akan mengurangi kekuatan daya tariknya. Lebih cepat setiap semut pulang pergi melalui rute tersebut, maka Pheromone yang menguap lebih sedikit. Begitu pula sebaliknya jika semut lebih lama pulang pergi melalui rute tersebut, maka Pheromone yang menguap lebih banyak.

Cara kerja semut menemukan rute terpendek dalam ACO
Secara jelasnya cara kerja semut menemukan rute terpendek dalam ACO adalah sebagai berikut : Secara alamiah semut mampu menemukan rute terpendek dalam perjalanan dari sarang ke tempat-tempat sumber makanan. Koloni semut dapat menemukan rute terpendek antara sarang dan sumber makanan berdasarkan jejak kaki pada lintasan yang telah dilalui. Semakin banyak semut yang melalui suatu lintasan, maka akan semakin jelas bekas jejak kakinya. Hal ini akan menyebabkan lintasan yang dilalui semut dalam jumlah sedikit, semakin lama akan semakin berkurang kepadatan semut yang melewatinya, atau bahkan akan tidak dilewati sama sekali. Sebaliknya lintasan yang dilalui semut dalam jumlah banyak, semakin lama akan semakin bertambah kepadatan semut yang melewatinya, atau bahkan semua semut akan melalui lintasan tersebut (Dorigo, M., Maniezzo, V., dan Colorni, A., 1991a).
Gambar a di atas menunjukkan ada dua kelompok semut yang akan melakukan perjalanan. Satu kelompok bernama L yaitu kelompok yang berangkat dari arah kiri yang merupakan sarang semut dan kelompok lain yang bernama kelompok R yang berangkat dari kanan yang merupakan sumber makanan. Kedua kelompok semut dari titik awal keberangkatan sedang dalam posisi pengambilan keputusan jalan sebelah mana yang akan diambil. Kelompok semut L membagi dua kelompok lagi.
Sebagian melalui jalan atas dan sebagian melalui jalan bawah. Hal ini juga berlaku pada kelompok semut R. Gambar b dan gambar c menunjukkan bahwa kelompok semut berjalan pada kecepatan yang sama dengan meninggalkan Pheromone (jejak kaki semut) di jalan yang telah dilalui. Pheromone yang ditinggalkan oleh semut - semut yang melalui jalan atas telah mengalami banyak penguapan karena semut yang melalui jalan atas berjumlah lebih sedikit dari pada jalan yang di bawah.
Hal ini dikarenakan jarak yang ditempuh lebih panjang daripada jalan bawah. Sedangkan Pheromone yang berada di jalan bawah, penguapannya cenderung lebih lama. Karena semut yang melalui jalan bawah lebih banyak daripada semut yang melalui jalan atas. Gambar d menunjukkan bahwa semut-semut yang lain pada akhirnya memutuskan untuk melewati jalan bawah karena Pheromone yang ditinggalkan masih banyak. Sedangkan Pheromone pada jalan atas sudah banyak menguap sehingga semut-semut tidak memilih jalan atas tersebut. Semakin banyak semut yang melalui jalan bawah maka semakin banyak semut yang mengikutinya.
Demikian juga dengan jalan atas, semakin sedikit semut yang melalui jalan atas, maka Pheromone yang ditinggalkan semakin berkurang bahkan hilang. Dari sinilah kemudian terpilihlah rute terpendek antara sarang dan sumber makanan.

bagaimana implementasi tentang metode ini silahkan download disini

untuk bahan presentasi materi tentang metode ACO download disini

VIEW pada sistem basis data MySQL server



A. Teori dasar
View adalah tabel virtual atau query yang tersimpan di database server. View berisi perintah SELECT ke tabel dalam database. View dapat digunakan untuk mempermudah kita dalam pembuatan laporan atau tampilan database yang diinginkan dengan cepat. Dengan kata lain, views merupakan perintah SELECT yang disimpan, sehingga setiap saat dibutuhkan, anda dapat langsung memanggilnya tanpa perlu mengetikkan perintah SELECT kembali. 
Data yang terakses melalui view tidak disimpan dalam database sebagai objek tersendiri akan tetapi berupa query select dari satu atau lebih tabel.View digunakan utk melakukan fungsi-fungsi berikut : 
  1. Membatasi pengguna kepada baris data tertentu dalam tabel 
  2. Membatasi pengguna kepada kolom tertentu dalam tabel
  3. Menggabungkan kolom dari beberapa tabel sehingga terlihat seperti sebuah tabel

B. Membuat View
View dibuat atau didefinisikan dengan menggunakan perintah CREATE VIEW. Bentuk umum perintah untuk membuat view :


CREATE VIEW nama_view (column_list) AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]



Untuk mengeksekusi view, anda dapat memanggil dengan perintah SELECT seperti halnya menampilkan data dari suatu tabel.


SELECT * FROM nama_view;



Mengubah View
View yang sudah dibuat, dapat diubah dengan perintah ALTER.
Bentuk umum perintah untuk mengubah view :


ALTER VIEW nama_view (column_list) AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]



Menghapus View
View yang sudah dibuat, dapat dihapus dengan perintah DROP.
Bentuk umum perintah untuk menghapus view : 

DROP VIEW nama_view; 

Materi selengkapnya download disini