Home about IT Motivation Course Sales Project About Me

Tuesday, December 08, 2009

C++: Class dan operator overloading untuk vector 2D

Berikut penggunaan Class dan operator overloading untuk perhitungan vector 2 dimensi dengan bahasa pemrograman C++.

mengenai apa dan bagaimana teori vector, silakan liat di sini

Vector yang dimksud adalah vector 2 dimensi yang mempunyai komponen bilangan real dan imaginer yaitu: misal vector a = 6i + 8j dan vector b = 2i + 3j. Untuk vector 3 dimensi, akan mempunyai tambahan komponen k.

menggunakan library complex.h karena vektor memakai bilangan komplex, yaitu terdiri dari bilangan riil dan bilangan imaginer untuk perhitungannya. Pastikan di complailer C++ anda tersedia file complex.h. Bisa saja tidak memakai library tapi pada program, kita tambahkan program pengganti dari library complex.h tadi yaitu untuk hitung bilangan riil dan imaginer. Vector tidak diinput tapi langsung dituliskan pada program. Bila ingin diinput silakan dimodify programnya, begitu juga bila ingin perhitungan +, - dan * ingin dibuat model selection.

:::berikut programnya:::

#include<string>
#include<complex>
#include<iostream>

// forward declaration
template <typename T>
class Vector;

template <typename T> std::ostream& operator<<(std::ostream&, const Vector<T>&);

template <typename T>
class Vector
{
private:
std::complex<T> mycomplex;

public:
Vector() {}
Vector(T i_component, T j_component) : mycomplex(i_component, j_component) {}

// member operators
Vector& operator+=(const Vector& rhs)
{
mycomplex+=rhs.mycomplex;
return *this;
}

Vector& operator-=(const Vector& rhs)
{
mycomplex-=rhs.mycomplex;
return *this;
}

Vector& operator*=(const Vector& rhs)
{
mycomplex*=rhs.mycomplex;
return *this;
}



friend std::ostream& operator<< <T>(std::ostream&, const Vector<T>&);
};

template <typename T>
const Vector<T> operator+(const Vector<T>& lhs, const Vector<T>& rhs)
{
return Vector<T>(lhs)+=rhs;
}

template <typename T>
const Vector<T> operator-(const Vector<T>& lhs, const Vector<T>& rhs)
{
return Vector<T>(lhs)-=rhs;
}

template <typename T>
const Vector<T> operator*(const Vector<T>& lhs, const Vector<T>& rhs)
{
return Vector<T>(lhs)*=rhs;
}


template <typename T>
std::ostream& operator<<(std::ostream& ostr, const Vector<T>& vect)
{
ostr << "i component : " << vect.mycomplex.real() << "\n";
ostr << "j component : " << vect.mycomplex.imag() << "\n";
return ostr;
}


int main()
{
Vector<double> x_vector(1, 10);
Vector<double> y_vector(2, 20);
Vector<double> z_vector(3, 30);

std::cout << "vector x : \n" << x_vector;
std::cout << "vector y : \n" << y_vector;
std::cout << "vector z : \n" << z_vector;

std::cout << "Hasil penjumlah vector xyz : \n" << (x_vector+y_vector+z_vector);
std::cout << "Hasil pengurangan vector xyz : \n" << (x_vector-y_vector-z_vector);
std::cout << "Hasil perkalian vector xyz : \n" << (x_vector*y_vector*z_vector);
return 0;
}


Besaran Vector

Vector 3 dimensi

vector 2 dimensi \overrightarrow{AB}.

Pada gambar di atas, tampak bahwa vektor satuan i menunjukkan arah sumbu x positif dan vektor satuan j menunjukkan arah sumbu y positif. Kita dapat menyatakan hubungan antara vektor komponen dan komponenya masing-masing, sebagai berikut :

Fx = Fxi

Fy = Fyj

Kita dapat menulis vektor F dalam komponen-komponennya sebagai berikut :

