Barcode

Barcode atau kode batang adalah sekumpulan data yang digambarkan dengan garis dan jarak spasi (ruang). Barcode menggunakan urutan garis batang vertikal dan jarak antar garis untuk mewakili angka atau simbol lainnya. Dengan demikian, setiap ketebalan garis batang dan jarak antara garis saru dengan yang lain selalu berbeda sesuai dengan isi data yang dikandung oleh kode batang atau barcode tersebut.

Ada pun jenis barcode yang dikenal saat ini adalah barcode linear 1D (1 dimensi) yang berupa rangkaian garis dengan ketebalan yang bervariasi dan berbentuk persegi panjang serta jenis barcode matriks 2D (2 dimensi) yang datanya diwakili oleh simbol-simbol yang berbentuk persegi, titik, heksagon dan bentuk geometri lainnya pada gambar yang berada dalam sebuah bujur sangkar. Untuk jenis barcode matriks ini kita bisa memasukkan data sampai ratusan karakter dalam sebuah barcode, lain halnya dengan barcode linear yang kemampuan menyimpan datanya terbatas.

Perkembangan barcode sendiri dimulai dari tahun 1932, saat Wallace Flint membuat sistem pemeriksaan barang di sebuah perusahaan retail yang kemudian diikuti oleh perusahaan industri. Pada tahun 1948 sampai 1949 Bernard Silver dan Norman Joseph Woodland mengembangkan teknologi barcode ini menjadi lebih baik. Sampai akhirnya di tahun 1952, mereka mendapatkan hak paten dari hasil penelitian tersebut. Penggunaan barcode untuk keperluan komersial dimulai sejak tahun 1966.

Terdapat beberapa standar kode dalam barcode sesuai dengan kegunaan dan tujuan pemakaian barcode, seperti pada daftar berikut :

  • Uniform Product Code (UPC) : untuk checkout penjualan, persediaan, dan sebagainya pada toko retail.
  • Code 39 (Code 3 of 9) : identifikasi, inventarisasi, dan pengiriman pelacakan.
  • POSTNET : kode pos encoding di US mail.
  • European Article Number (EAN) : sebuah superset dari UPC yang memungkinkan digit ekstra untuk identifikasi negara.
  • Japanese Article Number (JAN) : serupa dengan EAN, digunakan di Jepang.
  • Bookland : berdasarkan nomor ISBN dan digunakan pada sampul buku.
  • ISSN bar code : berdasarkan nomor ISSN, digunakan pada majalah di luar AS.
  • Code 128 : digunakan dalam preferensi untuk Code 39 karena lebih kompak.
  • Interleaved 2 of 5 : digunakan dalam industri pelayaran dan gudang.
  • Codabar : digunakan oleh Federal Express, di perpustakaan dan bank darah.
  • MICR (Magnetic Ink Character Recognition) : sebuah font khusus yang digunakan untuk nomor di bagian bawah cek bank.
  • OCR-A : format pengenalan karakter optik yang digunakan pada sampul buku, untuk nomor ISBN agar bisa dibaca oleh manusia.
  • OCR-B : digunakan untuk mempermudah pembacaan barcode versi UPC, EAN, JAN, Bookland, dan ISSN dan Code 39.
  • Maxicode : digunakan oleh United Parcel Service.
  • PDF417 : suatu jenis barcode 2-D baru yang dapat encode sampai 1108 byte informasi; dapat terkompresi seperti pada sebuah portabel file data (PDF).

Beikut contoh sederhana untuk menggenerate barcode. Dan sudah dicek menggunakan barcode scanner dari Android Market.

Screenshot Barcode

Demo | Download


CRUD dengan XAJAX dan JQUERY

Banyak mahasiswa yang menanyakan cara melakukan CRUD (Create, Update, Delete Read) tanpa refresh. Berikut contoh sederhana.

Demo | Download


Integrasi FusionCharts dan CodeIgniter

