Sabtu, 14 April 2012

PBWT3-०६.२००९.१.05095-खैरिल Anam-B1

Framework YUI Library

Framework adalah sekumpulan perintah/fungsi dasar yang dapat membantu dalam menyelesaikan proses-proses yang lebih kompleks Framework itu adalah kerangka kerja. Kerangka kerja yang memudahkan kita menyelesaikan suatu pekerjaan. Jadi Framework adalah sesuatu yang telah diatur menjadi suatu pola yang memudahkan kita dalam penggunaannya.
Awal pengembangan Framework dimulai saat memasuki era Web 2.0, generasi kedua dari layanan berbasis web dimana lebih meniktikberatkan pada kolaborasi online, sharing content antar pengguna dan lebih terarah ke User Content Generated.
Nah, berdasarkan kebutuhan akan konsep dan paradigma baru dalam pengembangan aplikasi berbasis web tersebut maka dalam pengembangannya diperlukan suatu sistem alur kerja yang bisa memudahkan dalam menciptakan aplikasi berbasis web yang canggih dan interaktif. Salah satu yang sering digunakan para developer tersebut adalah Farmework Yui Libarary dimana didalamnya terdapat tampilan yang telah ditulis sedemikian rupa dimana sangat membantu dalam pengembangan sebuah Aplikasi Web, terutama dalam pengembangan AJAX (Asynchronous Java And XML). Sebuah teknik pemanggilan cepat tanpa melakukan reload terhadap suatu page.Dengan Farmework Libraries tersebut para programmer bisa dengan mudah mengimplementasikan paradigma WEB 2.0 yang baru seperti User interface yang dinamik dan sangat interaktif kepada usernya.
Salah satu FRAMEWORK yang akan saya bahas adalah Framework Yui Library karena mampu memberi kemudahan yang luar biasa bagi developer dalam membangun aplikasi web
Mengapa kita butuh framework?
Bagi anda yang belum familiar dengan framework, framework adalah sekumpulan fungsi,
class, dan aturan-aturan. Berbeda dengan library yang sifatnya untuk tujuan tertentu saja, framework bersifat menyeluruh mengatur bagaimana kita membangun aplikasi. Framework memungkinkan kita membangun aplikasi dengan lebih cepat karena sebagai developer kita akan lebih memfokuskan pada pokok permasalahan sedangkan hal-hal penunjang lainnya seperti koneksi database, form validation, GUI, dan security; umumnya telah disediakan oleh framework. Disamping itu dengan aturan-aturan yang jelas dan harus dipatuhi, aplikasi kita lebih solid, more readable, dan kolabarasi dalam tim dapat lebih mudah dilaksanakan.

YUI LIBRARY

YUI: YUI Grids CSS menawarkan empat lebar halaman preset, enam template preset, dan kemampuan untuk stack dan daerah sarang dibagi dua, tiga, atau empat kolom. File 4KB menyediakan lebih dari 1000 kombinasi tata letak halaman. Fitur lain termasuk: Mendukung cairan lebar (100%) layout serta telah ditetapkan fixed-width layout di 750px, 950px dan 974px, dan kemampuan untuk dengan mudah menyesuaikan untuk setiap nomor, Mendukung kustomisasi mudah lebar untuk fixed-width layout , Fleksibel dalam merespon pengguna diprakarsai font-size penyesuaian, kolom Template adalah sumber-order independen, sehingga Anda dapat menempatkan konten Anda paling penting pertama dalam lapisan markup untuk meningkatkan aksesibilitas dan optimasi mesin pencari (SEO), Self-kliring footer. Tidak peduli yang kolom lebih panjang, tetap footer di bagian bawah, Layouts kurang dari 100% secara otomatis



Ketersediaan YUI di Node.js sebagai modul NPM
Formal pengenalan "malam", menawarkan kulit kedua kita
Pengenalan App, Button, CSSButton, Setang, Pjax, komponen TestConsole
Refactoring CSS Grids untuk menjadi lebih ringan dan serbaguna
Refactoring dari utilitas Get untuk dukungan fitur tambahan dan peningkatan kinerja
Refactoring dari Loader untuk melaksanakan fungsi asynchronous Get s
Komponen Uploader menerima implementasi HTML5 yang meliputi drag-and-drop fungsi, ditambah skenario peningkatan jauh lebih baik progresif, manajemen antrian granular dan aksesibilitas.
Keyboard navigasi menambah komponen Kalender
Perangkat tambahan untuk App, Grafik, dan DataTable komponen
Banyak perbaikan bug



Kerangka App keluarga modul, termasuk Model, Controller / Router, dan View telah menerima perangkat tambahan signifikan. Gambaran dari perubahan itu dibahas dalam sebuah posting blog sebelumnya, dan daftar rincian perubahan dapat ditemukan dalam file sejarah.
Kami memperkenalkan pemuatan asynchronous dalam Loader secara default. Ini berarti bahwa setiap Loader naskah menyuntikkan ke dalam halaman akan dimuat asynchronous. Hal ini akan mengurangi beban waktu dan meningkatkan kinerja dengan memungkinkan browser untuk mengambil sebagai skrip banyak sekaligus karena dapat. Jika modul kustom Anda benar dibungkus callback YUI.add, Anda akan melihat ada perbedaan sama sekali. Namun, jika Anda memuat modul khusus yang memerlukan pemuatan naskah memerintahkan (tergantung pada modul lain, dinamis Seluruh), Anda perlu mengubah modul Anda config untuk memberitahu Loader untuk tidak memuat modul-modul dengan bendera async. Anda dapat melakukan ini dengan menambahkan async: config palsu untuk definisi modul dan Y.Get.script tidak akan memuatnya asynchronous.
Uploader adalah refactored untuk mendukung fungsi HTML5 bila tersedia. Versi 3.4.1 sudah usang dan tersedia sebagai uploader-usang. Sebuah panduan migrasi tersedia di http://yuilibrary.com/yui/docs/uploader/migration.html.
Update untuk format kustom Grafik dapat menyebabkan masalah kompatibilitas ke belakang ketika melakukan upgrade dalam keadaan tertentu. Silakan lihat bagian Masalah Dikenal untuk lebih detail.
DataTable itu refactored untuk Model leverage, ModelList, dan Lihat. Versi 3.4.1 sudah usang dan tersedia sebagai DataTable-usang, DataTable-base-usang, DataTable-sort-usang, dll Sebuah panduan migrasi tersedia di http://yuilibrary.com/yui/docs/datatable/migration html..

Inti ringan YUI dan arsitektur modular membuatnya terukur, cepat, dan kuat. Dibangun oleh insinyur frontend di Yahoo!, YUI kekuatan situs paling populer di dunia.
API YUI intuitif dan terdokumentasi dengan baik akan membawa Anda dari penanganan DOM dasar untuk membangun aplikasi performant dan dipertahankan pada browser desktop, perangkat mobile, dan server.

Oleh : PBWT3 (06.2009.1.0.05095) Khairil Anam B1

Rabu, 21 Maret 2012

resume

Khairil Anam (06.2009.1.05095)

Pengantar Internet dan Web
Internet

 Internet à Interconnected-networking
 Network of computer networks
 Terdiri dari banyak subnetwork
 Heterogen
 Internet = hardware; web = software
 Komponen:
 Client (PC), server, modem, router, TCP/IP, dll
Sejarah Internet
 Departemen Pertahanan Amerika membentuk suatu jaringan komputer yang disebut ARPANET, untuk memungkinkan personil militer dan peneliti sipil bertukar informasi yang berkaitan dengan hal-hal militer.
 Melalui proyek ARPA (Advance Research Project Agency) mereka mendemonstrasikan hardware dan software komputer yang berbasis UNIX dapat melakukan komunikasi dalam jarak tak berhingga melalui saluran telepon.



Protokol TCP/IP
 Protokol à mirip dengan bahasa.
 TCP/IP (Transmission Control Protocol/Internet Protocol) adalah sekelompok protokol yang mengatur komunikasi data komputer di Internet.
 TCP bertugas memastikan bahwa semua hubungan bekerja dengan benar.
 IP adalah yang mentransmisikan data dari satu komputer ke komputer lain.
Komponen Aplikasi Web
 Web browser
Web Browser sebagai client untuk menginterpretasikan dan melihat informasi .Browser adalah suatu program yang dirancang untuk mengambil informasi dari suatu server komputer pada jaringan Internet. Informasi ini dikemas dalam page yang masing-masing memiliki beberapa link yang menghubungkan Web page ke sumber informasi lain. Jika suatu link diklik, browser akan melihat alamat dari tujuan link tersebut, kemudian mencari di Web server. Jika menemukan alamat dari tujuan link, browser akan menampilkan informasi yang ada. Jika tak menemukan alamat dari tujuan link
 Web server