F = Fxi + Fyj

Misalnya terdapat dua vektor, A dan B pada sistem koordinat xy, di mana kedua vektor ini dinyatakan dalam komponen-komponennya, sebagaimana tampak di bawah :

A = Axi + Ayj

B = Bxi + Byj

Bagaimana jika A dan B dijumlahkan ? …

R = A + B

R = (Axi + Ayj) + (Bxi + Byj)

R = (Ax + Bx)i + (Ay + By)j

R = Rxi + Ryj

Apabila tidak semua vektor berada pada bidang xy maka kita bisa menambahkan vektor satuan k, yang menunjukkan arah sumbu z positif.

A = Axi + Ayj + Azk

B = Bxi + Byj + Bzk

Jika vektor A dan B dijumlahkan maka akan diperoleh hasil sebagai berikut :

R = A + B

R = (Axi + Ayj + Azk) + (Bxi + Byj + Bzk)

R = (Ax + Bx)i + (Ay + By)j + (Az + Bz)k

R = Rxi + Ryj + Rzk


Perkalian titik menggunakan komponen vektor satuan

Kita dapat menghitung perkalian skalar secara langsung jika kita mengetahui komponen x, y dan z dari vektor A dan B (vektor yang diketahui).

Untuk melakukan perkalian titik dengan cara ini, terlebih dahulu kita lakukan perkalian titik dari vektor satuan, setelah itu kita nyatakan vektor A dan B dalam komponen-komponennya, menguraikan perkaliannya dan menggunakan perkalian dari vektor-vektor satuannya.

Vektor satuaj i, j dan k saling tegak lurus satu sama lain, sehingga memudahkan kita dalam perhitungan. Menggunakan persamaan perkalian skalar yang telah diturunkan di atas (A.B = AB cos teta) kita peroleh :

i . i = j . j = k . k = (1)(1) cos 0 = 1

i . j = i . k = j . k = (1)(1) cos 90o = 0

Sekarang kita nyatakan vektor A dan B dalam komponen-komponennya, menguraikan perkaliannya dan menggunakan perkalian dari vektor-vektor satuannya.

A . B = Axi . Bxi + Axi . Byj + Axi . Bzk +

Ayj . Bxi + Ayj . Byj + Ayj . Bzk +

Azk . Bxi + Azk . Byj + Azk . Bzk

A . B = AxBx (i . i) + AxBy (i . j) + Ax Bz (i . k) +

AyBx (j . i) + AyBy (j . j) + AyBz (j . k) +

AzBx (k . i) + AzBy (k . j) + AzBz (k . k)


Karena i . i = j . j = k . k = 1 dan i . j = i . k = j . k = 0, maka :

A . B = AxBx (1) + AxBy (0) + Ax Bz (0) +

AyBx (0) + AyBy (1) + AyBz (0) +

AzBx (0) + AzBy (0) + AzBz (1)

A . B = AxBx (1) + 0 + 0 +

0 + AyBy (1) + 0 +

0 + 0 + AzBz (1)

A . B = AxBx + AyBy + AzBz

Berdasarkan hasil perhitungan ini, bisa disimpulkan bahwa perkalian skalar atau perkalian titik dari dua vektor adalah jumlah dari perkalian komponen-komponennya yang sejenis.

Saturday, December 05, 2009

SELECTION dalam bahasa C

adakalanya sebuah instruksi dikerjakan jika kondisi tertentu sudah dipenuhi. Contoh program:
- menentukan letak kuadran suatu titik (x,y) dalam bidang kartesian.
- membaca sebuah bilangan bulat dan menentukan genap/ganjil.
- membaca sebuah karakter dan menentukan vocal / konsonan
- membaca 2 buah bilangan dan menentukan bilangan terbesarnya.
- membaca angka tahun masehi dan menentukan kabisat/ tidak.
- membaca sebuah bilangan dan menentukan bilangan tersebut positif, nol atau negatif.
- membaca temperatur dan menentukan wujud benda dari temperaturnya.
- menentukan index nilai mahasiswa dari angka yang dimasukkan,
- membaca nama kota dan menentukan nama ibukotanya
- membaca suatu angka bulan dan menentukan nama bulannya.
- etc