Kita akan mengintegrasikan FusionCharts dengan CodeIgniter. Namun sebelumnya silahkan baca terlebih dahulu CRUD di CodeIgniter karena tahapan yang akan kita lakukan sekarang merupakan kelanjutan dari pembahasan postingan tersebut.

Pertama kita buat file FusionCharts.php

<?php
class FusionCharts
{
function encodeDataURL($strDataURL, $addNoCacheStr=false) {	
    if ($addNoCacheStr==true) {		
		if (strpos(strDataURL,"?")<>0)
			$strDataURL .= "&FCCurrTime=" . Date("H_i_s");
		else
			$strDataURL .= "?FCCurrTime=" . Date("H_i_s");
    }
	
	return urlencode($strDataURL);
}

function datePart($mask, $dateTimeStr) {
    @list($datePt, $timePt) = explode(" ", $dateTimeStr);
    $arDatePt = explode("-", $datePt);
    $dataStr = "";
	
    if (count($arDatePt) == 3) {
        list($year, $month, $day) = $arDatePt;
		
        switch ($mask) {
        case "m": return (int)$month;
        case "d": return (int)$day;
        case "y": return (int)$year;
        }
		
        return (trim($month . "/" . $day . "/" . $year));
    }
    return $dataStr;
}

function renderChart($chartSWF, $strURL, $strXML, $chartId, $chartWidth, $chartHeight) {
	if ($strXML=="")
        $tempData = "//Set the dataURL of the chart\n\t\tchart_$chartId.setDataURL(\"$strURL\")";
    else
        $tempData = "//Provide entire XML data using dataXML method\n\t\tchart_$chartId.setDataXML(\"$strXML\")";

    $chartIdDiv = $chartId . "Div";

	$render_chart = <<<RENDERCHART
	<div id="$chartIdDiv" align="center">
		Chart.
	</div>
	<script type="text/javascript">	
		var chart_$chartId = new FusionCharts("$chartSWF", "$chartId", "$chartWidth", "$chartHeight");
		$tempData
		
		chart_$chartId.render("$chartIdDiv");
	</script>
RENDERCHART;

  return $render_chart;
}

function renderChartHTML($chartSWF, $strURL, $strXML, $chartId, $chartWidth, $chartHeight) {
    $strFlashVars = "&chartWidth=" . $chartWidth . "&chartHeight=" . $chartHeight ;
    if ($strXML=="")
        $strFlashVars .= "&dataURL=" . $strURL;
    else
        $strFlashVars .= "&dataXML=" . $strXML;

$HTML_chart = <<<HTMLCHART
	<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"  width="$chartWidth" height="$chartHeight" id="$chartId">
		<param name="allowScriptAccess" value="always" />
		<param name="movie" value="$chartSWF"/>		
		<param name="FlashVars" value="$strFlashVars" />
		<param name="quality" value="high" />
		<embed src="$chartSWF" FlashVars="$strFlashVars" quality="high" width="$chartWidth" height="$chartHeight" name="$chartId" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
	</object>
HTMLCHART;

  return $HTML_chart;
}

function boolToNum($bVal) {
    return (($bVal==true) ? 1 : 0);
}
}
?>

File dengan syntax diatas merupakan hasil copy file dengan nama yang sama pada folder Code/PHP/Includes dari source yang terdapat pada FusionChartsFree dengan sedikit modifikasi.

Copy folder Charts yang terdapat pada FusionChartsFree ke htdocs/CodeIgniter/charts.

Copy pula file FusionCharts.js yang terdapat pada folder JSClass di FusionChartsFree ke htdocs/CodeIgniter/js.

Tambahkan method / fungsi pada file mahasiswa.php yang terdapat pada application/controllers seperti berikut

