Selasa, 23 Juni 2015

SMS Gateway

Pada dunia komputer, gateway dapat diartikan sebagai jembatan penghubung antar satu sistem dengan sistem lain yang berbeda, sehingga dapat terjadi suatu pertukaran data antar sistem tersebut. Dengan demikian, SMS gateway dapat diartikan sebagai suatu penghubung untuk lalu lintas data SMS, baik yang dikirimkan maupun yang diterima.
Pada awalnya, SMS gateway dibutuhkan untuk menjembatani antar SMSC. Hal ini dikarenakan SMSC yang dibangun oleh perusahaan yang berbeda memiliki protokol komunikasi sendiri, dan protokol-protokol itu sendiri bersifat pribadi. Perhatikan ilustrasi berikut ini.

Konsep SMS Gateway
Namun seiring perkembangan teknologi komputer, baik dari sisi hardware maupun software, dan perkembangan teknologi komunikasi, SMS gateway tidak lagi dimaksudkan sebagaimana ilustrasi di atas. Dewasa ini, masyarakat lebih mengartikan SMS gateway sebagai suatu jembatan komunikasi yang menghubungkan perangkat komunikasi (dalam hal ini ponsel) dengan perangkat komputer, yang menjadikan aktivitas SMS menjadi lebih mudah dan menyenangkan. Pengertian SMS gateway kemudian lebih mengarah pada sebuah program yang mengomunikasikan antara sistem operasi komputer, dengan perangkat komunikasi yang terpasang untuk mengirim atau menerima SMS. Salah satu komunikasi yang terjadi, dapat dilakukan dengan mengirimkan perintah AT pada perangkat komunikasi tersebut, kemudian hasil operasinya dikirimkan kembali ke komputer.

Pengertian Bahasa pemrograman dan Pascal

Bahasa pemrograman, atau sering diistilahkan juga dengan bahasa komputer, adalah teknik komando/instruksi standar untuk memerintah komputer. Bahasa pemrograman ini merupakan suatu set aturan sintaks dan semantik yang dipakai untuk mendefinisikan program komputer. Bahasa ini memungkinkan seorang programmer dapat menentukan secara persis data mana yang akan diolah oleh komputer, bagaimana data ini akan disimpan/diteruskan, dan jenis langkah apa secara persis yang akan diambil dalam berbagai situasi.



Tingkatan Bahasa Pemrograman
Bahasa Mesin (Machine Languages)
Bahasa Rakitan (Assembly Languages)
Bahasa Tingkat Tinggi (High Level Languages)

Pengenalan Bahasa Pemrograman PASCAL
Pascal merupakan suatu bahasa komputer tingkat tinggi yang dibuat sekitar tahun 1970 oleh Niklaus Wirth dan digunakan untuk pendidikan komputer. Nama Pascal diambil dari seorang ahli matematika yang bernama Blaise Pascal yang menemukan mesin hitung pertama. Bahasa Pascal dirancang untuk menyelesaikan masalah dari berbagai kalangan pemakai, mulai dari para mahasiswa, pendidik, dan ilmuwan.
Apa artinya Pascal adalah bahasa pemrogram terstruktur ?
Pascal adalah suatu bahasa pemrograman terstruktur. Hal tersebut berarti semua program yang anda buat harus terstruktur dan teratur, dalam hal ini ada pemakaian oto dan jump.
Bagaimana Struktur program pascal yang paling sederhana ?
Struktur program pascal yang paling sederhana adalah :

uses ...;

var ...;

begin

....  {Your program is here}

end.



Contoh program pascal sederhana :


program program_pertama;
uses crt;

begin
Clrscr;
Writeln('Saya sedang belajar Pascal !');
Writeln('Di Lab. Komputer SMA N 1 Yogyakarta');
end.


Bagian-bagian program dalam PASCAL
Program heading
Judul program dalam Turbo Pascal bersifat optional dan tidak ada pengaruhnya dalam rogram. Jika ditulis akan memberikan nama program dan suatu daftar parameter ptional dimana program itu berkomunikasi. Daftar itu terdiri dari sederetan ndentifier yang diakhiri dengan tanda kurung dan dipisahkan dengan tanda koma.
Contoh :
Program Perhitungan(Input,Output);
Uses Clause
Bagian uses clause digunakan untuk menentukan library yang dibutuhkan saat proses program. LIBRARY merupakan file penyimpan subroutine yang secara berulang digunakan saat proses program. Library ini diistilahkan sebagai unit dalam Turbo PASCAL yang terdiri dari SYSTEM, OVERLAY, GRAPH, DOS, CRT yang ditempatkan dalam file TURBO.TPL.