Ada 3 type kontruksi untuk kontruksi SELECTION:
  1. IF - THEN
  2. IF - THEN - ELSE
  3. NESTED IF (IF THEN ELSE Bersarang)
  4. CASE
berikut penjelasannya:

================================================
IF - THEN (JIKA - MAKA)
================================================
digunakan untuk satu kasus, misal:
- membaca input bilangan dan menentukan statusnya ganjil
- membaca karakter huruf dan menentukan statusnya vocal

bentuk pernyataannya adalah sbb:

if kondisi then
aksi
endif

pernyataan diatas berarti: bahwa aksi hanya akan dilaksanakan bila kondisi bernilai benar (true). bila kondisi bernilai salah (false), tidak ada aksi apapun yang dikerjakan. Kata "endif" sengaja ditambahkan untuk mempertegas awal dan akhir struktur IF-THEN.

Flow untuk satu kasus (IF-THEN) adalah sbb:



::::contoh program 1::::
/* mencetak pesan GENAP */
#include <stdio.h>
int main()
{
int bil;
printf(" ketikkan sembarang bilangan bulat: ");
scanf("%d",&bil);
if (bil%2 == 0)
printf("genap");
/*endif*/
}

dari contoh program diatas
maka jika diinput bilangan bulat genap akan muncul pesan "GENAP"
tapi bila diinput bilangan bulat ganjil tidak akan muncul pesan "GANJIL" atau lainnya.

agar supaya muncul pesan lainnya (kondisi alternatif) jika suatu kondisi tidak terpenuhi,
maka digunakan struktur IF-THEN-ELSE


=====================================
IF - THEN - ELSE (JIKA - MAKA - KALAU TIDAK)
=====================================
- digunakan jika kita perlu memilih melakukan aksi alternatif jika suatu kondisi tidak terpenuhi.
- untuk dua kasus
- Notasi algoritmiknya adalah sbb:

if kondisi then
aksi1
else
aksi2
endif

dari pernyataan diatas berarti bahwa: aksi1 dikerjakan jika kondisi bernilai benar (true),
sebaliknya jika kondisi bernilai salah (false), maka aksi2 akan dilaksanakan.
- flow diagramnya sebagai berikut:



- contoh program antara lain sbb:
- membaca suatu bilangan bulat dan menentukan bilangan tersebut GENAP/GANJIL
- membaca suatu huruf dan menentukan huruf tersebut VOCAL/KONSONAN
- membaca 2 buah bilangan dan menentukan mana yang terbesar.

::: contoh program 2
/*
membaca suatu bilangan bulat
dan menentukan bilangan tersebut ganjil / genap
*/
#include <stdio.h>
int main()
{
int bil;
printf(" ketikkan sembarang bilangan bulat: ");
scanf("%d",&bil);
if (bil%2 == 0)
printf("genap");
else
printf("ganjil");
/*endif*/
}



============================================
NESTED IF (IF - THEN ELSE BERSARANG/ BERTINGKAT)
============================================
- digunakan untuk memecahkan masalah yang mempunyai 3 kasus atau lebih.
- algoritmiknya adalah sbb:

if kondisi1 then
aksi1
else
if kondisi2 then
aksi2
else
if kondisi3 then
aksi3
endif
endif
endif

- Flowchart adalah sbb

- contoh program yang menggunakan ini antara lain:
- membaca bilangan bulat dan menentukan bilangan tersebut +,- atau nol
- menentukan kuadran suatu titik (x,y) dalam bidang kartesius
- menetukan wujud suatu benda: cair, gas, padat



::: contoh program 3