public function chart()
{			
	$this->load->library('FusionCharts');
	
	if($this->uri->segment(3) == '')
		$chartType = 'Column2D';
	else
		$chartType =$this->uri->segment(3);
	
	$width = '600';
	$height = '300';
	
	$chart = new FusionCharts($chartType, $width, $height);
	
	$caption = 'Grafik Mahasiswa';
	$xAxisName = 'Jenis Kelamin';
	$yAxisName = 'Jumlah';
	$decimalPrecision = '0';
	$formatNumberScale = '0';
	$showNames = '1';
	
	$strXML = "
	<graph caption='".$caption."' xAxisName='".$xAxisName."' yAxisName='".$yAxisName."' decimalPrecision='".$decimalPrecision."' formatNumberScale='".$formatNumberScale."'>
		<set name='Pria' value='".$this->mahasiswa_m->view_jenis_kelamin('Pria')->num_rows()."' color='AFD8F8' />
		<set name='Wanita' value='".$this->mahasiswa_m->view_jenis_kelamin('Wanita')->num_rows()."' color='F6BD0F' />
	</graph>";
	
	$data['chart'] = $chart->renderChartHTML(base_url().'charts/FCF_'.$chartType.'.swf', '', $strXML, 'chartId', $width, $height);
	
	$this->load->view('mahasiswa_chart_v', $data);
}

Tambahkan pula diatas tag <h1> pada file mahasiswa_v.php dan mahasiswa_form_v.php yang terdapat di folder application/views syntax berikut ini
<a href="<?PHP echo site_url(); ?>/mahasiswa/index">List</a> | 
<a href="<?PHP echo site_url(); ?>/mahasiswa/chart">Grafik</a>

Kemudian buat satu lagi file mahasiswa_chart_v.php masih di folder views dan ketikkan syntax berikut
<html>
<head>
	<title>Grafik Mahasiswa</title>
    <script src="<?PHP echo base_url(); ?>js/FusionCharts.js" type="text/javascript"></script>
</head>
<body>
	<a href="<?PHP echo site_url(); ?>/mahasiswa/index">List</a> | 
    <a href="<?PHP echo site_url(); ?>/mahasiswa/chart">Grafik</a>
    <h1>Grafik Mahasiswa</h1>
    <script type="text/javascript">
		function chart_onchange(val)
		{
			document.location =  '<?PHP echo site_url(); ?>/mahasiswa/chart/' + val;
		}
	</script>
    Chart Type
    <select onChange="chart_onchange(this.value);">
    	<option value="Column2D" <?PHP if($this->uri->segment(3) == 'Column2D') echo 'selected'; ?>>Column 2D</option>
        <option value="Column3D" <?PHP if($this->uri->segment(3) == 'Column3D') echo 'selected'; ?>>Column 3D</option>
        <option value="Line" <?PHP if($this->uri->segment(3) == 'Line') echo 'selected'; ?>>Line</option>
        <option value="Pie2D" <?PHP if($this->uri->segment(3) == 'Pie2D') echo 'selected'; ?>>Pie 2D</option>
        <option value="Pie3D" <?PHP if($this->uri->segment(3) == 'Pie3D') echo 'selected'; ?>>Pie 3D</option>
        <option value="Bar2D" <?PHP if($this->uri->segment(3) == 'Bar2D') echo 'selected'; ?>>Bar</option>
        <option value="Area2D" <?PHP if($this->uri->segment(3) == 'Area2D') echo 'selected'; ?>>Area</option>
        <option value="Doughnut2D" <?PHP if($this->uri->segment(3) == 'Doughnut2D') echo 'selected'; ?>>Doughnut</option>
    </select>
    <div><?PHP echo $chart; ?></div>
</body>
</html>

Tambahkan pula syntax pada file mahasiswa_m.php yang terdapat di folder application/models seperti berikut
public function view_jenis_kelamin($id)
{
	$sql = "select * from tbl_mahasiswa where jenis_kelamin='".$id."'";
	return $this->db->query($sql);
}

Terakhir kita tinggal jalankan di browser. Jika benar maka akan menghasilkan output seperti gambar di bawah ini

Demo | Download


CRUD di CodeIgniter

Kita lanjutkan kembali pembahasan CodeIgniter. Kali ini kita akan mengakses database dan memberikan aksi yang biasa dilakukan terhadap database yakni CRUD (Create, Read, Update, Delete).