Contoh :
Uses Crt; (*menggunakan Unit Crt *)
Variabel Declaration
Setiap variabel yang digunakan dalam program harus didefinisikan terlebih dahulu sebelum digunakan. Cara penulisan ini adalah :
Var
: ;
Statement
Bagian ini merupakan inti dari program. Seluruh perintah dan urutannya serta proses Input/Output dalam program perlu disusun secara teratur oleh penyusun program. Segala yang ada pada bagian uses maupun deklarasi merupakan pendukung terhadap isi program.
Bagaimana membuat keterangan ?
Untuk membuat program anda menjadi mudah dibaca dan dimengerti, maka perlu iberi keterangan yang akan diabaikan oleh kompiler. Untuk membuat keterangan unakan tanda kurawal { ini adalah keterangan }, atau (* ini adalah keterangan *).



Latihan Pemrograman 1

1. MENGENAL VARIABEL
program mengenal_variabel;   // judul program

uses wincrt;                 // pemanggilan library (uses clause)

var
umur : shortint;             // deklarasi variabel
ket  : string;

begin
umur := 16;
ket  := 'masih childis ^_^';
writeln('*** DATA DIRI SAYA ***');        // main program (statement)
writeln;
writeln('Umur saya  : ',umur);
writeln('Keterangan : ',ket);
end.

Note : bagian  bertanda // tidak perlu ditulis.

2. MEMBEDAKAN WRITE DAN WRITELN
program membedakan_tipe_output;

uses wincrt;

begin
writeln('*** MEMBEDAKAN WRITE DAN WRITELN ***');
writeln;
writeln('Tulisan dibawah ini saya tulis dengan WRITE');
write(' SAYA MUNCUL DISINI');
writeln;
writeln('Tulisan dibawah ini saya tulis dengan WRITELN');
writeln(' SAYA MUNCUL DISINI');
writeln('*** OW... sekarang saia jadi tau bedanya ***');
end.

3. MENGENAL INPUT DINAMIS DENGAN READLN
program input_dinamis;

uses wincrt;

var
umur : shortint;
ket  : string;

begin
writeln(' ** MASUKKAN DATA DIRI ANDA ** ');
writeln;
writeln('Umur saya  : '); readln(umur);
writeln('Keterangan : '); readln(ket);
writeln;
writeln;
writeln(' ** DATA DIRI SAYA ** ');
writeln;
writeln('Umur saya : ',umur);
writeln('Keterangan : ',ket);
end.



Tipe Data dalam PASCAL

Dalam bahasa PASCAL dikenal dua jenis tipe data utama yaitu ordinal type dan real type. Ordinal type adalah tipe data yang digunakan untuk mereprentasikan bilangan dengan urutan pasti dan Real type adalah tipe data untuk mereprentasikan bilangan pecahan. Berikut adalah penjelasan dari kedua jenis tipe data tersebut :

1.Ordinal Type
Seperti yang telah dijelaskan diatas bahwa tipe data Ordinal adalah type data yang digunakan untuk mereprentasikan bilangan yang mempunyai urutan pasti. Type data ini masih dibagi lagi dalam beberapa jenis yaitu :

a.Integer
Type data integer adalah type data yang digunakan untuk pengolahan data bilangan bulat. Type data ini masih dibagi lagi sesuai dengan jangkauan bilangannya. Berikut table pembagian tipe integer

b.Char
Type variabel yang berguna untuk pengolahan character ASCII, type character ini penulisannya ditandai dengan dua buah petik tunggal seperti : 'A', '3','*',#7 untuk menyatakan ' harus ditulis ''''

c.Boolean
Type varibale yang berguna untuk pengolahan hal yang hanya mempunyai dua ketentuan yaitu benar(TRUE) dan salah(FALSE) saja

2.Real Type
Type variable yang beguna untuk pengolahan data yang tidak bulat, untuk type real ini juga terbagi menjadi beberapa jenis :

Untuk pengolahan type variabel diatas di sediakan berbagai jenis operator antara lain :




Latihan Pemrograman 2

1. Pengenalan tipe data integer
program program_bil_genap; { heading program }

uses wincrt; { library }