/*
===========================================
program ibukota, dengan input ibukotanya
===========================================
*/
#include<stdio.h>
#include<string.h>

int main ()
{ /* declarasi*/
char ibk[10];
/*algoritma*/
printf(" masukkan nama ibukota di jawa:");scanf("%s",ibk);
if (strcmp(ibk,"serang")==0)
printf("banten \n");
else
if (strcmp(ibk,"jakarta")==0)
printf("DKI jakarta \n");
else
if (strcmp(ibk,"bandung")==0)
printf("jawa barat \n");
else
if (strcmp(ibk,"semarang")==0)
printf("jawa tengah \n");
else
if (strcmp(ibk,"yogyakarta")==0)
printf("DI yogyakarta \n");
else
if (strcmp(ibk,"surabaya")==0)
printf("jawa timur \n");
/*endif*/
/*endif*/
/*endif*/
/*endif*/
/*endif*/
/*endif*/
}

keteranga:
- typedata karakter adalah semua huruf abjad, semua tanda baca , angka dan
kharakter khusus ---> semua yg di keyboard deh.
- nilai konstanta ibukota yaitu ibk bertype string.
sehingga harus menggunakan library "string.h".
- fungsi strcmp digunakan untuk membandingkan kesamaan dua buah string.
Nilai strcmp(s1,s2) sama dengan nol jika s1=s2.
Dan tidak sama dengan nol jika s1 tidaksamadengan s2

====================================
CASE
====================================
- digunakan untuk menyederhanakan penulisan IF-THEN-ELSE yang bertingkat-tingkat
- kontruksi CASE adalah sebagai berikut
case ekspresi
nilai1 : aksi1
nilai2 : aksi2
nilai3 : aksi3
.
.
.
nilai n : aksi n
otherwise : aksi x
endcase

- flow chart CASE sebagai berikut:






:::contoh program 4
/*
==========================
mencetak nama bulan
========================
*/
#include<stdio.h>
int main()
{
/*deklarasi*/
int nomor_bulan;
/*algoritma*/
printf("masukkan angka bulan (1-12);");
scanf("%d",&nomor_bulan);
switch (nomor_bulan)
{
case 1 : printf("Januari \n");break;
case 2 : printf("February \n");break;
case 3 : printf("Maret \n");break;
case 4 : printf("April \n");break;
case 5 : printf("May \n");break;
case 6 : printf("June \n");break;
case 7 : printf("July \n");break;
case 8 : printf("Agustus \n");break;
case 9 : printf("September \n");break;
case 10 : printf("Oktober \n");break;
case 11 : printf("November \n");break;
case 12 : printf("Desember \n");break;
default : printf("bukan bulan yang benar \n");
}
}


:: perhatikan penggunaan BREAK dan bedakan dengan CONTINUE

Statemen break digunakan untuk menghentikan sebuah pengulangan dan program akan langsung meloncat ke statemen yang berada di bawah blok pengulangan. Biasanya ini dilakukan karena alasan efisiensi program, yaitu untuk menghindari proses pengulangan yang sebenarnya sudah tidak diperlukan lagi.

Sedangkan statemen continue digunakan untuk melanjutkan proses pengulangan. Statemen continue menyebabkan proses perulangan kembali ke awal mulainya perulangan dengan mengabaikan statemen-statemen berikutnya setelah statemen continue. Statemen continue dapat digunakan untuk perulangan for, while maupun perulangan do-while.

contoh penggunaan keduanya:

::contoh proram 5

#include<stdio.h>
int main()
{
int a;
while (1) /*true*/
{
printf("masukan bilangan bulat : ");
scanf("%d",&a);
if(a % 2 == 0)
{
int b;
b=a/2;
printf("%d : 2 = %d\n",a);
continue;
}
else if( a % 5 == 0)
{
int c;
c=a/5;
printf("%d : 5 = %d\n",a);
break;
printf("Lanjutkan loop berikutnya : ");
}
printf("akhiri loop\n");
}
}