Web server bertugas untuk menerima dan merespon permintaan-permintaan dari client (web browser).
Contoh
 Apache
 IIS
 Tomcat
 Lighttpd
 Dll
 URL
Universal Resource Locator URL adalah suatu alamat yang dipakai untuk menentukan lokasi informasi pada Web server, karena alamat ini mengambil informasi yang diminta oleh browser.
Nama domain beserta jenis organisasinya, antara lain:
• com ---> untuk komersial
• edu ---> untuk pendidikan
• net ---> untuk provider Internet
• id ---> untuk negara Indonesia
• gov ---> untuk Lembaga Pemerintahan
• int ---> untuk Organisasi International
• mil ---> untuk Organisasi Militer
• org ---> untuk Organisasi Umum
 HTTP
HTTP merupakan protokol yang menentukan Web browser dalam meminta/mengambil suatu dokumen, dan menentukan Web server dalam menyediakan dokumen yang diminta oleh Web browser. Ini adalah protokol standar yang dipakai untuk mengakses dokumen HTML. HTTP digunakan untuk menjelajahi Web yang berhubungan dengan banyak protokol lain.
 Web programming
Pemprograman web atau yg dikenal dengan Web Program adalah merupakan suatu pemprograman yang bertujuan untuk membngun sebuah web dengan mendesai dan memberikan source kode didalamnya, seperti php, yang umum digunakan adlah menggunakan macromedia dreamweaver.
 HTML
HTML adalah format data yang dipakai untuk membuat dokumen HyperText. Dokumen HTML disebut Mark Language, karena berisi tanda tanda tertentu yang digunakan untuk menentukan tampilan suatu teks dan tingkat kepentingan dari teks tersebut dalam suatu dokumen. Pada sistem HyperText pada dokumen HTML, Anda tidak harus membaca dokumen secara urut dari atas ke bawah, melainkan cukup menuju pada topik tertentu secara langsung dalam dokumen. Ini dikarenakan dokumen tersebut menggunakan teks penghubung ke suatu topik/ dokumen lain secara langsung.

Dasar HTML
Setiap dokumen html harus diwali dengan menuliskan tag dan tag
di akhir dokumen. Tag ini menandai dokumen HTML yang berarti adalah
dokumen HTML dalam satu dokumen hanya ada satu elemen html.Section atau elemen head ditandai dengan tag diawal dan tag diakhir. Section ini beiris informasi tentang dokumen HTML, mislnya informasi judul html yang ditandai dengan tag dan diakhiri dengan tag . Section body ditandai dengan tag dan diakhiri dengan tag diakhir. Section body merupakan isi dokumen yang akan ditampilakn pada browser.
Contoh – Listing 2.1 : contoh1.html


Hasil di Browser : contoh1.html

Rabu, 25 Januari 2012

contoh jurnal

PENERAPAN KONSEP ALGORITMA MINIMAX & MTD(f)
PADA PERMAINAN TIC TAC TOE

Artificial Inteligence
Jurusan Teknik Informatika, Fakultas Teknologi Informasi
Institut Teknologi Adhitama Surabaya
E-mail: http://www.itats.ac.id


ABSTRACT

Minimax algorithm (also often called Minmax) is an algorithm that underlies step problem-solving mindset in some types of computer games, like tic-tac-toe, Othello, checkers, chess, dll.Pada essentially, very reliable Minimax algorithm to solve all problems in pencarianlangkah for computer games with a small number of possible settlement, as in a game of tic-tac-toe. However, if the Minimax algorithm used in the game with a large number of possibilities such as the tic tac toe games, Minimax algorithm requires a very long time to build a tree settlement.
This journal will try to explain a concept minimax algorithm and machine learning applied to the game of tic-tac-toe. After learning of the strategies for a game to get, minimax algorithm is expected to help the players to play tic-tac-toe with the good. The results of this process is expected to be compared with some other methods within the scope of artificial intelligence.

Keywords: Minimax Algorithm, Machine Learning, Game, Tic-Tac-Toe.

ABSTRAK
Algoritma Minimax (juga sering disebut Minmax) adalah sebuah algoritma yang mendasari pola pikir langkah penyelesaian masalah dalam beberapa jenis permainan komputer, seperti tic-tac-toe, othello, checkers, catur, dll.Pada dasarnya, algoritma Minimax sangat andal untuk menyelesaikan segala masalah dalam pencarianlangkah untuk permainan komputer dengan jumlah kemungkinan penyelesaian yang kecil, seperti pada permainan tic-tac-toe. Tetapi, jika algoritma Minimax digunakan pada permainan dengan jumlah kemungkinan penyelesaian yang besar seperti pada
permainan tic tac toe, algoritma Minimax ini memerlukan waktu yang sangat lama untuk membangun pohon penyelesaian.
Jurnal ini akan mencoba menjelaskan sebuah konsep algoritma minimax dan pembelajaran mesin yang diterapkan pada permainan tic-tac-toe. Setelah pembelajaran dari strategi-strategi untuk sebuah permainan didapat, algoritma minimax diharapkan mampu membantu pemain memainkan tic-tac-toe dengan baik. Hasil dari proses ini diharapkan dapat dibandingkan dengan beberapa metode-metode yang lain dalam lingkup kecerdasan buatan.
Kata kunci: Algoritma Minimax, Pembelajaran Mesin, Permainan, Tic-Tac-Toe.



1. PENDAHULUAN

Memainkan sebuah permainan merupakan sebuah konsep penelitian yang sangat populer dikalangan komunitas AI (kecerdasan buatan). Para peneliti di bidang itu telah mengembangkanbeberapa metode pencarian untuk permainan. Metode-metode pencarian yang dikembangkan bias berupa pencarian secara tradisional maupun secara heuristic yang lebih cerdas. Penelitian ini akan mencoba memfokuskan pada permainan sederhana yang dinamakan Tic-Tac-Toe. Algoritma genetika mempunyai ciri yaitu mampu membangun beberapa strategi pada berbagai situasi ,dan melalui aturan ’kemampuan bertahan hidup’, beberapa strategi yang tidak baik dapat dieliminasi sehingga hanya strategi baik yang dipakai.



Kekuatan komputer yang mengandalkan proses
komputasi yang sangat cepat harus didukung oleh
algoritma yang memiliki efisiensi dan efektifitas yang
tinggi. Untuk menyelesaikan permasalahan ini, permainan
tic tac toe pada komputer menggunakan optimasi dari
algoritma Minimax untuk memberikan hasil terbaik dalam
waktu yang singkat.

2. ALGORITMA MINIMAX

2.1 Dasar Teori
Secara teori, algoritma Minimax didefinisikan sebagai berikut:



“Untuk setiap permainan satu-lawan satu, ada
sebuah nilai yang bernilai V dan strategi yang dipilih oleh tiap pemain, sehingga: (a), Jika diberikan strategi dari pemain ke-2, maka langkah penyelesaian terbaik dari
pemain pertama adalah V. Dan (b), jika diberikan strategi dari pemain pertama, maka langkah penyelesaian terbaik


dari pemain kedua adalah -V” [6]

Singkatnya, pemain pertama memberikan langkah
penyelesaian yang bernilai V terhadap permainan pemain

kedua, dan sebaliknya, pemain kedua memberikan
langkah peyelesaian bernilai -V. Pemikiran inilah yang mendasari asal usul penamaan algoritma Minimax,
dimana pemain yang satu berjuang untuk mendapat nilai
maksimum,sedangkan lawannya berjuang untuk mendapat nilai minimum.














Gambar 1. Gambar pohon yang dibangun dengan algoritma Minimax. Disini MAX diwakili aras genap,
sedangkan MIN diwakili aras ganjil.
Langkah-langkah membuat algoritma Minimax adalah sebagai berikut:
1. Misalkan ada 2 pemain yang terlibat, kita namakan
MAX dan MIN.
2. Lalu sebuah pohon pencarian dibangkitkan secara
depth-first-search dari posisi awal permainan hingga
akhir permainan.
3. Dari sudut pandang MAX, akan dicari posisi terakhir
yang paling menguntungkan bagi MAX.

Algoritma Minimax adalah sebagai berikut:

MinMax (GamePosition game) {
return MaxMove (game);
}
MaxMove (GamePosition game) {
if (GameEnded(game)) {
return EvalGameState(game);
}
else {
best_move < - {};
moves <- GenerateMoves(game);
ForEach moves {
move <-
MinMove(ApplyMove(game));
if (Value(move) >
Value(best_move)) {
best_move < - move;
}
}
return best_move;
}
}