var {deklarasi variabel}
panjang  : integer;
lebar    : integer;
luas     : longint;
keliling : longint;

begin

{ bagian input data }
writeln('** Menghitung Luas dan Keliling Kotak **');
writeln('------------------------------------------');
write('Masukkan Panjang : ');readln(panjang);
write('Masukkan Lebar   : ');readln(lebar);
writeln;

{ rumus pencarian hasil }
luas := panjang * lebar;
keliling := 2 * (panjang + lebar);

{ bagian output data }
writeln('** Hasil Perhitungan **');
Writeln('------------------------------------------');
writeln('Luas Kotak     : ',luas);
writeln('Keliling Kotak : ',keliling);

end.



2.Pengenalan tipe data real


program program_bil_pecah;

uses wincrt;

var
pi   : real;
jar  : integer;
luas : real;

begin
pi := 3.1415;

{ bagian input data}
writeln('** Menghitung Luas Lingkaran **');
writeln('------------------------------------------');
write('Masukkan Jari-jari : ');read(jar);
writeln;

{ rumus pencarian hasil }
luas := pi * jar * jar;

{ bagian output data }
writeln('** Hasil Perhitungan **');
Writeln('------------------------------------------');
writeln('Luas Lingkaran : ',luas:2:2);

end.


3.Program dalil Phytagoras


program dalil_pytagoras;

uses wincrt;

var
a,b,c : real;

begin
writeln(' Program pytahoras ' );
writeln;
write(' Sisi Tegak = '); readln(a);
write(' Sisi Datar = '); readln(b);
c := sqrt(a*a + b*b);
writeln;
writeln(' Nilai Sisi Miring adalah : ', c:2:2);

end.



Pernyataan bercabang dengan if, else if dan case
Logika IF
Pada prinsip dasarnya logika IF digunakan untuk membuat suatu kondisi dimana komputer diminta untuk mengambil sebuah keputusan yang sesuai dengan input yang dimasukkan. Secara sederhana struktur dari logika IF adalah sebagai berikut :
If ( condition ) Then ( statement );
Condition akan bernilai true atau false tergantung dari input yang dimasukkan, dan kemudian program akan menjalankan statement sesuai kondisi yang terjadi. misal :
if x
Writeln(' X lebih kecil dari Y ')
Dari contoh potongan kode diatas mungkin sudah bisa diambil sedikit gambaran mengenai logika IF. jika kondisi yang dibuat lebih dari satu jenis maka bisa dituliskan dengan cara sebagai berikut.
if x
Writeln(' X lebih kecil dari Y ')

else if x>y then
writeln(' X lebih besar dari Y ')

else
writeln(' X sama dengan Y ');
Logika CASE
Logika CASE sekilas mungkin sama dengan logika IF, tapi pada dasarnya berbeda. dikarenakan logika CASE tidak menginstruksikan komputer untuk mengambil sebuah keputusan, melainkan hanya menjalankan pilihan yang kita inputkan ke dalam program. Secara sederhana jika kita membuat sebuah progam CASE berarti kita membuat sebuah program pilihan. dimana kita akan diminta memilih salah satu input dan komputer akan menjalankan program sesuai dengan input yang kita masukkan. Struktur dari program CASE adalah sebagai berikut :
Case variabel Of
    1 : Statement1;
    2 : Statement2;
    3 : Statement3;
    …
    Else StatementN;
End;



Contoh dari kode CASE
case no_hari  of
'1' : begin
      writeln('Hari senin');
      end;
'2' : begin
      writeln('Hari Selasa');
      end;
.......




Latihan Pemrograman 3
1. MENCOBA LOGIKA IF SEDERHANA
program logika_if;

uses wincrt;

var x,y : integer;

begin

write(' Tentukan nilai X : '); readln(x);
write(' Tentukan nilai Y : '); readln(y);
if x
Writeln(' X lebih kecil dari Y ')
else if x>y then
writeln(' X lebih besar dari Y ')
else
writeln(' X sama dengan Y ');

end.



2. MENDETEKSI SUATU ANGKA GENAP/GANJIL DENGAN IF
program cek_angka;

uses wincrt;

var
bil : integer;

begin
write(' Tulis Bilangan Anda : '); readln(bil);

if bil mod 2 = 0 then
writeln(' Angka ', bil ,' Adalah Bilangan Genap ')

else
writeln(' Angka ', bil , ' Adalah Biangan Ganjil ');