Friday, December 04, 2009

SEQUENCE dalam bahasa C

Sebuah Algoritma dapat dibangun dari 3 buah FLOW CONTROL kontruksi / struktur dasar . Yaitu:
  1. SEQUENCE (runtunan)
  2. SELECTION (pemilihan)
  3. REPETITION/LOOPING (perulangan).
akan coba kita bahas satu persatu penggunaan nya dalam pemrograman Bahasa C.

===========================================================
SEQUENCE
===========================================================
yaitu
- tiap pernyataan dikerjakan secara berurutan (sequensial) sesuai dengan urutannya
dalam algoritma.
- tiap instruksi tepat dikerjakan tepat sekali.
- akhir dari instruksi terakhir adalah akhir algoritma
- flowchart nya adalah sbb:



contoh penggunaan adalah dalam program :
- menghitung Luas , keliling dan diagonal persegi panjang, lingkaran, dll.
- membaca dua bilangan dan menukar bilangan pertama dengan bilangan kedua.
- mencetak "hello word"
- konversi jam ke menit atau detik dan sebaliknya
- etc

berikut contoh script programnya:

:::contoh 1:::
/* Program mencetak "hello Word" di layar */
#include<stdio.h>
#include<conio.h> /* ini ada karena pemakaian clrscr */
void main()
{
clrscr(); /* gunanya untuk membersihkan layar */
printf( "Aku belajar bahasa C! \n \n");
/* \n untuk set kursor ke baris berikutnya */
}



:::contoh 2:::
/* Program Menghitung Luas dan Keliling Lingkaran */
#include<stdio.h>
#include<conio.h>
#define phi 3.14
int main()
{
float jari,luas,keliling;
clrscr();
printf("Masukan jari-jari lingkaran = ");
scanf("%f", &jari);
luas=phi*jari*jari;
keliling=2*phi*jari;
printf("Luas lingkaran = %f \n",luas);
printf("Keliling lingkaran = %f \n",keliling);
getch();
}

Sunday, November 29, 2009

XAMMP: variabel $ form tidak bekerja

Berikut php scrip tidak bekerja bila memakai Xammp tapi ok bila memakai Appsvr:

<?
//dataform.php
if($submit)
{
echo"bilangan A adalah : ".$a;
echo"<br>bilangan B adalah : ".$b;
echo"<br>jumlah A + B adalah : ".($a+$b);
echo"<br>hasil kali A * B adalah : ".$a*$b;
}
?>
<form method="POST" action="dataformku.php">
<p>Input A:<input type="text" name="a" size="14"></p>
<p>Input B:<input type="text" name="b" size="14"></p>
<p><input type="submit" value="Hitung" name="submit"></p>

Penyebab :
- karena default setting register_globals di Xammp adalah Off , lihat setting dengan phpinfo.php
- pleasse go to C:\xampp\apache\bin\php.ini
dan set register_globals = On
- restart Apache and try gain

Thursday, November 26, 2009

macam compiler C/C++

berikut macam macam compiler dan editor untuk pemrograman bahasa C/C++
masing masing mempunyai kelengkapan library

Wednesday, November 25, 2009

Bahasa C++ : contructor dan exception

Berikut contoh pemakaian Contructor dan Exception pada bahasaC++ untuk Object Oriented Programming. Digunakan pada program untuk mencari bilangan prima. Banyak cara dan ini salah satunya:


#include <iostream.h>
#include <conio.h>
class yayan
{
public:
int a, i;
yayan();
void prima(void);
};

yayan :: yayan(void)
{
cout << "Masukkan bilangan bulat positif : ";
cin >> a;
prima();
}

void yayan :: prima(void)
{
char zero[] = "tidak boleh zero";
char neg[] = "tidak boleh negatif";
char notprime[] = "bukan bilangan prima";
char prime[] = "bilangan prima";

try
{
if (a == 0) throw zero;
if (a < 0) throw neg;
for (int i = 3; i <= sqrt (a); i++)
{
if ((a/i) * i == a) throw notprime;
}
throw prime;
}
catch (char *conclusion)
{
cout << "angka yang dimasukkan adalah "<< conclusion << endl;
}
cout << endl;
}