MinMove (GamePosition game) {
best_move <- {};
moves <- GenerateMoves(game);
ForEach moves {
move <-
MaxMove(ApplyMove(game));
if (Value(move) >
Value(best_move)) {
best_move < - move;
}
}
return best_move;

Yang terjadi pada algoritma diatas adalah, MAX akan mengambil nilai maksimum dari pohon pencarian yang dibangkitkan pada simpul terakhir. Sebaliknya, MIN akan menangkis serangan MAX dengan mengambil nilai
minimum pada posisi akhir permainan, yang akan
meminimalisasi serangan MAX.


2.2 Implementasi Algoritma Minimax
Untuk lebih jelasnya, kita misalkan ada sebuah
permainan sederhana yang dengan hanya ada satu langkah untuk tiap pemain dengan kemungkinan situasi seperti ini:

Pergerakan Pergerakan Nilai
MAX MIN Evaluasi
A C 12
A D -2
B C 5
B D 6

Tabel 1. Contoh nilai akhir pergerakan MAX dan MIN
pada pohon Minimax.
Fungsi evaluasi berlaku untuk posisi akhir papan, yang berupa kombinasi langkah dari MIN dan MAX.

MAX berasumsi jika MIN akan bermain dengan baik.
Maka dari itu, MAX tahu jika dia melakukan pergerakan
A, maka MIN akan membalasnya dengan melakukan
pergerakan D, yang mengakibatkan nilai evaluasi -2
(kemenangan bagi MIN). Bagaimanapun juga, jika MAX melakukan gerakan B, dia pasti akan menang karena
pergerakan MIN yang terbaik hanya akan menghasilkan nilai evaluasi terbaik sebesar 5 saja. Jadi, dengan
menggunakan algoritma Minimax, MAX akan selalu
memilih untuk melakukan langkah B, walaupun dia
sebenarnya akan mendapatkan kemenangan yang lebih baik jika melakukan A dan MIN melakukan kesalahan dengan memilih langkah C.




2.3 Kelemahan Algoritma Minimax
Dengan membangkitkan pohon pencarian ini, komputer akan selalu mendapatkan penyelesaian terbaik untuk `
setiap langkahnya. Tetapi, masalah muncul ketika jumlah
input yang dimasukkan menjadi banyak. Bayangkan saja, untuk posisi pertama dalam permainan tic tac toe dimana
hanya terdapat kemungkinan untuk bergerak bagi 8 pion
dan 2 kuda, akan terdapat sebanyak 8*2 + 2*2 = 20
kemungkinan. Hal ini berarti pada simpul awal akan
didapatkan 20 sub-simpul sebagai langkah penyelesaian
pada aras (level) ke 1. Jika komputer melakukan hal yang sama untuk menganalisis langkah selanjutnya (berarti komputer melakukan pembangkitan pohon untuk simpul pada aras ke 1) maka akan dilakukan 20 pembangkitan dimana pada tiap pembangkita akan dilakukan puluhan pembangkitan lain untuk aras ke 2. Demikian seterusnya hingga algoritma mencapai aras terakhir permainan, menang

Berarti, usaha yang dilakukan akan tumbuh secara
dramatis mengikuti:
 Jumlah kemungkinan posisi penyelesaian untuk
setiap pemain, dinamakan branching factor.
Sering dinotasikan sebagai B.
 Kedalaman aras pada pembangunan pohon
pencarian, sering dinotasikan sebagai d. Biasa
disebut juga 'ply', yang berarti sebuah langkah
yang dilakukan oleh pemain.

Jika komputer hanya mengandalkan algoritma Minimax ini, proses membangkitkan simpul akan menjadi sangat lama. Kompleksitas dari algoritma Minimax ini adalah
eksponensial sebesar O(Bd) [5]. Dengan nilai B untuk
catur rata-rata adalah 35, dan jika kita akan menentukan 9 langkah kedepan, diperlukan sekitar 50 juta kemungkinan
untuk dieksplorasi. Hal ini tentunya membutuhkan usaha yang sangat keras untuk mengecek seluruh kemungkinan. Tentu saja diperlukan waktu yang lama untuk menganalisis seluruh kemungkinan ini dalam sebuah permainan tic tac toe jika hanya mengandalkan algoritma Minimax.
3. The Game Tic Tac Toe

Permainan Tic-Tac-Toe sangatlah sederhana; diilhami oleh permainan anak-anak. Dimainkan pada papan berukuran 3 x 3. Pada awal permainan, papan dikosongkan. Kedua pemain, X dan O, akan
menempatkan biji-bijinya keatas papan, sekali
pasang satu biji. Pemain yang mampu menempatkan tiga bijinya dalam satu garis (vertikal, horizontal, diagonal) itulah yang menang. Dan dikatakan seri

0
X


Gambar 1. contoh konfigurasi











4. IMPLEMENTASI
4.1 Konfigurasi Pengkodean
Untuk membangun strategi dalam permainan
Tic-tac-toe, ada sebuah langkah jitu di tiap konfigurasi papan. Tic-tac-toe dimainkan pada papan dengan sembilan kotak. Tiap kotak dapat terisi oleh ‘X’ atau ‘O’ maupun kosong. Total jumlah kemungkinan konfigurasi adalah 3 pangkat 9 Jika diasumsikan bahwa akan dibentuk sebuah susunan angka bayangan, maka ‘0’ akan merepresentasikan kosong, 1 untuk ‘X’ dan 2 untuk ‘O’. Misalnya:
Algoritma MTD(f) adalah sebuah algoritma optimasi Minimax baru yang lebih sederhana dan lebih sangkil
daripada beberapa pendahulunya[4]. Nama dari algoritma ini adalah kependekan dari MTD(n,f), yang disingkat dari Memory-enhanced Test Driver with node n and value f. MTD adalah nama dari sekumpulan driver program yang mencari pohon Minimax menggunakan pemanggilan zerowindow AlphaBetaWithMemory.

Dalam beberapa percobaan permainan komputer seperti
tic tac toe, catur, othello, dan checkers, algoritma ini mempunyai performa rata-rata lebih baik daripada Negascout (variasi dari Alphabeta yang diimplementasikan dalam hampir
semua permainan catur, checkers, dan othello). Salah satu
program tic tac toe terkuat, Cilkchess (http://theory.lcs.mit.
edu/~cilk/chess.html) milik MIT yang menggunakan
metode komputasi pararel, juga menggunakan MTD(f)
sebagai algoritma pencariannya menggantikan Negascout
yang digunakan oleh program tic tac toe pendahulunya,
StarSocrates.


4.2 Implementasi Algoritma MTD(f)
MTD(f) 'hanya' terdiri dari 10 baris kode saja, yaitu
seperti berikut:
function MTDF(root, f, d)
g := f
upperBound := +•
lowerBound := -•
while lowerBound < upperBound
if g = lowerBound then
• := g+1
else
• := g
g :=
AlphaBetaWithMemory(root, •-1, •, d)
if g < • then
upperBound := g
else
lowerBound := g
return g
Algoritma MTD(f) diatas memanggil fungsi
AlphaBetaWithMemory berkali-kali dengan metode zerowindow pencarian Alpha-beta, tidak seperti Negascout yang menggunakan pencarian wide-window. Pemanggilan AlphaBetaWithMemory mengembalikan batas dari nilai evaluasi Minimax. Batas dari nilai itu kemudian disimpan dalam upperbound (batas atas) dan lowerbound (batas bawah), membentuk sebuah interval yang melingkupi nilai Minimax yang sebenarnya pada pencarian dengan









kedalaman tertentu. Positif dan negatif tak hingga adalah
kependekan dari nilai diluar interval pada daun pohon. Ketika batas atas dan batas bawahnya bernilai sama atau batas bawah telah melampaui nilai batas atas, maka nilai
Minimax telah ditemukan.
Efisiensi dari MTD(f) berasal dari pencarian Alpha-beta dengan zero-window, dan menggunakan sebuah nilai batas yang baik (variabel beta) untuk melakukan pencarian
zero-window tersebut. Dalam versi yang sebelumnya,
Alpha-beta dipanggil dengan pencarian wide-window
seperti ini AlphaBeta(root, -INFINITY, +INFINITY,
depth), yang memastikan nilai kembaliannya berada
dalam interval alpha dan beta. Sedangkan dalam
algoritma MTD(f), digunakan pencarian zero-window, jadi
untuk setiap pemanggilan Alpha-beta akan
mengembalikan batas bawah dan batas atas dari nilai
Minimax berturut-turut. Pencarian dengan zero-window memberikan lebih banyak jalan pintas, tetapi lebih sedikit
informasi -hanya batas dari nilai minimax saja. Untuk
menyiasati hal itu MTD(f) perlu memanggil Alpha-beta beberapa kali, untuk mendekati nilai itu. Imbas dari
pemanggilan Alpha-beta secara berulang-ulang dapat
dihilangkan dengan menggunakan versi dari Alpha-beta yang menyimpan nilai simpul dalam memori.
Agar algoritma MTD(f) dapat berjalan dengan baik,
maka diperlukan “tebakan pertama” sebagai pengarah untuk menemukan nilai Minimax yang baik. Semakin baik
tebakan pertama, maka algoritma tersebut akan semakin efisien, dan diperlukan lebih sedikit pengulangan. Jika kita memberikan tebakan nilai Minimax pada MTD(f), dia
hanya akan melakukan dua pengulangan, yang satu untuk menentukan batas atas dari nilai x, dan yang satunya lagi untuk menemukan batas bawah dari nilai tersebut.


4.3 Algoritma AlphaBetaWithMemory
Sebagai catatan, MTD(f) memanggil fungsi Alpha-Beta yang menyimpan nilai simpul-simpulnya dalam memori, dan mengembalikan nilainya untuk pencarian kembali.
Untuk membuat MTD(f) sangkil, maka fungsi Alpha-beta harus menyimpan nilai simpul yang telah dicari.

Berikut ini adalah kode dari AlphaBetaWithMemory:
function AlphaBetaWithMemory(n :
node_type; alpha , beta , d : integer) : integer;
if retrieve(n) == OK then /*
Melihat tabel transposisi */
if n.lowerbound >= beta
then return n.lowerbound;
if n.upperbound <= alpha
then return n.upperbound;















alpha := max(alpha,
n.lowerbound);
beta := min(beta,
n.upperbound);
if d == 0 then g :=
evaluate(n); /* simpul daun */
else if n == MAXNODE then
g := -INFINITY; a :=
alpha; /* menimpan nilai
alpha yang sebenarnya */
c := firstchild(n);
while (g < beta) and (c
!= NOCHILD) do
g := max(g,
AlphaBetaWithMemory
(c, a, beta, d -
1));
a := max(a, g);
c :=
nextbrother(c);
else /* n adalah sebuah
MINNODE */
g := +INFINITY; b :=
beta; /* save original
beta value */
c := firstchild(n);
while (g > alpha) and (c
!= NOCHILD) do
g := min(g,
AlphaBetaWithMemory
(c, alpha, b, d -
1));
b := min(b, g);
c :=
nextbrother(c);
/* Tabel transposisi menyimpan
nilai simpul */
if g <= alpha then n.upperbound
:= g; store n.upperbound;
if g > alpha and g < beta then
n.lowerbound := g;
n.upperbound := g; store
n.lowerbound,
n.upperbound;

if g >= beta then n.lowerbound := g;
store n.lowerbound;
return g;



Tabel transposisi yang digunakan berguna untuk
menyimpan dan mengambil panggilan. Retrieve
berfungsi untuk memastikan jika sebuah nilai terdapat






5. KESIMPULAN

Untuk setiap permainan satu-lawan-satu, hampir selalu digunakan algoritma Minimax dalam permainan komputer. Proses pembangunan pohon pencarian Minimax dilakukan dengan metode depth-first-search. Algoritma Minimax mampu menganalisis segala kemungkinan posisi permainan untuk menghasilkan keputusan yang terbaik. Tetapi, dengan kelebihan yang seperti ini, algoritma Minimax tidak sangkil untuk memroses data dengan ukuran masukan yang besar, karena proses untuk membangun pohon pencarian dangan algoritma ini memiliki kompleksitas algoritma eksponensial. Maka dari itu, diperlukan optimasi dalam algoritma ini agar tidak semua simpul dibangkitkan.
Jenis optimasi dalam permainan TIC TAC TOE dengan algoritma Minimax ada bermacam-macam, tetapi dalam makalah ini hanya dibahas mengenai optimasi MTD(f) karena algoritma MTD(f) diklaim sebagai algoritma terbaik dibandingkan dengan algoritma-algoritma pendahulunya. Dengan menggunakan algoritma MTD(f) ini, proses pencarian nilai Minimax berlangsung lebih cepat.

Kekuatan dalam permainan tic tac toe pada manusia terletak dari strategi dalam merencanakan langkah, pemikiran jauh kedepan, intuisi, dan kreatifitas. Sedangkan komputer hanya mengandalkan kemampuan komputasi yang sangat cepat.
Kekuatan komputer yang mengandalkan proses komputasi yang sangat cepat harus didukung oleh algoritma yang memiliki efisiensi dan efektifitas yang tinggi. Untuk menyelesaikan permasalahan ini, permainan tic tac toe pada komputer menggunakan optimasi dari algoritma Minimax untuk memberikan hasil terbaik dalam waktu yang singkat.

“Untuk setiap permainan satu-lawan satu, ada
sebuah nilai yang bernilai V dan strategi yang dipilih oleh tiap pemain, sehingga: (a), Jika diberikan strategi dari pemain ke-2, maka langkah penyelesaian terbaik dari
pemain pertama adalah V. Dan (b), jika diberikan strategi dari pemain pertama, maka langkah penyelesaian terbaik dari pemain kedua adalah -V” [6]


















REFERENCES

ALI, A.M.A. 1998. Segmentation and Categorization of Phonemes in Continuous Speech. Technical Report TR-CST25JUL98, Center for Sensor Technology, University of Pennsylvania.
Abdul Gapur, “Aplikasi Struktur Data The Minimax Game
Tree pada Permainan Catur”, Teknik Informatika ITB, 2007
Khoirush Sholih Ridhwaana Akbar, “Algoritma Minimax
dalam Pengambilan Keputusan pada Permainan Tic-tac
toe”, Teknik Informatika ITB, 2007.
ALI, A.M.A., VANDER SPIEGEL, J., MUELLER, P., HAENTJENS, G., AND BERMAN, J. 1999. An Acoustic-Phonetic feature based system for Automatic Phoneme Recognition in Continuous Speech. In IEEE Proceedings of the International Symposium on Circuits and Systems (ISCAS), 3, 118-121.
Bagley, J.D. (1967). The behaviour of adaptive
systems which employ genetic and correlation
algorithms. Doctoral dissertation, Ann arbor:
The University of Michigan.
ANANDAN, P., SARAVANAN, K., PARTASARATHI, R., AND GEETHA, T.V. 2002. Morphological Analyzer for Tamil. In Proceedings of ICON2002, 3-10.
ARDEN, A.H. REV. AND CLAYTON, A. C. 1969. A Progressive Grammar of the Tamil Language, Christian Literature Society, Madras.
BROWN, P., PIETRA, S,.DELLA PIETRA, V., AND MERCER, R. 1993. The mathematics of statistical machine translation: Parameter estimation’, Computational Linguistics, 19(2), 263-311.
BYRNE, W., HACIC, J., IIRCING, P., JELINEK, F., KHUDANPUR, S., KRBEC,.P., AND PSUTKA, J. 2001. On large vocabulary continuous speech recognition of highly inflectional language – Czech. In Proceedings of Eurospeech 2001, Aalborg, Denmark, 487-489.
Minimax - Wikipedia, The Free Encyclopedia
en.wikipedia.org/wiki/Minimax
diakses pada tanggal 15 Mei 2008

Jumat, 30 Desember 2011

Makalah Pemprograman Web

PEMBAHASAN

1. Definisi
#CGI
CGI(Command Gateway Interface) adalah suatu bentuk komunikasi dimana client (browser) dapat mengirimkan suatu masukan kepada server, dan server mengolah masukan tersebut serta mengembalikannya kepada client (browser)
Program CGI adalah program yang didisain untuk menerima dan mengembalikan data sesuai dengan spesifikasi CGI. Program tersebut dapat ditulis menggunakan bahasa pemrograman seperti C, Perl, Java atau Visual Basic.

#Perl
Perl merupakan singkatan dari Practical Extraction and Report Language, dibuat oleh Larry Wall.

Perl adalah bahasa interpreter sekaligus kompiler, artinya Perl akan mendeteksi setiap baris untuk mencari syntax error sebelum program dijalankan.

2. Arsitektur












3. Konsep
#Variabel di Perl
• Perl memiliki tiga tipe data: skalar, array, dan hash.
• Skalar menyimpan nilai tunggal, array menyimpan kumpulan skalar dengan urutan tertentu, sedangkan hash menyimpan kumpulan skalar berpasangan.
• Sebuah variabel dinyatakan dengan tanda awalan tertentu yang merujuk pada tipe data yang dikandungnya, serta nama yang berfungsi sebagai pengenal.
• Tanda pengenal adalah $ untuk skalar, @ untuk array, dan % untuk hash.
• Nama variabel terdiri atas huruf dan angka, disebut juga alfanumerik (karakter “_” dihitung sebagai huruf).
• Nama variabel tidak boleh dimulai dengan angka.
• Tidak ada ketentuan mengikat mengenai berapa panjang nama variabel yang boleh digunakan.

1. Skalar
Variabel skalar menyimpan unit data yang paling mendasar. Apa yang dikandung skalar, itu jugalah yang bisa dikandung oleh array dan hash. Sebuah skalar hanya mengandung string atau angka. Ini juga berarti bahwa semua informasi—dari manapun asalnya—akan diperlakukan sebagai string atau angka. String dikutip menggunakan kutip ganda atau kutip tunggal. Angka bisa berupa bilangan bulat, oktal, heksadesimal, maupun pecahan desimal.
$nama = ‘hasan’;
$_nama2 = $nama . ‘t’; # hasant
$tahun = 2001;
$satu_dollar = 8500.43;
$dua_tahun_lalu = $tahun - 2; # 1999
Untuk memasukkan kutip tunggal dalam string yang dikutip tunggal digunakan \ (garis miring terbalik) di depannya. Begitupun untuk memasukkan kutip ganda dalam string yang dikutip ganda. Dan untuk memasukkan \ itu sendiri, tambahkan \ satu lagi. Ini disebut meng-escape character.
$putih = ‘#FFFFFF’;
$body = “”;
$dialog = ‘”Dia t\’lah pergi,” katanya’;

2. Array
Array didefinisikan dengan memasukkan elemen-elemennya ke dalam tanda kurung dan dipisahkan dengan , (koma). Koma tidak wajib diletakkan pada elemen terakhir. Di Perl, ini sebenarnya sebuah konstruksi data yang disebut list.
@minuman = (’kopi’, ‘teh’, ‘air’);
Kadang-kadang kedua istilah ini, array dan list, bisa dipertukarkan, dan memiliki makna yang sama. Namun, harus disadari bahwa keduanya tetap berbeda secara logik. Array adalah jenis variabel, sementara list adalah konstruksi data. Dalam pengertian singkat, bisa dikatakan bahwa array adalah list yang bernama. Semua array berisi list, tapi tidak semua list berupa array. Dengan pengertian ini kita bisa mendefinisikan sekumpulan variabel skalar dalam list.
($satu, $dua, $tiga) = (1, 2, 3);
Elemen array diakses dengan sintaks $array[0], angka di dalam “[]” menujukkan indeks elemen dimulai dari 0, yang berarti elemen pertama. Indeks negatif (dimulai dari -1) menghitung elemen dari belakang.
$minuman[0] # berisi “kopi”
$minuman[2] # berisi “air”
$minuman[-1] # sama, berisi air
Jika kebetulan semua elemen array tidak ada yang mengandung spasi, maka kita bisa mendefinisikan sebuah array tanpa menggunakan tanda kutip dan koma. Sebagai gantinya kita menggunakan operator qw().
@minuman = qw(kopi teh air);

3. Hash
Definisi hash mirip dengan array. Setiap elemen hash terdiri atas pasangan indeks (key) dan nilai (value). Berbeda dengan array, indeks di hash menggunakan string, dan nilainya bisa diakses dengan sintaks $hash{’indeks’}.
%aplikasi = (
‘bahasa’, ‘perl’,
’server’, ‘apache’,
‘teks’, ‘vim’,
);
print $aplikasi{’bahasa’}; # perl
Indeks yang mengandung karakter sederhana tidak perlu dikutip karena otomatis dianggap sebagai string. Namun jika indeks mengandung karakter selain huruf dan angka, kutip harus digunakan. Hal ini juga berlaku ketika mengakses elemen. Jadi, $aplikasi{’bahasa’} bisa ditulis sebagai $aplikasi{bahasa}.
Benar dan Salah. Kadang-kadang Anda tidak ingin mengetahui nilai kembalian dari sebuah ekspresi, baik string maupun angka, Anda hanya ingin tahu benar atau salah. Perl tidak punya jenis data boolean khusus. Nilai sebuah ekspresi adalah salah satu dari: tak terdefinisi (undefined), benar (true), atau, salah (false). Untuk memudahkan urusan, selanjutnya saya akan menyebut “tak terdefinisi” dengan “undef”. Aturan Perl sederhana, semua nilai benar, kecuali yang undef, string kosong (“” atau ‘’), angka 0, dan string “0″.

4. Struktur

PERL – Header HTTP
Karena kita sedang bekerja dalam Web. Kita harus mengenal HTTP. Sehingga PERL dapat dikerjakan di Web. Untuk itu perlu digunakan kode-kode agar dapat memanggilnya di HTTP.Contoh :
firstscript.pl:
#!/usr/bin/perl

print "content-type: text/html \n\n";


Sampai saat ini yang telah sibuat adalah baris perl Intrepeter . Baris untuk pengenalan di HTTP agar dapat mengerjakan PERL dalam PERL juga sudah di buat.

PERL - Hello, PERL! Script
Setelah membuat kedua baris dia atas. Barulah teks dapat di cetak di Web.
helloperl.pl:
#!/usr/bin/perl

print "content-type: text/html \n\n";

print "Hello, PERL!";

Maka hasil nya adalah Hello, PERL! Di dalam Web. Langsung dan sederhana.


PERL – Syntak
PERL meggunakan sintak yang sangat spesifik yang sangat penting untuk menghindari kesalahan atau kegagalan delam men-debugging kode-kode.

PERL Nama File
Skrip perl dapat dibuat dalam program teks editor yang sederhana. Ada beberapa program yang tersedia untuk tiap-tiap jenis platform. Ada banyak program yang dirancang untuk para programer yang dapat di download dalam Web.
Dengan mengabaikan program yang telah dipilih, file perl harus di beri nama dengan a.pl (.PL) agar dikenali sebagai skrip dalam PERL. Nama file bisa dengan angka, lambang, dengan catatan tidak menggunakan space/spasi. Gunakan garis bawah sebagai pegganti space/spasi.

Contoh PERL:
my1stPERLscrtip.pl
1st_PERLscript.pl

PERL - Komentar
Seperti bahasa program lainnya, PERL menawarkan penulisan komentar dengan tanda #. Apapun termasuk kata, spasi, lambang, angka akan diabaikan oleh program. Program yang baik selalu memberikan tempat untuk komentar yang dapat membantu dalam penjelasan program yang dibuat, ini merupakan cara yang baik agar kode atau skrip yang dibuat dapat di mengerti orang. Komentar sangat penting jika ingin menunjukkan kepada orang banyak.

PERL Comment:
#!/usr/bin/perl

print "Content-type: text/html \n\n"; # the header
#########################################
#Comments start with a #
#########################################

Contoh diatas mungkin sering dilihat ketika mendownload dari web.

PERL – Skrip pertama
Program pertama kita adalah untuk mencetak “Hello, World!”, walaupun sangat sederhana tapi bagus untuk permulaan. Buat kode dan document teks baru dengan teks editor kemudian di simpan dengan nama a.pl. Perhatikan sejak kita meggunakan/menjalankan program dalam Web browser dan jangan lupa tambahkan “header” agar dapat diketahui kita menggunakan Web.

:
#!/usr/bin/perl

Suatu header harus terdapat di dalam skrip PERL sebagai ciri modul yang digunakan untuk keseluruhan skrip. Sejak kita menfokuskan ke aplikasi Web PERL. Header tersebut tidak akan berubah dalam tutorial ini, kecual kita menggunakan modul CGI nantinya.

PERL Header:
#!/usr/bin/perl

print "Content-type: text/html \n\n"; # ini adalah header untuk aplikasi web

Header harus diikuti dengan karakter (\n).yang merupakan syaratnya

PERL Code:
#!/usr/bin/perl

print "Content-type: text/html \n\n"; # the header
print "Hello, World!";

Display:
helloworld.pl
________________________________________

Hello, World!

Skrip yang dibuat akan ditampilkan dalam dokumen HTML, dengan demikian kita juga dapat membuat kode HTML di dalam PERL
Perlu diingat yang tidak kalah pentingnya adalah untuk Men-CHMOD program perl yang sudah dibuat dengan 755 yang memberikan akses kepada semua user untuk menjalankan dan membaca program.

PERL – Karakter Escaping
Dalam PERL kita menggunakan backslash untuk karakter spesial. Karakter escape digunakan jika kita memakai lambang dollar ($) tanda (@) dan tanda petik (’).Lambang dollar dapat diartikan sebagai variabel sedangkan tanda @ diartikan sebagai array. Untuk itu digunakan tanda backslash untuk mencetak karakter ini.

Kode PERL:
#!/usr/bin/perl

print "Content-type: text/html \n\n"; # the header
$string = "David paid \$4.34 for Larry\'s shirt.";
$email = "youremail\@youremail.com";
print "$string
";
print "$email
";
print '$string and $email';
Display:
escape.pl
________________________________________

David paid $4.34 for Larry's shirt.
youremail@youremail.com
$string and $email

5. Cara Running
Saat nya megupload program.pl kedalam Web server dan menjalankannya. Setelah mengupload pastikan untuk hak akses user dapat melakukan eksekusi untuk memberikan hak akses guakan perintah chmod program biasanya dengan 755.

PERL - Debugging Program
Jika menggunakn FTP untuk mengupload program harus disertai dengan ASCII. Gunanya agar tidak terdapat karakter aneh akibat meng-Copi ke system operasi yang berbeda.Teknik lain yang tak kalah hebatnya adalah mengisolasi kode yang sedang digunakan.Dapat di lakukan dengan megisolasi bagian yang Error saja.


















6. Contoh Program

































Translate

Mengapa saya memerlukan skrip CGI sih?
CGI merupakan singkatan dari "Common Gateway Interface 'dan cukup sederhana adalah cara untuk mengambil informasi dari satu lokasi (seperti situs web Anda) dan memasukkan ke dalam yang lain (seperti email Anda) dengan beberapa aturan dan tugas-tugas di sepanjang jalan.
Seorang pengunjung tiba pada website anda menempatkan beberapa data ke dalam bentuk dan menyentuh tombol kirim, CGI Script akan mengambil data dan melakukan apa yang Anda minta dengan itu dan kemudian mengirim pengunjung di mana Anda ingin mereka pergi.
Skrip CGI akan menggunakan Perl di server web Anda. Script CGI mengirimkan permintaan ke Perl Software yang melakukan semua pekerjaan.
Jadi, Anda memiliki permintaan halaman web seperti formulir atau counter, ia akan mengirimkan data atau untuk meminta Anda Script CGI Perl Software akan digunakan untuk mengikuti petunjuk dalam CGI Script.

Download script pengujian dan membukanya
Sekarang download file test.zip kami format WinZip komputer Anda, unzip script dan meletakkan file pada tempat Anda dapat menemukannya.
Jadi, Anda sekarang memiliki sebuah file yang bernama test.cgi jangan pernah buka file ini dengan menggunakan perangkat lunak apapun selain NotePad, untuk memastikan yang tidak NotePad WordPad atau Word dan sebagian besar tidak jelas FrontPage. Pada beberapa server UNIX naskah anda harus dalam format UNIX, download sebuah teks editor seperti Notepad + + dan kemudian menyimpan naskah dalam format UNIX.
Jika Anda tidak sengaja membuka file dalam sesuatu selain NotePad silakan menghapus file dan unzip lagi.
Apa masalah besar dengan cara Anda membuka file? CGI script berisi format yang terlihat oleh Anda dan saya, tetapi yang diperlukan untuk menjalankan skrip. Buka di dalam perangkat lunak yang salah, bahkan jika Anda tidak mengubah apa pun akan menyebabkan script untuk berhenti bekerja.
Sekarang menggunakan script NotePad terbuka, klik [file] lalu [terbuka] mengubah [file jenis] untuk [semua file] menemukan dan membuka script.

Menemukan Jalan Untuk Perl
Sekarang anda perlu mengubah baris pertama script Anda untuk mencari jalan untuk Perl, ini adalah software pada server web Anda bahwa script yang akan mengirimkan informasi tersebut kepada.
Perusahaan hosting Anda akan memberi tahu Anda apa yang Path Untuk Perl adalah, yang paling umum tercantum di bawah ini jika Anda memiliki hosting UNIX.

#! / usr / bin / perl
#! / usr / local / bin / perl
#! / usr / sbin / perl
#! / usr / lib / perl

Jika Anda memiliki Windows hosting maka hal-hal yang bisa mendapatkan sedikit rumit, kebanyakan skrip CGI telah ditulis untuk UNIX server. Hampir semua web hosting di server UNIX. Pada banyak Windows hosting server Anda tidak memerlukan Path Untuk Perl sama sekali dan Anda bisa menghapus garis script, jika anda menemukan Anda membutuhkannya maka akan terlihat seperti ini c: \ perl \ bin \perl.exe lagi host Anda akan membiarkan Anda tahu apa itu.
Oke, jadi Anda telah mengubah baris pertama script dan file disimpan.

Contoh Program Enkapsulasi


import java.text.DecimalFormat;
public class DemoEnkapsulasi
{
public static void main(String[]args)
{
DecimalFormat digitPosisi=new DecimalFormat();
System.out.println("\nDemo Enkapsulasi");
HitungGaji bony=new HitungGaji();
bony.setGaji(250000000);
bony.hitungGaji();
System.out.println("Informasi Gaji Pegawai:");
System.out.println("\nBesar Gaji kotor : "+digitPosisi.format(bony.getgajiKotor()));
System.out.println("\nBesar Gaji yang dibawa pulang : "+digitPosisi.format(bony.getgajiBersih()));
}
}
class HitungGaji
{
private double gajiKotor,gajiSetelahPajak;
public double gajiBersih;
private double potongan=75000000;
public void setGaji(double gaji)
{
gajiKotor=gaji;
}
private void hitungGaji()
{
return gajiSetelahPajak=gajiKotor-(0.2/gajiKotor);
return gajiBersih=gajiSetelahPajak-potongan;
}
public double getgajiKotor()
{
return gajiKotor;
}
public double getgajiBersih()
{
return gajiBersih;
}

public double gethitungGaji()
{
return hitungGaji();
}

}


Output :

Kamis, 29 Desember 2011

contoh gui java teks berjalan


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class Kanvas extends Canvas
{
private int x;
private int y;
private int dx;
private int dy;
{
x=10;
y=30;
dx=5;
dy=5;
setBackground( Color.green);
}
public void paint (Graphics g)
{
g.setColor( Color.red);
g.setFont(new Font("bisa",Font.BOLD,14));
g.drawString("ini adalah tulisan yang bergerak dari kiri ke kanan",x,y);
g.setColor(Color.BLACK);
g.setColor (Color.black);
}
public void ubahX(int xx)
{
x=xx;
}
public int nilaiX()
{
return(x);
}
public void ubahY(int yy)
{
y=yy;
}
public int nilaiY()
{
return(y);
}
}
class frame extends JFrame implements ActionListener
{
private Kanvas kanvas = new Kanvas();
private JPanel paneltombol = new JPanel();
private JLabel arah=new JLabel(">>");
private boolean mlaku=false;
private int jalan=1;
private int arahbenda=2;

frame()
{
super("ANIMASI_VINSENT");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(550,150);
setSize(550,150);
arah.setFont(new Font ("Arial Narrow",Font.BOLD,15));
arah.setHorizontalAlignment(JLabel.CENTER);
paneltombol.setLayout(new GridLayout(1,3));
getContentPane().setLayout(new BorderLayout());
getContentPane().add(kanvas,BorderLayout.CENTER);
getContentPane().add(paneltombol,BorderLayout.SOUTH);
getContentPane().add(paneltombol,BorderLayout.NORTH);

show();
while(mlaku=true)
{
if(kanvas.nilaiX()>=kanvas.getWidth()-5)
arahbenda=-1;
else if(kanvas.nilaiX()<=0)
arahbenda=1;
if (arahbenda==1)
{
kanvas.ubahX(kanvas.nilaiX()+5);
arah.setText(">>");
}
else
{
kanvas.ubahX(kanvas.nilaiX()-5);
arah.setText("<<");
}
kanvas.repaint();
try
{
Thread.sleep(50);
}
catch(Exception e)
{
}
}

}
}
public void actionPerformed(ActionEvent e)
{
Object objek= e.getSource();
mlaku=true;
}
}
class ANIMMMASI
{
public static void main(String [] args)
{
new frame();
}
}

Output :

kp bab 4

4.1 SISTEM PRODUKSI

Dalam materi Sistem Produksi perlu didukung oleh teori-teori lain:
1. Ekonomi Teknik
2. Analisa Break Event Point (BEP)
3. Ekonomi Produksi
4. Biaya-biaya dalam proses manufaktur
5. Harga produk dan Harga Pokok Penjualan

4.1.1 Ekonomi Teknik
Analisa Ekonomi Teknik adalah kumpulan metode yang digunakan untuk menganalisa alternatif-alternatif mana yang harus dipilih secara sistematis sesuai dengan kondisi-kondisi tertentu. Pengertian dasar ekonomi yang banyak digunakan adalah aliran kas, pengaruh terhadap nilai uang, ekuivalen, suku bunga majemuk, suku bunga nominal dan efektif jika inflasi diperhitungkan maka analisa harus dilakukan dalam daya beli tetap.

4.1.2 Analisa Break Event Point (BEP)
Analisa ini biasanya digunakan untuk memperkirakan berapa minimal perusahaan harus bisa menghasilkan dan menjual produknya agar tidak menderita rugi atau sering juga dikatakan bahwa perusahaan yang Break Event adalah perusahaan yang memperoleh laba = Rp 0,00
Untuk bisa menggunakan analisa ini, diperlukan beberapa persyaratan, antara lain :
1. Biaya bisa dibagi menjadi Biaya Tetap dan Biaya Variabel
2. Perusahaan hanya menjual satu jenis produk saja. Kalaupun perusahaan menghasilkan lebih dari satu jenis produk, komposisi produk-produk ini dianggap tetap.
3. Unit yang dihasilkan adalah sama dengan unit yang dijual
Break Event Point (BEP) adalah suatu titik yang menyatakan atau menggambarkan besarnya Total biaya sama dengan Total pendapatan
Hal ini dapat ditulis dengan perhitungan sebagai berikut :
TC = TR
FC + VC = TR
TC = FC + VC
FC + cX = pX



Dimana : TC : Total biaya (Total Cost)
TR : Total pendapatan (Total Revenue)
FC : Biaya tetap (Fixed Cost)
VC : Biaya variabel (Variable Cost)
c : Biaya/unit
X : Output (Variable Output)
p : Harga jual/unit (price/unit)

Jadi dengan BEP, suatu perusahaan dapat memproduksi suatu produk sebanyak X unit dimana jika X diatas titik BEP maka perusahaan akan mengalami keuntungan. Sedangkan X dibawah titik BEP perusahaan akan mengalami kerugian.

Cost BEP
Daerah untung



Daerah rugi

X Volume Produksi
Grafik : BEP
Pada perusahaan BEP digunakan untuk menganalisa berbagai permasalahan menyangkut biaya produksi. Permasalahan yang dapat dianalisa dan diberi solusi yang menguntungkan antara lain adalah untuk mencari output minimum dimana perusahaan sudah mendapat profit, menentukan investasi, untuk menentukan apakah perusahaan lebih mendapat untung dengan membeli material atau memproduksi sendiri.
4.1.3 Ekonomi Produksi
Ekonomi Produksi merupakan manajemen perekonomian yang ada dalam pembuatan suatu produk pada sistem produksi yang bertujuan untuk :
1. Menemukan variabel-variabel biaya yang berpengaruh dalam proses produksi
2. Mencari dan memecahkan masalah biaya-biaya proses produksi dalam pembuatan suatu produk
3. Menetukan jumlah minimal suatu porduk
4. Mengetahui laba atau rugi suatu produk tersebut diproduksi

4.1.4 Biaya-biaya dalam Proses Manufaktur
Biaya-biaya yang ada dalam proses manufaktur terdiri dari :
Biaya Tetap (Fixed Cost) dan Biaya Tidak Tetap (Variabel Cost)
• Biaya-biaya tetap (fixed cost) yaitu biaya-biaya yang besarnya tidak dipengaruhi oleh volume produksi. Beberapa macam biaya yang termasuk biaya-biaya tetap adalah biaya gedung, biaya tanah, biaya mesin dan biaya peralatan, dll.
• Biaya variabel (variable cost) yaitu biaya-biaya yang besarnya tergantung (biasanya secara linier) terhadap volume produksi. Biaya-biaya yang tergolong biaya variabel diantaranya adalah biaya bahan baku dan biaya tenaga kerja langsung, dll.
• Biaya total (total cost) adalah jumlah dari biaya tetap dan biaya variabel.
Bila digambar dalam grafik maka biaya-biaya tersebut terlihat seperti dibawah ini :


biaya biaya biaya
variabel cost total cost
fixed cost fixed cost


volume produksi volume produksi volume produksi
Gambar 2.1: Analisa Biaya Produksi
Biaya Awal dan Biaya Operasi
• Biaya Awal adalah semua biaya yang dikeluarkan sebelum proses porduksi berlangsung. Sebagai contoh : Biaya Pembelian tanah, Biaya Pembelian Mesin, dll.
• Biaya Operasi adalah biaya yang dikeluarkan secara periodik untuk operasi proses yang ada. Sebagai contoh : Biaya Pemeliharaan umum, Biaya Fasilitas.

Biaya Langsung dan Biaya Tidak Langsung
• Biaya Langsung adalah Biaya yang dapat diidentifikasikan dan dihitung berdasarkan proses dari produk yang dihasilkan.
• Biaya Tidak Langsung adalah Biaya yang tidak dapat dihitung secara langsung berdasarkan proses dari produk yang dihasilkan.

4.1.5. Harga Pokok Produksi dan Harga Pokok Penjualan
Harga Pokok Produksi adalah Harga yang dimasukkan dalam produksi selama periode berjalan. Harga Pokok Produksi terdiri dari Biaya bahan baku, Biaya Tenaga kerja langsung, Biaya Overhead pabrik. Sedangkan Harga Pokok Penjualan adalah Biaya yang dihasilkan dari produk yang telah dijual. Harga Pokok Penjualan berasal dari Harga Pokok Produksi ditambah dengan prosentase laba dari Harga Pokok Produksi.
Bilamana biaya produksi atau biaya manufactur per unit produk ingin diketahui maka dapat diperoleh dengan formulasi :
HPP =
Dimana : HPP = Biaya produksi per unit
Tc = Total biaya produksi
Q = Jumlah / volume produksi yang dihasilkan.




Jika biaya produksi per unit diketahui maka kita dapat menetapkan harga jual sesuai dengan keuntungan yang kita inginkan dan diformulasikan sebagai berikut :
HP = HPP + (HPP x % keuntungan)
Dimana : HP = Harga jual produk per unit
HPP = Biaya produksi per unit
% = Prosentase keuntungan yang diinginkan
Dari perhitungan yang ada akan diketahui nilai sekarang atau pendapatan bersihnya (NPV).











4.2 Pengumpulan Data
Dari hasil pengamatan yang telah kami lakukan terhadap permintaan jenis tinta,adapun batasan – batasan yang harus dilakukan oleh PT SINAR SYNO KIMIA antara lain:
1. PT SINAR SYNO KIMIA ( cabang ) harus membeli bahan baku yang dikirim oleh perusahaan pusat. Hal itu terjadi karena perusahaan pusat harus membeli bahan baku tinta dari perusahaan laen atau dari pihak luar.
2. Semua penjualan tinta yang ada di PT SINAR SYNO KIMIA ( cabang ) harus dikirim kembali ke perusahaan pusat. Setalah itu baru perusahaan pusat mendistribusikan uang tersebut untuk memperlancar proses produksi seperti gaji pekerja, pembelian bahan baku, pembayaran listrik, dll.
3. PT SINAR SYNO KIMIA ( cabang ) didirikan untuk memenuhi kebutuhan tinta PT. DJIWI KIMIA. Tbk.
4. Biaya listrik, biaya telp, biaya air, biaya transportasi masuk dalam biaya variabel karena biaya tersebut tergantung atas biaya pemakaianya.
Sedangkan untuk biaya – biaya yang terdapat di dalamnya sebagai berikut :

4.2.1 Biaya Variabel
Yang terdapat dalam biaya variabel di dalam PT SINAR SYNO KIMIA antara lain:
 Biaya bahan baku
1. Tinta garis buku
2. Tinta amplop
3. Wrapping Ink
4. Cartoon Box Ink

 Biaya bahan baku tiap pada bulan tinta garis buku
No. Jenis bahan baku Banyak(kg) Harga/kg Jumlah
1 Medium R/L 8000 Rp 20.000 Rp 160.000.000
2 DEG (solven) 3000 Rp 15.000 Rp 45.000.000
3 Defoamer 3000 Rp 30.000 Rp 90.000.000
4 Warna dasar 4000 Rp 30.000 Rp 120.000.000
5 sulvinol 2000 Rp 20.000 Rp 40.000.000
Rp 455.000.000

 Biaya bahan baku tiap pada ulantinta amplop
No. Jenis bahan baku Banyak(kg) Harga/kg Jumlah
1 Medium R/L 9000 Rp 20.000 Rp 180.000.000
2 DEG (solven) 2000 Rp 15.000 Rp 30.000.000
3 Defoamer 2000 Rp 30.000 Rp 60.000.000
4 Warna dasar 5000 Rp 30.000 Rp 150.000.000
5 sulvinol 1000 Rp 20.000 Rp 20.000.000
Rp 440.000.000


 Biaya bahan baku tiap bulan pada tinta wrapping ink
No. Jenis bahan baku Banyak(kg) Harga/kg Jumlah
1 Medium R/L 9000 Rp 20.000 Rp 180.000.000
2 DEG (solven) 3000 Rp 15.000 Rp 45.000.000
3 Defoamer 1500 Rp 30.000 Rp 45.000.000
4 Warna dasar 3000 Rp 30.000 Rp 90.000.000
5 sulvinol 1500 Rp 20.000 Rp 30.000.000
Rp 390.000.000


 Biaya bahan baku tiap bulan pada tinta carton box ink
No. Jenis bahan baku Banyak(kg) Harga/kg Jumlah
1 Medium R/L 9000 Rp 20.000 Rp 180.000.000
2 DEG (solven) 2000 Rp 15.000 Rp 30.000.000
3 Defoamer 2000 Rp 30.000 Rp 60.000.000
4 Warna dasar 4000 Rp 30.000 Rp 120.000.000
5 sulvinol 1000 Rp 20.000 Rp 20.000.000
Rp 410.000.000

 Dari perhitungan diatas, diketahui bahwa biaya bahan baku untuk pembuatan tinta dalam satu bulan antara lain :
1. Tinta garis buku sebesar Rp 455.000.000
2. Tinta amplop sebesar Rp 440.000.000
3. Wrapping Ink sebesar Rp 390.000.000
4. Cartoon Box Ink sebesar Rp 410.000.000
Sehingga untuk biaya keseluruhan bahan baku yang harus di keluarkan oleh perusahaan PT. SINAR SYNO KIMIA untuk setiap bulannya adalah Rp. 1.695.000.000,00 .
Sedangkan untuk menyamakan perhitungan semua biaya di hitung dalam satu tahun, sehingga biaya bahan baku tiap tahunnya sebesar Rp. 1.695.000.000 x 12 bulan = Rp. 20.340.000.000,00 yang harus dikeluarkan perusahaan PT. SINAR SYNO KIMIA.
 Biaya tenaga kerja
Di bagi menjadi menjadi 2 macam antara lain :
• Tim tenaga kerja Implant sebanyak 9 orang
 Untuk gaji over time (lembur) 30% dari gaji pokok
Untuk tiap bulan @ Rp. 334.500,00 x 12 bulan = Rp. 4.014.000,00
 Tunjangan hari raya keagamaan @ Rp. 1.500.000,00
Rp. 1.500.000,00 x 9 orang = Rp. 13.500.000,00
 Tunjangan bonus akhir tahun @ Rp 1.115.000,00
Rp 1.115.000,00 x 9 orang = Rp. 10.035.000,00

 Tunjangan Jamsostek dan kesehatan tiap tahunnya 80% gaji pokok
Untuk @ Rp 892.000,00 x 9 orang = Rp.8.028.000,00

• Tim tenaga kerja Reguler sebanyak 11 orang
 Tunjangan hari raya keagamaan @ Rp. 1.500.000,00
Rp. 1.500.000,00 x 11 orang = Rp. 16.500.000,00
 Tunjangan bonus akhir tahun @ Rp 1.115.000,00
Rp 1.115.000,00 x 11 orang = Rp. 12.265.000,00
 Tunjangan Jamsostek dan kesehatan tiap tahunnya 80% gaji pokok
 Untuk @ Rp 892.000,00 x 11 orang = Rp. 9.812.000,00
 Didalam tim reguler tidak ada jam lembur (over time)

 Listrik per bulan Rp. 400.000,00
Untuk setahun 12 x Rp. 400.000,00 = Rp. 4.800.000,00
 Air untuk per bulan Rp. 100.000,00
Untuk setahun 12 x Rp. 100.000,00 = Rp. 1.200.000,00
 Telp per bulan Rp. 400.000,00
Untuk setahun 12 x Rp. 400.000,00 = Rp. 4.800.000,00
 Transpotasi per bulan Rp. 500.000,00 ,jadi untuk 1 tahun adalah Rp. 500.000,00 x 12 = Rp. 6.000.000,00

4.2.2 Biaya Tetap
 Sewa rumah
Untuk 1 tahun Rp 3.000.000,00
 Tenaga kerja cuci drum
Untuk tiap minggu sebanyak 300 drum, @ Rp. 1.000 = 300 x 1.000
= Rp. 300.000,00
Jadi sebulan = Rp. 300.000,00 x 4 = Rp. 1.200.000,00
Setahun = Rp. 1.200.000,00 x 12 = Rp. 14.400.000,00
 Biaya perawatan (maintenance)
 Untuk mobil : oli mesin dan servis per bulan = Rp. 300.000,00
Rp. 300.000,00 x 12 = Rp 3.600.000,00
 Untuk mesin produksi : Rp. 100.000,00
Rp. 100.000,00 x 12 = Rp. 1.200.000,00


 Gaji pokok tenaga kerja
Untuk gaji tiap karyawan baik implant maupun reguler mendapatkan gaji pokok yang sama yaitu sebesar @ Rp 1.115.000,00.
Untuk karyawan implan dan reguler sebanyak 20 orang
= Rp. 1.115.000,00 x 20 orang = Rp. 22.300.000,00

4.3 Perhitungan biaya
 Diketahui :
- Semuanya dihitung dalam satu tahun.
- Biaya bahan baku Rp. 20.340.000.000,00
- Gaji over time ( lembur ) Rp. 4.014.000,00 x 9 orang = Rp. 36.126.000,00
- Tunjangan hari raya keagamaan = Rp. 13.500.000,00 + Rp. 16.500.000,00 = Rp. 30.000.000,00
- Tunjangan bonus akhir tahun = Rp. 10.035.000,00 + Rp. 12.265.000,00 = Rp. 22.300.000,00
- Tunjangan Jamsostek dan kesehatan = Rp.8.028.000,00 + Rp. 9.812.000,00 = Rp. 17.840.000,00
- Biaya listrik = Rp. 4.800.000,00
- Biaya telp = Rp. 4.800.000,00
- Biaya air = Rp. 1.200.000,00
- Biaya transportasi = Rp. 6.000.000,00
- Biaya sewa rumah = Rp. 3.000.000,00
- Tenaga kerja cuci drum = Rp. 14.400.000,00
- Biaya perawatan mobil + mesin = Rp 3.600.000,00 + Rp. 1.200.000,00 = Rp. 4.800.000,00
- Gaji pokok tenaga kerja baik implant maupun reguler = Rp. 22.300.000,00


Ditanya : Total Biaya
Jawab :

Biaya Tetap (Fixed Cost)
- Biaya bahan baku Rp. 20.340.000.000,00
- Gaji over time ( lembur ) Rp. 36.126.000,00
- Tunjangan hari raya keagamaan Rp. 30.000.000,00
- Tunjangan bonus akhir tahun Rp. 22.300.000,00
- Tunjangan Jamsostek dan kesehatan Rp. 17.840.000,00
- Biaya listrik Rp. 4.800.000,00
- Biaya telp Rp. 4.800.000,00
- Biaya air Rp. 1.200.000,00
- Biaya transportasi Rp. 6.000.000,00 +
TOTAL Rp. 20.458.266.000,00

Biaya Variabel
- Biaya sewa rumah Rp. 3.000.000,00
- Tenaga kerja cuci drum Rp. 14.400.000,00
- Biaya perawatan mobil + mesin Rp. 4.800.000,00
- Gaji pokok tenaga kerja implant + reguler Rp. 22.300.000,00 +
TOTAL Rp. 44.500.000,00
TOTAL KESELURUHAN Rp. 20.502.766.000,00






 Diketahui : Total Biaya = Harga Pokok Produksi = Rp. 20.502.766.000,00
Ditanya : Harga Jual Produk
Jawab :
HPP = = Rp. 20.502.766.000,00 / 75000 = Rp. 273.370,23
 Rp. 273.370,00/ unit

Asumsi Keuntungan yg diperoleh adalah 25 % maka:
Harga jual produk = HPP + (HPP x 25 %)
= R Rp. 273.370,00+ (Rp. 273.370,00x 25 %)
= Rp.341.712,5/unit  Rp. 341.712,00 / unit

Pendapatan = Harga jual x Q
= Rp. 341.712,00 x 75000 = Rp. 25.628.400.000,00 / bulan


 Diketahui : Fixed Cost =Rp. 20.458.266.000,00
Variable Cost = Rp. 44.500.000,00
Harga jual produk = Rp. 341.712,00 /unit

Ditanya : Jumlah Produk yang dibuat untuk mencapai titik BEP
Jawab :



BEP =
= Rp 102.291.330.000,0





 Grafik Analisa BEP

Biaya

Untung VC

Rugi TC

Rp.102.291.330.000,00



Rp.20.458.266.000,00 FC



VL
463 unit
Gambar 4.. Break Event Point dalam waktu 1 tahun

Keterangan gambar :
• VL : Volume Produksi
• FC : Fixed Cost (biaya tetap)
• TC : Total Cost (biaya total)
• VC : Variabel Cost (biaya variabel)