end.



3. KOMBINASI IF DAN GOTO
program program_GOTO;

uses wincrt;

label kembali,balik;  {membuat tanda}

var
tanya : char;
x : integer;

begin
kembali:  {posisi tanda untuk kembali}

write(' Tulis Bilangan Yang Ingin Anda Kuadratkan : ');
readln(x);
writeln(' Hasil ', x,' Kuadrat = ', x * x);
writeln;

balik:  {posisi tanda untuk balik}
write(' Anda Ingin Menghitung Lagi..?(Y/T)');
readln(tanya);

if(tanya='y') OR (tanya='Y') then
goto kembali

else if (tanya='t') OR (tanya='T') then
exit

else
writeln(' Input salah');
goto balik;

end.



4. PROGRAM CASE
program prorgam_CASE;

uses wincrt;

var
nomor_hari : char;

begin
write('Masukkan Nomor HARI (1-7) : '); readln(nomor_hari);
writeln;
  case nomor_hari of

'1' : begin
      writeln(' Hari Senin ');
      end;
'2' : begin
      writeln(' Hari Selasa ');
      end;
'3' : begin
      writeln(' Hari Rabu ');
      end;
'4' : begin
      writeln(' Hari Kamis ');
      end;
'5' : begin
      writeln(' Hari Jumat ');
      end;
'6' : begin
      writeln(' Hari Sabtu ');
      end;
'7' : begin
      writeln(' HAri Minggu');
      end;
  end;

end.




Perulangan / Looping
Apa itu Looping...??
Secara sederhana looping diartikan sebagai proses berulang terhadap statement maupun serangkaian statement lebih dari satu kali. Ada tiga jenis perulangan yang dikenal dalam bahasa pemrogrman PASCAL yaitu :

1. Perulangan dengan for-to dan down-to
2. Perulangan dengan while dan while-do
3. Perulangan dengan repeat-until

Perulangan dengan for-to dan down-to
Perulangan dengan for adalah jenis perulangan yang menggunakan counter maksudnya perulangan jenis ini menggunakan kelipatan satu. Yaitu perulangan naik satu (for-to) dan perulangan turun satu (down-to). Berikut adalah struktur dari perulangan menggunakan for :

For ( variabel := nilai awal ) To ( nilai akhir ) Do ( Statement );

Atau

For ( variabel := nilai awal ) DownTo ( nilai akhir ) Do ( Statement );

Dimana variabel harus ordinal type
Contoh :

Var I : Integer;
Begin
For I := 1 To 10 Do Writeln('SMAN 1 Yogyakarta');
End.


Perulangan dengan while / while-do
Pernyataan while-do atau lebih dikenal dengan pernyataan while adalah pernyataan yang akan mengulang/mengeksekusi pernyataan lain selama beberapa kondisi masih bernilai true. Berikut adalah struktur dari pernyataan while-do.

While ( condition ) Do ( Statement );

Contoh :

I := 1;
While I <= 10 Do
Begin
  Writeln('SMAN 1 Yogyakarta');
  I := I + 1;
End;


Perulangan dengan repeat-until
Perulangan menggunakan repeat until sebenarnya hampir sama dengan perulangan menggunakan while-do hanya bedanya jika menggunakan while, perulangan akan dilakukan selama kondisi bernilai benar tapi jika menggunakan repeat perulangan akan berhenti jika suatu kondisi terpenuhi. Berikut adalah struktur statement perulangan repeat-until.

Repeat
     ( Statement );
     …
Until ( Condition );

Contoh :
I := 1;
Repeat
    Writeln('SMA N 1 Yogyakarta');
    Inc(I);
Until I <= 10;

Latihan Pemrograman 4
1. PROGRAM LOOPING DENGAN FOR
program program_looping_for;

uses wincrt;

var
i,j : shortint;

begin
write(' Masukkan sebuah bilangan (dibawah 10): ');
readln(j);
writeln;
for i := 1 to j do
writeln('Kalimat ini diulang Sejumlah angka yang anda masukkan');
end.



2. PROGRAM LOOPING MENGGUNAKAN WHILE DO
program program_looping_while;

uses wincrt;
var i,j:shortint;

begin
write(' Masukkan nilai : ');
readln(j);
writeln;
I := 1;
While I <= j Do
      Begin
      Writeln('Kalimat ini diulang sejumlah nilai yang anda masukkan');
      I := I + 1;
      End;