void main(void)
{
clrscr();
yayan r1;
getch();
}

materi dasar PHP

berikut materi dasar pemrograman web dengan PHP:
sebenarnya penggunaan kontruksi programinggnya adalah sama dengan bahasa pemrograman lainnya. Terutama C dan C++. Cuma ada perbedaaan pada syntax / cara penulisan programnya:
(1) materi ke 1: pengenalan internet dan web server. download disini
(2) materi ke 2: struktur dasar PHP dan struktur kondisi & perulangan. download disini
(3) materi ke 3: pernyataan control dan penanganan form. download disini dan disini.
(4) materi ke 4: array. download disini
(5) materi ke 5: string & date. download disini
(6) materi ke 6: file & direktori. download disini



.... to be continue

materi bahasa C

berikut materi bahasa C yg bisa di download
belum final ... masih akan ada revisi
contoh contoh belum dimasukkan

Tuesday, November 24, 2009

Launching Windows 7, Exchange Server 2010 & Windows Server 2008 R2 Overview and Demo




join acara launching Windows 7, Exchange Server 2010 & Windows Server 2008 R2 Overview and Demo di JCC. Lumayan

Friday, October 16, 2009

Algoritma & Pemrograman: Pertemuan03

berikut untuk pertemuan ke 3
- download disini

Algoritma & Pemrograman: Pertemuan02

berikut materi untuk pertemuan ke dua:
- download disini

Tuesday, October 06, 2009

pemrograman terstruktur: pertemuan02

Berikut materi untuk pertemuan ke 2:
- Ide Pemrograman Terstruktur. download disini

Monday, September 28, 2009

pemrograman terstruktur: pertemuan01

berikut materi untuk matakuliah pemrograman terstruktur:

pertemuan01. Pembahasan:
- Kontrak Kuliah Pemrograman Terstruktur. download here
- Pengenalan Pemrograman Terstruktur. download here

Dalam perkuliahan memakai bahasa pemrograman C.
untuk software compiler bahasa C bisa memakai berikut:
- http://www.q-software-solutions.de/pub/lccwin32.exe
- atau yang sudah di extrak di sini

Sunday, August 30, 2009

outlook express: Address Book failed to load. Outlook Express is incorrectly configured, please re-install.

showing above message when open email at Outlook express. Or message The Address Book file has been locked by another application. Please close the other application and try again later. The message appear when intall at New PC DELL 3190 using OEM installer then set user level to power-user. It's ok if we set level user to administrator level but not recomended at our company.


issue happen due to windows address book (WAB) at that PC pointing to WAB file at Administrator profile. Please do below step to solve that problem.
- go to administrator profile then find file at folder:
- C:\Documents and Settings\adminisrator\Application Data\Microsoft\Address Book\permata.wab
- please set the file security to all profile can have full access status.

the issue not happen if we are using CD OEM to install windows original at new or old PC. Please try. hope can help you.

Tuesday, August 18, 2009

what is diffrence between, speed, velocity and acceleration

http://www.edinformatics.com/math_science/acceleration.htm


Definitions:

Speed or Velocity?

Speed is the rate of motion, or the rate of change of position. It is expressed as distance moved (d) per unit of time(t). Speed is a scalar quantity with dimensions distance/time. Speed is measured in the same physical units of measurement as velocity, but does not contain an element of direction. Speed is thus the magnitude component of velocity. Velocity contains both the magnitude and direction components.

Common speeds of moving objects