Seperti yang telah kita ketahui bersama bahwa CI menerapkan konsep MVC (Model, View, Controller) dimana masing-masing memiliki peranan (layering).

Yang pertama kita lakukan adalah membuat database kampus.

CREATE DATABASE `kampus` ;

Kemudian dalam kasus ini kita akan membuat contoh data mahasiswa dalam tbl_mahasiswa.
CREATE TABLE `kampus`.`tbl_mahasiswa` (
`nim` VARCHAR( 10 ) NOT NULL ,
`nama` VARCHAR( 50 ) NOT NULL ,
`jenis_kelamin` VARCHAR( 10 ) NOT NULL ,
`kota` VARCHAR( 50 ) NOT NULL ,
`agama` VARCHAR( 25 ) NOT NULL ,
PRIMARY KEY ( `nim` )
)

Misalkan kita menempatkan source CI pada htdocs/CodeIgniter, maka lakukan konfigurasi pada file database.php yang terletak pada folder application/config. Sesuaikan nilai variabel seperti berikut
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'kampus';
$db['default']['dbdriver'] = 'mysql';

Buat sebuah file mahasiswa.php yang hendak kita jadikan sebagai controller (application/controllers) dan tuliskan syntax berikut
<?PHP
	class Mahasiswa extends CI_Controller
	{
		public function __construct()
		{
			parent::__construct();
			
			$this->load->database();
			$this->load->helper('url');
			$this->load->model('mahasiswa_m');
		}
		
		public function index()
		{
			$this->load->view('mahasiswa_v');
		}
		
		public function add()
		{
			$this->load->view('mahasiswa_form_v');
		}
		
		public function save()
		{
			$data['nim'] = $this->input->post('nim');
			$data['nama'] = $this->input->post('nama');
			$data['jenis_kelamin'] = $this->input->post('jenis_kelamin');
			$data['kota'] = $this->input->post('kota');
			$data['agama'] = $this->input->post('agama');
			
			$this->mahasiswa_m->save($data);
			$this->load->view('mahasiswa_v');
		}
		
		public function edit()
		{
			$row = $this->mahasiswa_m->view($this->uri->segment(3))->row();
			
			$data['nim'] = $row->nim;
			$data['nama'] = $row->nama;
			$data['jenis_kelamin'] = $row->jenis_kelamin;
			$data['kota'] = $row->kota;
			$data['agama'] = $row->agama;
			
			$this->load->view('mahasiswa_form_v', $data);
		}
		
		public function update()
		{
			$data['nim'] = $this->input->post('nim');
			$data['nama'] = $this->input->post('nama');
			$data['jenis_kelamin'] = $this->input->post('jenis_kelamin');
			$data['kota'] = $this->input->post('kota');
			$data['agama'] = $this->input->post('agama');
			
			$this->mahasiswa_m->update($data);
			$this->load->view('mahasiswa_v');
		}
		
		public function delete()
		{
			$this->mahasiswa_m->delete($this->uri->segment(3));
			$this->load->view('mahasiswa_v');
		}
	}
?>

Berikutnya adalah file mahasiswa_v.php yang kita simpan di folder application/views
<html>
<head>
	<title>Daftar Mahasiswa</title>
</head>
<body>
	<h1>Daftar Mahasiswa</h1>
    <a href="<?PHP echo site_url(); ?>/mahasiswa/add">Add</a>
    <table border="1">
    	<tr>
        	<th>Nim</th>
            <th>Nama</th>
            <th>Jenis Kelamin</th>
            <th>Asal Kota</th>
            <th>Agama</th>
            <th>Aksi</th>
        </tr>
        
        <?PHP
			$query = $this->mahasiswa_m->view_all();
			
			foreach($query->result() as $row)
			{
		?>
        
        <tr>
        	<td><?PHP echo $row->nim; ?></td>
            <td><?PHP echo $row->nama; ?></td>
            <td><?PHP echo $row->jenis_kelamin; ?></td>
            <td><?PHP echo $row->kota; ?></td>
            <td><?PHP echo $row->agama; ?></td>
            <td align="center">
            	<a href="<?PHP echo site_url(); ?>/mahasiswa/edit/<?PHP echo $row->nim; ?>">Edit</a> | 
            	<a href="<?PHP echo site_url(); ?>/mahasiswa/delete/<?PHP echo $row->nim; ?>">Delete</a>
            </td>
        </tr>
        
        <?PHP
			}
			
			if($query->num_rows() == 0)
			{
		?>
        
        <tr>
        	<td colspan="6">Tidak ada data</td>
        </tr>
        
        <?PHP
			}
		?>
        
    </table>