end.



3. PROGRAM LOOPING MENGGUNAKAN REPEAT-UNTIL
program looping_dengan_repeat;

uses wincrt;
var i,j : integer;

begin
write('Masukkan sembarang angka (dibawah 10) : ');
readln(j);
writeln;

i := 0;
repeat
  writeln('Kalimat ini diulang sejumlah angka yang anda masukkan');
  i := i+1;
until i = j;

end.

Pengertian dan Contoh Kriptografi(Cryptography) dengan Proses Enkripsi dan Dekripsi

Kriptografi (cryptography) berasal dari bahasa Yunani, terdiri dari dua suku kata yaitu kripto dan graphia. Kripto artinya menyembunyikan, sedangkan graphia artinya tulisan. Kriptografi adalah ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi, seperti kerahasiaan data, keabsahan data, integritas data, serta autentikasi data .Tetapi tidak semua aspek keamanan informasi dapat diselesaikan dengan kriptografi.
Kriptografi dapat pula diartikan sebagai ilmu atau seni untuk menjaga keamanan pesan.

Pada prinsipnya, Kriptografi memiliki 4 komponen utama yaitu:

  1. Plaintext, yaitu pesan yang dapat dibaca

  2. Ciphertext, yaitu pesan acak yang tidka dapat dibaca

  3. Key, yaitu kunci untuk melakukan teknik kriptografi

  4. Algorithm, yaitu metode untuk melakukan enkrispi dan dekripsi

Kemudian, proses yang akan dibahas dalam artikel ini meliputi 2 proses dasar pada Kriptografi yaitu:

  1. Enkripsi (Encryption)

  2. Dekripsi (Decryption)

dengan key yang digunakan sama untuk kedua proses diatas. Penggunakan key yang sama untuk kedua proses enkripsi dan dekripsi ini disebut juga dengan Secret Key, Shared Key atau Symetric Key Cryptosystems.

Berikut adalah ilustrasi 4 komponen dan 2 proses yang digunakan dalam teknik kriptografi.

Enkripsi

Enkripsi (Encryption) adalah sebuah proses menjadikan pesan yang dapat dibaca (plaintext) menjadi pesan acak yang tidak dapat dibaca (ciphertext). Berikut adalah contoh enkripsi yang digunakan oleh Julius Caesar, yaitu dengan mengganti masing-masing huruf dengan 3 huruf selanjutnya (disebut juga Additive/Substitution Cipher):
Plaintext Ciphertext
rumah xasgn
motor suzux
kompor qusvux
dst…

Dekripsi

Dekripsi merupakan proses kebalikan dari enkripsi dimana proses ini akan mengubah ciphertext menjadi plaintext dengan menggunakan algortima ‘pembalik’ dan key yang sama. Contoh:
Ciphertext Plaintext
xasgn rumah
suzux motor
qusvux kompor
dst…

Contoh Kasus WP

Sebuah PTS di Kota Medan, akan memberikan beasiswa kepada 5 orang mahasiswanya. Adapun syarat pemberian beasiswa tersebut, yaitu harus memenuhi ketentuan berikut ini :

Syarat :
C1: Semester Aktif Perkuliahan (Attribut Keuntungan)
C2: IPK (Attribut Keuntungan)
C3: Penghasilan Orang Tua (Attribut Biaya)
C4: Aktif Berorganisasi (Attribut Keuntungan)

Untuk bobot W=[4,4,5,3]
Adapun mahasiswa yang menjadi alternatif dalam pemberian beasiswa yaitu :



Untuk pembobotan yang digunakan bisa mengacu pada bobot di bawah ini :
C1:Semester Aktif Perkuliahan
Semester II --> 1
Semester IV --> 2
Semester VI --> 3
Semester VIII --> 4

C2: IPK
IPK 3.00 - 3.249 --> 1
IPK 3.25 - 3.499 --> 2
IPK 3.50 - 3.749 --> 3
IPK 3.75 - 3.999 --> 4
IPK 4.00 --> 5

C3: Penghasilan Orang Tua
1.000.000 --> 1
1.400.000 --> 2
1.800.000 --> 3
2.200.000 --> 4
2.600.000 --> 5

C4: Aktif Berorganisasi
Aktif --> 2
Tidak Aktif --> 1

SOLUSI :
alternatif tabel :






Menghitung Vektor Si =