For human beings, an average walking speed is about 3 mph (~5 km/h, 1.39m/s),
The speed of long distance jogging for average persons is about 6 mph (~10 km/h, 2.7 m/s).
Top athletic sprinters can run at 23.03 mph (~36.85 km/h, 10.24 m/s) within a short distance such as a 200 meters dash.
Cycling can average 12 mph (~20 km/h, 5.56 m/s)
Car can average 65 mph (~104 km/h, 28.9 m/s ) on highway
A
747 Airplane has an average speed 565 mi/hr

Acceleration

Acceleration, (symbol: a) is defined as the rate of change of velocity. It is thus a vector quantity with dimension length/time². In SI units, acceleration is measured in meters/second².

To accelerate an object is to change its velocity, which is accomplished by altering either its speed or direction (like in case of uniform circular motion) in relation to time. Acceleration can have positive and negative values. Any time that the sign (+ or -) of the acceleration is the same as the sign of the velocity, the object will speed up. If the signs are opposite, the object will slow down. Acceleration is a vector quantity. When either velocity or direction changes, there is acceleration (or deceleration).

To accelerate an object requires the application of a force.

Graphing Velocity and Acceleration

A car accelerates from rest. The following two graphs are created using a java applet (see below).


The graph of velocity (m/sec.) vs. time (sec.) is a straight line for accelerating objects.

acceleration = velocity / time

What is the slope of this graph?

Please enter your answer in the space provided:


meters/second²

The graph of distance (x) vs. time (t) is a curve where the equation of motion is:

x = 1/2 at². What value of (a) would you expect for this graph?

Hint: For each value of t (in s), there is only one value for x (in m). Pick any ordered pair for t and x and substitute them into the above equation. Then solve for a.

Sunday, July 26, 2009

C3 BARCODE LABEL - JEITA FORMAT 4f programming


below steps that you can use to develop printing Barcode label use format C3 JEITA 4f ?
you can use : PHP 5 programming , APACHE web server and fpdf class.
The point programming as below:
  • require code39.php and $pdf->Code39($pdf->GetX()+1, $pdf->GetY(), "1P$pn1") for barcode font
  • $pdf = new FPDF('P', 'cm', 'A4') for paper size
  • for($i=1;$i<=$ctk1;$i++) {....} for looping label printing quantity
  • function SetCol($col) { $x=25+$col*87 ...} at code39.php to set margin each column label.
  • onKeyDown="if(event.keyCode==13) document.getElementById('ctk11').focus();" for setup enter and focus cursor
  • onKeypress="if(event.keyCode <> 57) event.returnValue = false;" for setup only type number
  • onclick="form.action='test1.php';form.submit();" for submit button
  • Highlight form element- © Dynamic Drive (www.dynamicdrive.com) to create highlight form element

PAYTAX: Penurunan Rumus GROSS-UP PPH21 th2009

Berikut penurunan rumusnya untuk project PAYTAX di salah satu oil company di jakarta.
sehingga di peroleh rumus Gross up 2009 sbb:
(1)
(2)

Sunday, July 12, 2009

PAYTAX: methoda perhitungan pajak di indonesia

Dalam perhitungan pajak penghasilan di Indonesia (PPh21), ada 3 metoda yg bisa digunakan, yaitu :

1) Net Method

Merupakan metode pemotongan pajak dimana perusahaan menanggung pajak karyawannya

2) Gross Method

Merupakan metode pemotongan pajak dimana karyawan menanggung sendiri jumlah pajak penghasilannya

3) Gross-Up Method

Merupakan metode pemotongan pajak dimana perusahaan memberikan tunjangan pajak yang jumlahnya sama besar dengan jumlah pajak yang akan dipotong dari karyawan.

Gross-Up Method

Di formulasikan untuk menyamakan jumlah pajak yang akan dibayar dengan tunjangan pajak yang di berikan perusahaan terhadap karyawannya.

Illustrasi Perhitungan

Penghasilan = XXXX

Tunjangan Pajak = 1000

Total Penghasilan Brutto = XXXX + 1000

Pengurang:

Biaya Jabatan

Iuran Pensiun