</body>
</html>

dan file mahasiswa_form_v.php
<html>
<head>
	<title>Data Mahasiswa</title>
</head>
<body>
    <h1>Data Mahasiswa</h1>
    
    <?PHP
		if($this->uri->segment(2) == "add")
		{
	?>
    
	<form action="<?PHP echo site_url(); ?>/mahasiswa/save" method="post">
	
    <?PHP
		}
		else
		{
	?>
    
    <form action="<?PHP echo site_url(); ?>/mahasiswa/update" method="post">
    
    <?PHP
		}
	?>
    
    <table>
    	<tr>
        	<td>Nim</td>
            <td><input type="text" name="nim" <?PHP if(!empty($nim)) echo 'value="'.$nim.'" readonly'; ?> /></td>
        </tr>
        <tr>
        	<td>Nama</td>
            <td><input type="text" name="nama" <?PHP if(!empty($nama)) echo 'value="'.$nama.'"'; ?> /></td>
        </tr>
        <tr>
        	<td>Jenis Kelamin</td>
            <td>
            	<input type="radio" name="jenis_kelamin" value="Pria" <?PHP if(!empty($jenis_kelamin) && $jenis_kelamin == "Pria") echo 'checked'; ?> /> Pria
                <input type="radio" name="jenis_kelamin" value="Wanita" <?PHP if(!empty($jenis_kelamin) && $jenis_kelamin == "Wanita") echo 'checked'; ?> /> Wanita
            </td>
        </tr>
        <tr>
        	<td>Asal Kota</td>
            <td><input type="text" name="kota" <?PHP if(!empty($kota)) echo 'value="'.$kota.'"'; ?> /></td>
        </tr>
        <tr>
        	<td>Agama</td>
            <td>
            	<select name="agama">
                	<option value="Islam" <?PHP if(!empty($agama) && $agama == "Islam") echo 'selected'; ?>>Islam</option>
                    <option value="Kristen Protestan" <?PHP if(!empty($agama) && $agama == "Kristen Protestan") echo 'selected'; ?>>Kristen Protestan</option>
                    <option value="Kristen Katholik" <?PHP if(!empty($agama) && $agama == "Kristen Katholik") echo 'selected'; ?>>Kristen Katholik</option>
                    <option value="Hindu" <?PHP if(!empty($agama) && $agama == "Hindu") echo 'selected'; ?>>Hindu</option>
                    <option value="Budha" <?PHP if(!empty($agama) && $agama == "Budha") echo 'selected'; ?>>Budha</option>
                </select>
            </td>
        </tr>
    </table>
    
    <?PHP
		if($this->uri->segment(2) == "add")
		{
	?>
    
	<input type="submit" value="Save" />
	
    <?PHP
		}
		else
		{
	?>
    
    <input type="submit" value="Update" />
    
    <?PHP
		}
	?>
    <input type="button" value="Cancel" onClick="history.go(-1);" />
    </form>
</body>
</html>