Menghitung Refrensi (Vi) untuk perhitungan :

Aplikasi Metode WP(Weighting Product) untuk Sistem Pendukung Keputusan (SPK)

Coding Shared - Lab Code kali ini akan mengupas salah satu metode dalam MADM (Multiple Atribute Decision Making) yaitu metode WP ( Weight Product ) yang memang diperuntukkan sebagai alat bantu untuk membuat keputusan,.
Dalam implementasinya, Metode WP ini dapat juga diterapkan dalam berbagai kasus, semisal : Perangkingan karyawan terbaik, Penentuan penerima beasiswa, rekomendasi produk elektronik tertentu, Pemilihan tempat kost dan lain sebagainya, untuk lebih jelasnya mengenai metode WP ini coba kita kupas rumus dan implementasinya yang kami ambil dari bahan ajar salah satu dosen Universitas Islam Indonesia yaitu Ibu Sri Kusumadewi dengan judul " Metode - Metode optimasi dengan Alternatif terbatas ". Berikut rumus dan contoh penggunaan dari Metode WP - MADM :









Yang jadi pertanyaan sekarang adalah bagaimana implementasi dari metode WP pada contoh di atas dalam pemrograman PHP?
OK, mari kita bahas. Untuk sementara anggap saja kita hanya mengimplementasikan study kasus di atas, jadi kita belum membutuhkan database, kecuali kalau nanti kita ingin menerapkannya menjadi sebuah aplikasi.
Untuk Study Kasus di atas maka :
  • Untuk tiap alternatif akan kita definisikan sebagai sebuah array,
  •  Nilai kriteria dan nilai alternatif disetiap kriteria akan disimpan dalam sebuah variabel array
  • Nilai W adalah nilai yang sudah ditentukan / nilai inputan kalau diterapkan dalam sebuah aplikasi. 
 Maka Script Penyelesaian untuk study kasus di atas adalah :
<?php
// definisi alternatif sebagai array
$alternatif = array("Ngemplak","Kalasan","Kota Gede");
$jum_alternatif=count($alternatif);
// definisi kriteria sebagai array
$kriteria = array ("jarak pasar","jumlah penduduk","jarak pabrik","jarak gudang","harga tanah");
$jum_kriteria=count($kriteria);
// bobot kepentingan
$w = array(5,3,4,4,2);
// perbaikan bobot kepentingan
$totalW=5+3+4+4+2;
$wp[0]=round(($w[0]/$totalW),2);
$wp[1]=round(($w[1]/$totalW),2);
$wp[2]=round(($w[2]/$totalW),2);
$wp[3]=round(($w[3]/$totalW),2);
$wp[4]=round(($w[4]/$totalW),2);
// definisi array untuk nilai alternatif tiap kriteria
//A[x][y] -> x untuk alternatif, y untuk kriteria
$A[0][0]=0.75;$A[0][1]=2000;$A[0][2]=18;$A[0][3]=50;$A[0][4]=500;
$A[1][0]=0.50;$A[1][1]=1500;$A[1][2]=20;$A[1][3]=40;$A[1][4]=450;
$A[2][0]=0.90;$A[2][1]=2050;$A[2][2]=35;$A[2][3]=35;$A[2][4]=800;

// perhitungan vektor S
// C2 dan C4 nilai keuntungan bernilai +, C1,C3,C5 kriteria biaya bernilai -
for ($i=0;$i<$jum_alternatif;$i++)
     {
  $S[$i]=1;
  for($j=0;$j<$jum_kriteria;$j++)
  {
  if ($j==0 or $j==2 or $j==4) {$p=0-$wp[$j];} else {$p=$wp[$j];}  
  $S[$i]=$S[$i]*pow($A[$i][$j],$p);
   }
  $totalS=$totalS+$S[$i];
      }
// perhitungan vektor V
$rangkingawal=0;
for ($i=0;$i<$jum_alternatif;$i++)
     {
  $V[$i]=$S[$i]/$totalS;
  if ($V[$i]>$rangkingawal)
            {
               $rangkingawal=$V[$i]; $pilihan=$alternatif[$i];$hasil=$V[$i]; $urutan=$i;
             }
 
       }
// Hasil Akhir
echo "Hasil perangkingan yang di pilih adalah Vektor V ke-".$urutan." yaitu :<br><b>".$pilihan."</b> dengan nilai <b>".$hasil."</b>";
?>
Setelah script di atas di jalankan, maka berikut tampilan yang dihasilkan, sama persis dengan contoh kasus di atas.
Screenshot script php penentuan alternatif dengan menggunakan Metode WP - MADM