Total Pengurang = (XXXX)

Total Penghasilan Netto = (XXXX)

Penghasilan Tidak kena Pajak (PTKP) = (XXXX)

Penghasilan Kena Pajak (PKP) = XXXX

Setelah dikenakan tarif progresif pajak (5%,10% dst), diperoleh

PPH pasal 21 terutang = 1000


Methoda Gross-Up, akan menghasilkan tunjangan pajak sama dengan jumlah pajak penghasilan terhutang.

http://harrypoe.wordpress.com/2008/01/01/gross-up-tax-indonesia-income-tax-pph21/

PAYTAX: ppH21 lapisan tarif pasal 17 mulai 1 january 2009

1. Untuk WP orang pribadi
Rp. 0 s.d. Rp 50 juta, tarifnya 5%
Rp. 50 juta s.d. Rp 250 juta, tarifnya 15%
Rp. 250 juta s.d. Rp 500 juta, tarifnya 25%
Rp. 500 juta ke atas, tarifnya 30%

Yang perlu diingat, tarif di atas adalah tarif progresif. Maksudnya tiap lapisan Penghasilan Kena Pajak dikenakan sesuai tarifnya, bukan diakumulasi dulu, baru dikenakan tarif. Lalu sebelum dikenakan tarif, Penghasilan Kena Pajak dibulatkan dulu sampai ribuan ke bawah.

contoh:
Penghasilan Kena Pajak WP orang pribadi = Rp 671.688.950
Penghasilan Kena Pajak dibulatkan : Rp 671.688.000

PPhnya adalah :
5% x Rp 50.000.000 = Rp 2.500.000
15% x Rp 200.000.000 = Rp 30.000.000
25% x Rp 250.000.000 = Rp 62.500.000
30% x Rp 171.688.000 = Rp 51.506.400
Total = Rp 146.506.400 setahun atau Rp 12.208.867 sebulan.


atau cara lain pakai rumus excel:
=IF(A20>500000000,30%*(A20-500000000)+95000000,IF(A20>250000000,25%*(A20-250000000)+32500000,IF(A20>50000000,15%*(A20-50000000)+2500000,A20*5%)))


atau rumus ini:
untuk penghasilan Rp.1 s/d Rp. 47.500.000
PKP X 5/95

untuk penghasilan Rp. 47.500.000 s/d Rp. 217.500.000
(PKP-47.500.000) X 15/85 + 2.500.000

untuk penghasilan Rp. 217.500.000 s/d Rp. 405.000.000
(PKP - 217.500.000) x 25/75 + 32.500.000

untuk penghasilan diatas Rp. 405.000.000
(PKP - 405.000.000) x 30/70 + 95.000.000

====================
atau rumus ini:
Rumus Gross Up untuk Perhitungan Tunjangan PPh 21 yang berlaku mulai tahun 2009 adalah sebagai beikut :

Untuk Penghasilan Kena Pajak (PKP) sampai dengan Rp. 50.000.000,00 (lima puluh juta rupiah)

PKP x 5%
--------
0.95

Untuk Penghasilan Kena Pajak (PKP) lebih dari Rp. 50.000.000,00 (lima puluh juta rupiah) sampai dengan Rp.250.000.000,00 (dua ratus lima puluh juta rupiah)

(PKP x 15%)–5.000.000
------------------------
0.85

Untuk Penghasilan Kena Pajak (PKP) lebih dari Rp. 250.000.000,00 (dua ratus lima puluh juta rupiah) sampai dengan Rp. 500.000.000,00 (lima ratus juta rupiah)

(PKP x 25 %)–30.000.000
--------------------------
0.75

Untuk Penghasilan Kena Pajak (PKP) lebih dari Rp. 500.000.000,00 (lima ratus juta rupiah)

(PKP x 30 %) – 55.000.000
---------------------------
0.70

Rumus ini hanya berlaku untuk pekerja yang memiliki NPWP.