Buatkan pula file mahasiswa_m.php sebagai model dan tempatkan pada folder application/models
 <?PHP
	class Mahasiswa_M extends CI_Model
	{
		public function view_all()
		{
			$sql = "select * from tbl_mahasiswa";
			return $this->db->query($sql);
		}
		
		public function view($id)
		{
			$sql = "select * from tbl_mahasiswa where nim='".$id."'";
			return $this->db->query($sql);
		}
		
		public function save($data)
		{
			$sql = "insert into tbl_mahasiswa values('".$data['nim']."', '".$data['nama']."', '".$data['jenis_kelamin']."', '".$data['kota']."', '".$data['agama']."')";
			$this->db->query($sql);
		}
		
		public function update($data)
		{
			$sql = "update tbl_mahasiswa set nama='".$data['nama']."', jenis_kelamin='".$data['jenis_kelamin']."', kota='".$data['kota']."', agama='".$data['agama']."' where nim='".$data['nim']."'";
			$this->db->query($sql);
		}
		
		public function delete($id)
		{
			$sql = "delete from tbl_mahasiswa where nim='".$id."'";
			$this->db->query($sql);
		}
	}
?>

Yang terakhir lakukan konfigurasi pada file routes.php yang terdapat pada folder application/config. Temukan bagian seperti di bawah ini
$route['default_controller'] = "mahasiswa";

dan juga file config.php pada folder yang sama
$config['base_url'] = 'http://localhost/CodeIgniter/';

Run di browser kesayangan masing-masing dengan mengetikkan http://localhost/CodeIgniter dan hasilnya dapat dilihat pada gambar berikut

CRUD


Uri Routing CodeIgniter

Biasanya cara pemanggilan url di CI adalah http://[host]/[segment 1]/[segment 2]/[segment n]. Sebagai contoh http://localhost/CodeIgniter/index.php/home/index dimana biasanya segment 1 mereference kepada class controller sedangkan segment 2 mereference kepada fungsi yang terdapat pada controller. Segment berikutnya (3 … dst) dapat kita gunakan sebagai parameter kiriman sesuai dengan keperluan kita.


Upload File

Baru saja ada ade-ade mahasiswa menanyakan kepada saya bagaimana cara upload file di php. Ini terkait tugas projek akhir pada mata kuliah Pemrograman Berbasis Web yang diberikan kepada mereka. Saya lupa kalo bagian ini belum diajarkan ke mereka. Oke langsung aja kita bahas.

Siapkan sebuah file php dengan nama upload.php di folder web server kita (misal : htdocs/upload). Kemudian ketikkan syntax berikut

<html>
<body>
	<h1>Upload File</h1>
	<form method="post" enctype="multipart/form-data" action="upload_add.php">
    	<input type="file" name="file" />
        <input type="submit" value="Simpan" />
    </form>
    
    <table border="1">
    	<tr>
        	<th>No.</th>
            <th>Filename</th>
        </tr>
        
        <?PHP
			include "koneksi.php";
			
			$query = "select * from tbl_upload";
			$result = mysql_query($query);
			
			$i = 1;
			
			while($data = mysql_fetch_array($result))
			{
		?>
        
        <tr>
        	<td><?PHP echo $i++; ?></td>
            <td><a href="fileDir/<?PHP echo $data['filename']; ?>"><?PHP echo $data['filename']; ?></a></td>
        </tr>
        
        <?PHP
			}
			
			if(mysql_num_rows($result) == 0)
			{
		?>
        
        <tr>
        	<td colspan="2">Tidak ada data</td>
        </tr>
        
        <?PHP
			}
		?>
        
    </table>
</body>
</html>

Buat pula file dengan nama upload_add.php pada folder yang sama. Ketikkan syntax berikut
<?PHP
	include "koneksi.php";
	
	$file = $_FILES['file']['name'];
	$tmp = $_FILES['file']['tmp_name'];
	
	$uploadDir = "fileDir/";
	$filename = $uploadDir.$file;
	move_uploaded_file($tmp, $filename);
	
	$query = "insert into tbl_upload values('', '".$file."')";
	$result = mysql_query($query);
	
	if($result)
		header("location:upload.php");
?>

Buat pula file php untuk koneksi ke database (koneksi.php) dengan syntax sebagai berikut
<?PHP
	$host = "localhost";
	$username = "root";
	$password = "";
	$database_name = "upload";
	
	mysql_connect($host, $username, $password) or die("Koneksi gagal");
	mysql_select_db($database_name) or die("Database tidak ditemukan");;