Metode TOPSIS dalam Sistem Pendukung Keputusan (SPK)

Metode  TOPSIS  adalah  salah  satu  metode  pengambilan  keputusan multikriteria yang pertama kali diperkenalkan oleh Yoon dan Hwang  pada tahun 1981.  Metode  ini  merupakan  salah  satu  metode  yang  banyak  digunakan  untuk menyelesaikan pengambilan  keputusan  secara  praktis.  TOPSIS  memiliki  konsep dimana alternatif  yang terpilih merupakan alternatif terbaik  yang memiliki jarak terpendek dari solusi ideal positif dan jarak terjauh dari solusi ideal negatif [4]. Semakin  banyaknya  faktor  yang  harus  dipertimbangkan  dalam  proses pengambilan  keputusan,  maka  semakin  relatif  sulit  juga  untuk  mengambil
keputusan  terhadap  suatu  permasalahan.  Apalagi  jika  upaya  pengambilan keputusan  dari  suatu  permasalahan  tertentu,  selain  mempertimbangkan  berbagai faktor/kriteria  yang  beragam,  juga  melibatkan  beberapa  orang  pengambil keputusan.  Permasalahan  yang  demikian  dikenal  dengan  permasalahan  multiple criteria decision making  (MCDM).  Dengan kata lain, MCDM juga dapat disebut sebagai  suatu  pengambilan  keputusan  untuk  memilih  alternatif  terbaik  dari sejumlah  alternatif  berdasarkan  beberapa  kriteria  tertentu.  Metode  TOPSISdigunakan  sebagai  suatu  upaya  untuk  menyelesaikan  permasalahan  multiple criteria  decision  making.  Hal  ini  disebabkan  konsepnya  sederhana  dan  mudah dipahami, komputasinya  efisien  dan  memiliki  kemampuan  untuk  mengukur kinerja relatif dari alternatif-alternatif keputusan.
Langkah-langkah Metode TOPSIS
Langkah-langkah yang dilakukan dalam menyelesaikan suatu permasalahan menggunakan metode TOPSIS adalah sebagai berikut [4]:
  1. Menggambarkan  alternatif  (m)  dan  kriteria  (n)  ke  dalam  sebuah  matriks, dimana  Xij adalah  pengukuran  pilihan  dari  alternatif  ke-i  dan  kriteria  ke-j.Matriks ini dapat dilihat pada persamaan satu.
    matriks1 
  2. Membuat matriks R yaitu matriks keputusan ternormalisasi Setiap  normalisasi  dari  nilai  rij dapat  dilakukan  dengan  perhitungan menggunakan persamaan dua.
    matriks2
  3. Membuat pembobotan pada matriks yang telah dinormalisasi Setelah dinormalisasi, setiap kolom pada matriks R dikalikan dengan bobotbobot (wj) untuk menghasilkan matriks pada persamaan tiga.
    matriks3
  4. Menentukan nilai solusi ideal positif dan solusi ideal negatif. Solusi ideal dinotasikan A+, sedangkan solusi ideal negatif dinotasikan A-. Persamaan untuk menentukan solusi ideal dapat dilihat pada persamaan empat.
    matriks4
  5. Menghitung separation measure. Separation measure ini merupakan
    pengukuran jarak dari suatu alternatif ke solusi ideal positif dan solusi ideal
    negatif.
    –  Perhitungan solusi ideal positif dapat dilihat pada persamaan lima :
    matriks5
    –  Perhitungan solusi ideal negatif dapat dilihat pada persamaan enam :matriks6
  6. Menghitung  nilai  preferensi  untuk  setiap  alternatif. Untuk  menentukan ranking tiap-tiap alternatif yang ada maka perlu dihitung terlebih dahulu nilai preferensi  dari  tiap  alternatif.  Perhitungan  nilai  preferensi  dapat  dilihat melalui persamaan tujuh.
    matriks7Setelah  didapat  nilai  Ci+,  maka  alternatif  dapat  diranking  berdasarkan urutan  Ci+.  Dari  hasil  perankingan  ini  dapat  dilihat  alternatif  terbaik  yaitu alternatif yang memiliki jarak terpendek dari solusi ideal dan berjarak terjauh dari solusi ideal negatif.

