Saturday, December 4, 2010

Algoritma Pemrograman : Teknik Switching

(Materi Kuliah Algoritma Pemrograman)

Definisi :
Tehnik Switching merupakan cara memperpendek jalur proses yang memakai suatu indikator untuk mengantisipasi proses yang akan dilakukan selanjutnya. Indikator ini dimisalkan seperti switch pada tombol lampu yang dapat mengatur dua kondisi yaitu nyala dan padam.

Dalam flowchart, switch merupakan variabel yang (biasanya) diisi dengan dua kondisi yaitu 0 dan 1. Melalui isi variabel tersebut dapat diketahui kondisi proses yang telah dilakukan. Sehingga dapat dilakukan pengalihan proses tanpa melalui proses sebelumnya atau mempersingkat alur proses.


Contoh Soal :
Suatu perusahaan akan membuat laporan gaji pegawainya berdasarkan golongannya. Data yang dibaca terdiri dari nomor pegawai, nama pegawai, golongan dan gaji bersih. Data yang dibaca sudah urut per golongan yang terdiri dari : golongan 1, 2, 3, 4. Jika golongan berubah maka cetak TOTAL GAJI per golongan dan ganti halaman baru serta NOMOR dimulai dari 1.
Pada akhir laporan cetak TOTAL SELURUH GAJI yaitu jumlah total gaji seluruh golongan.

Flowchart :


Database :
CREATE TABLE `gaji` (
`nopeg` varchar(10) NOT NULL,
`nama` varchar(10) NOT NULL,
`golongan` int(1) NOT NULL,
`gaji` decimal(12,0) NOT NULL,
PRIMARY KEY (`nopeg`)
) EN
GINE=MyISAM DEFAULT CHARSET=latin1


Script :
Flowchart diatas saya terjemahkan ke script. Untuk mudahnya saya menggunakan bahasa PHP + database MySQL. Script saya tulis dengan aplikasi gPHPEdit, Kompozer dibantu dengan tool Adee HTML to PHP Converter dan Adee HTML Parser :-)


<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'server';
$dbname = 'latihan';
$sw = 0;
$tot_gaji_gol=0;
$tot_gaji_all=0;
$no=0;
$gol_current=0;
$flag_awal=0;

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error Koneksi');
mysql_select_db($dbname);

$perintah = "select * from gaji order by golongan asc";
$hasil=mysql_query($perintah);

while ($row=mysql_fetch_array($hasil)){
$nopeg=$row["nopeg"];
$nama=$row["nama"];
$golongan=$row["golongan"];
$gaji=$row["gaji"];
$no=$no+1;

if($golongan <> $gol_current) {
$gol_current = $golongan;
$sw=0;
}

//cek switch, jika 0 cetak judul & header tabel, ubah switch jadi 1
if($sw==0){
//tutup tabel
if ($flag_awal > 0) {
echo "</tbody>";
echo "</table>";
echo "Total Gaji : " . $tot_gaji_gol;
echo "<p></p>";
}
//cetak judul
echo "<strong>Tabel Gaji PT.ABC</strong>";
echo "<table style='text-align: left; width: 100%;' border='1' cellpadding='2' cellspacing='2'>";
echo "<tbody>";
echo "<tr>";
echo "<td style='vertical-align: top; background-color: rgb(204, 204, 255);'>NO<br></td>";
echo "<td style='vertical-align: top; background-color: rgb(204, 204, 255);'>NOPEG<br></td>";
echo "<td style='vertical-align: top; background-color: rgb(204, 204, 255);'>NAMA<br></td>";
echo "<td style='vertical-align: top; background-color: rgb(204, 204, 255);'>GOLONGAN<br></td>";
echo "<td style='vertical-align: top; background-color: rgb(204, 204, 255);'>GAJI<br></td>";
echo "</tr>";
$sw=1;
$flag_awal=$flag_awal+1;
$gol_current=$golongan;
$tot_gaji_gol = 0;
}

echo "<tr>";
echo "<td style='vertical-align: top;'>$no<br></td>";
echo "<td style='vertical-align: top;'>$nopeg<br></td>";
echo "<td style='vertical-align: top;'>$nama<br></td>";
echo "<td style='vertical-align: top;'>$golongan<br></td>";
echo "<td style='vertical-align: top;'>$gaji<br></td>";
echo "</tr>";
$tot_gaji_gol=$tot_gaji_gol + $gaji;
$tot_gaji_all =$tot_gaji_all + $gaji;

}
// tutup tabel
echo "</tbody>";
echo "</table>";
echo "Total Gaji : " . $tot_gaji_gol;
echo "<p></p>";
echo "Total Seluruh Gaji : " . $tot_gaji_all;

?>
Result :
Dari penjelasan diatas, dapat kita lihat implementasi dan korelasi nyata dari soal cerita, flowchart, desain database, sampai dengan scripting. Semoga bisa mengurangi kebingungan teman-teman, karena masih banyak yang memahami teori (algoritma, etc), database, dan scripting secara parsial.

Teknik switching sebenarnya sangat sederhana, artinya kita harus bisa menentukan kapan script akan mencetak header tabel.

Berikut hasilnya :



Semoga bermanfaat

4 comments:

  1. waduh bingung saya pak hehe
    tapi makasih banget saya akan coba pahami step-by-step

    ReplyDelete
  2. terima kasih infonya..
    salam kenal

    Kunjungi Juga Blog Saya

    ReplyDelete
  3. kalau kita mau bagi gaji nya dengn jumlah rownya gimana pak ?
    misalnya total Gaji Golongan 1 ada 3 baris trus kita mau bagi dengan jumlah rownya.. mohon pencerahannya Pak.. :)

    Al gazali

    ReplyDelete
  4. Al Gazali : kasi aja satu variabel counter yang selalu +1 setiap looping. Tar kalo ketemu switching lakukan pembagian Gaji golongan 1 dengan nilai counter. Jangan lupa nilai counter di reset ke 0 untuk dipakai di loop selanjutnya.

    ReplyDelete

Leave your comments with attitude please. This blog does DOFOLLOW :-)