?>

Kemudian run query SQL berikut di phpmyadmin
CREATE TABLE `tbl_upload` (<br />
  `id` int(11) NOT NULL AUTO_INCREMENT,<br />
  `filename` varchar(50) NOT NULL,<br />
  PRIMARY KEY (`id`)<br />
);

Buat sebuah folder sebagai tempat penyimpanan file-file upload an kita misal kita beri nama fileDir.

Kemudian kita tinggal coba jalankan di browser kesayangan masing-masing dan ketikkan http://localhost/upload/. Dan outputnya dapat kita lihat seperti gambar dibawah ini

Upload

Demo | Download


Activity Selection

Berikut implementasi Activity Selection dalam bahasa pemrograman C

#include <stdio.h>
#include <conio.h>

#define X 50

void activity(int i, int j, int s[X], int f[X]);

main()
{
   int n, i, s[X], f[X];
   
   scanf("%d", &n);
   
   for(i=0; i<n; i++)
      scanf("%d %d", &s[i], &f[i]);
   
   activity(0, n, s, f);
   
   getch();
   return 0;
}

void activity(int i, int j, int s[X], int f[X])
{
   int m=0, S, F;
   
   i++;
   F = f[i-1];
   
   for(; i<j; i++)
   {
      if(s[i]>=F)
      {
         m++;
         F = f[i];
      }
   }
   
   printf("\n%d\n", ++m);
}

Output dari syntax diatas dapat dilihat pada gambar berikut

Activity Selection

Download


Binary Search

Berikut implementasi dari Algoritma Binary Search dengan menggunakan bahasa pemrograman C

#include <stdio.h>
#include <conio.h>

#define X 50

int binarySearch(int arr[], int value, int left, int right);

main()
{
   int n, i, *k, j, **a, *x, *tmp;
   
   scanf("%d", &n);
   
   k = (int*) malloc(n * sizeof(int));
   x = (int*) malloc(n * sizeof(int));
   tmp = (int*) malloc(n * sizeof(int));
   *a = (int*) malloc(n * sizeof(int));
   
   for(i=0; i<n; i++)
   {
      scanf("%d", &k[i]);
      
      a[i] = (int*) malloc(n * sizeof(int));
      
      for(j=0; j<k[i]; j++)
         scanf("%d", &a[i][j]);
      
      scanf("%d", &x[i]);
   }
   
   for(i=0; i<n; i++)
   {
      for(j=0; j<k[i]; j++)
         tmp[j] = a[i][j];
      
      printf("\n%d", binarySearch(tmp, x[i], 0, k[i]-1));
   }
   
   getch();
   return 0;
}

int binarySearch(int arr[], int value, int left, int right)
{
   while(left <= right)
   {
      int middle = (left + right) / 2;
      
      if (arr[middle] == value)
         return middle;
      else if (arr[middle] > value)
         right = middle - 1;
      else
         left = middle + 1;
   }
   
   return -1;
}

Berikut output dari syntax diatas

Binary Search

Download


Algoritma Strassen

Algoritma Strassen merupakan sebuah algoritma yang digunakan untuk perkalian matriks yang secara asimtot lebih cepat dari pada algoritma perkalian matriks standar dan sangat berguna untuk penggunaan matriks berukuran besar.

Perkalian matriks standar melakukan n3=nlog28 sedangkan Algoritma Strassen nlog27.

Misal kita memiliki

Matriks

dimana C = AB

maka proses perkalian matriks standar adalah

C1,1 = A1,1 * B1,1 + A1,2 * B2,1
C1,2 = A1,1 * B1,2 + A1,2 * B2,2
C2,1 = A2,1 * B1,1 + A2,2 * B2,1
C2,2 = A2,1 * B1,2 + A2,2 * B2,2

Sedangkan dengan menggunakan Algoritma Strassen dilakukan perhitungan berikut