Pengertian Sistem Pendukung Keputusan

Sistem Pendukung Keputusan (SPK) atau Decision Support System (DSS) adalah sebuah sistem yang mampu memberikan kemampuan pemecahan masalah maupun kemampuan pengkomunikasian untuk masalah dengan kondisi semi terstruktur dan tak terstruktur. Sistem ini digunakan untuk membantu pengambilan keputusan dalam situasi semi terstruktur dan situasi yang tidak terstruktur, dimana tak seorangpun tahu secara pasti bagaimana keputusan seharusnya dibuat (Turban, 2001).

SPK bertujuan untuk menyediakan informasi, membimbing, memberikan prediksi serta mengarahkan kepada pengguna informasi agar dapat melakukan pengambilan keputusan dengan lebih baik.

SPK merupakan implementasi teori-teori pengambilan keputusan yang telah diperkenalkan oleh ilmu-ilmu seperti operation research dan menegement science, hanya bedanya adalah bahwa jika dahulu untuk mencari penyelesaian masalah yang dihadapi harus dilakukan perhitungan iterasi secara manual (biasanya untuk mencari nilai minimum, maksimum, atau optimum), saat ini computer PC telah menawarkan kemampuannya untuk menyelesaikan persoalan yang sama dalam waktu relatif singkat.

Sprague dan Watson mendefinisikan Sistem Pendukung Keputusan (SPK) sebagai sistem yang memiliki lima karakteristik utama yaitu (Sprague et.al, 1993):

  1. Sistem yang berbasis komputer. 
  2. Dipergunakan untuk membantu para pengambil keputusan 
  3. Untuk memecahkan masalah-masalah rumit yang mustahil dilakukan dengan kalkulasi manual 
  4. Melalui cara simulasi yang interaktif 
  5. Dimana data dan model analisis sebaai komponen utama.

Komponen Sistem Pendukung Keputusan

Secara umum Sistem Pendukung Keputusan dibangun oleh tiga komponen besar yaitu database Management, Model Base dan Software System/User Interface. Komponen SPK tersebut dapat digambarkan seperti gambar di bawah ini.
Komponen Sistem Pendukung Keputusan (SPK)
Komponen Sistem Pendukung Keputusan (SPK)

a. Database Management

Merupakan subsistem data yang terorganisasi dalam suatu basis data. Data yang merupakan suatu sistem pendukung keputusan dapat berasal dari luar maupun dalam lingkungan. Untuk keperluan SPK, diperlukan data yang relevan dengan permasalahan yang hendak dipecahkan melalui simulasi.

b. Model Base

Merupakan suatu model yang merepresentasikan permasalahan kedalam format kuantitatif (model matematika sebagai contohnya) sebagai dasar simulasi atau pengambilan keputusan, termasuk didalamnya tujuan dari permaslahan (objektif), komponen-komponen terkait, batasan-batasan yang ada (constraints), dan hal-hal terkait lainnya. Model Base memungkinkan pengambil keputusan menganalisa secara utuh dengan mengembangkan dan membandingkan solusi alternatif.

c. User Interfase / Pengelolaan Dialog

Terkadang disebut sebagai subsistem dialog, merupakan penggabungan antara dua komponen sebelumnya yaitu Database Management dan Model Base yang disatukan dalam komponen ketiga (user interface), setelah sebelumnya dipresentasikan dalam bentuk model yang dimengerti computer. User Interface menampilkan keluaran sistem bagi pemakai dan menerima masukan dari pemakai kedalam Sistem Pendukung Keputusan.

Manfaat Sistem Pendukung Keputusan

SPK dapat memberikan berbagai manfaat dan keuntungan. Manfaat yang dapat diambil dari SPK adalah :
  1. SPK memperluas kemampuan pengambil keputusan dalam memproses data / informasi bagi pemakainya. 
  2. SPK membantu pengambil keputusan untuk memecahkan masalah terutama barbagai masalah yang sangat kompleks dan tidak terstruktur. 
  3. SPK dapat menghasilkan solusi dengan lebih cepat serta hasilnya dapat diandalkan. 
  4. Walaupun suatu SPK mungkin saja tidak mampu memecahkan masalah yang dihadapi oleh pengambil keputusan, namun dia dapat menjadi stimulan bagi pengambil keputusan dalam memahami persoalannya,karena mampu menyajikan berbagai alternatif pemecahan.