P1 = (A1,1 + A2,2) * (B1,1 + B2,2)
P2 = (A2,1 + A2,2) * B1,1
P3 = A1,1 * (B1,2 – B2,2)
P4 = A2,2 * (B2,1 – B1,1)
P5 = (A1,1 + A1,2) * B2,2
P6 = (A2,1 – A1,1) * (B1,1 + B1,2)
P7 = (A1,2 – A2,2) * (B2,1 + B2,2)

C1,1 = P1 + P4 – P5 + P7
C1,2 = P3 + P5
C2,1 = P2 + P4
C2,2 = P1 – P2 + P3 + P6

Berikut implementasi Algoritma Strassen pada bahasa pemrograman C

#include <stdio.h>
#include <conio.h>

#define X 2 //Ukuran Matrix

main()
{
   int matrixA[X][X], matrixB[X][X], i, j, p1, p2, p3, p4, p5, p6, p7;
   
   for(i=0; i<X; i++)
   {
      for(j=0; j<X; j++)
         scanf("%d", &matrixA[i][j]);
   }
   
   for(i=0; i<X; i++)
   {
      for(j=0; j<X; j++)
         scanf("%d", &matrixB[i][j]);
   }
   
   p1 = (matrixA[0][0] + matrixA[1][1]) * (matrixB[0][0] + matrixB[1][1]);
   p2 = (matrixA[1][0] + matrixA[1][1]) * matrixB[0][0];
   p3 = matrixA[0][0] * (matrixB[0][1] - matrixB[1][1]);
   p4 = matrixA[1][1] * (matrixB[1][0] - matrixB[0][0]);
   p5 = (matrixA[0][0] + matrixA[0][1]) * matrixB[1][1];
   p6 = (matrixA[1][0] - matrixA[0][0]) * (matrixB[0][0] + matrixB[0][1]);
   p7 = (matrixA[0][1] - matrixA[1][1]) * (matrixB[1][0] + matrixB[1][1]);
   
   printf("\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n", p1, p2, p3, p4, p5, p6, p7);
   
   printf("\nA x B\n");
   printf("%d\t%d\n%d\t%d", (p1 + p4 - p5 + p7), (p3 + p5), (p2 + p4), (p1 - p2 + p3 + p6));
   
   getch();
   return 0;
}

Dibawah ini gambaran output dari syntax diatas

Algoritma Strassen

Download

Semoga bermanfaat…


CodeIgniter

CodeIgniter

Salah satu framework PHP yang populer adalah CodeIgniter dan masuk kedalam urutan kedua dari Top 10 Ranking PHP Frameworks versi http://www.phpframeworks.com/top-10-php-frameworks/. Selain CodeIgniter ada beberapa framework php lain yang cukup populer diantaranya CakePHP, Zend, Symfony, dll.

CodeIgniter memakai konsep MVC (Model, View, Controller).

Source dapat diunduh di situs resminya http://codeigniter.com/

Sekarang kita akan coba membuat syntax sederhana menggunakan framework CI. Versi CI yang kita gunakan kali ini adalah 2.1.0

Setelah file CI hasil unduhan diekstrak, pindahkan ke folder web server kita (htdocs/CodeIgniter).

Kemudian kita buat file home.php yang akan kita jadikan sebagai controller. Simpan didalam folder application/controllers.

<?PHP
	class Home extends CI_Controller
	{
		public function index()
		{
			$this->load->view('home_v');
		}
	}
?>

Buat pula file home_v.php yang kita simpan di folder application/views.
<html>
<body>
	<h1>Hello World</h1>
</body>
</html>

Kita dapat coba di browser kesayangan masing-masing dengan mengetikkan http://localhost/CodeIgniter/index.php/home dan outputnya seperti gambar berikut

Hello World

Agar kita dapat mengakses langsung dengan alamat http://localhost/CodeIgniter/, maka kita perlu mengubah file routes.php yang terdapat di application/config. Cari $route['default_controller'] kemudian isi dengan nama controller yang tadi telah kita buat.

$route['default_controller'] = "home";


Ikuti

Get every new post delivered to your Inbox.