Tugas III: BAB 3 ( Proses – Proses)
LATIHAN SOAL :
1. Sebutkan state pada proses dan jelaskan diagram pada proses!
State : adalah suatu kesatuan yang terpisah namun adakalanya proses – proses tersebut butuh untuk saling berinteraksi.
Status proses terdiri dari
a)New : Proses sedang dibuat
b)Running : Proses sedang dieksekusi
c)Waiting : Proses sedang menunggu beberapa event yang akan terjadi (seperti menunggu untuk menyelesaikan I/O atau menerima sinyal)
d)Ready : Proses menunggu jatah waktu dari CPU untuk diproses
e)Terminatted : Proses telah selesai dieksekusi.
Berikut diagram prosesnya :
admitted exit exit
interrupt
scheduler dispach
I/O or event completion I/O or event wait
Pada saat proses dieksekusi, akan terjadi perubahan status, status proses didefinisikan sebagai bagian dari aktifitas proses yang sedang berlangsung saat itu.
2.Apa yang dimaksud dengan short-term scheduler dan longterm-scheduler?
short-term scheduler (CPU scheduler) : memilih proses –proses yang siap untuk dieksekusi dan mengalokasikan CPU ke salah satu dari proses –proses tersebut.
longterm-scheduler (job scheduler) : Menyeleksi proses –proses mana yang harus dibawa ke reday queue.
3.Jelaskan 4 alasan mengapa proses harus bekerja sama?
a)Proses yang terpisah adalah proses yang berakibat atau diakibatkan oleh eksekusi dari proses lain.
b)Sedangkan proses yang saling bekerja sama adalah proses yang dapat berakibat atau diakibatkan oleh eksekusi dari proses lain.
c)Keuntungan proses yang saling bekerjasama adalah terjadi pembagian informasi, meningkatkan kecepatan komputasi, proses dapat dibagi dalam modul-modul dan lebih memberikan kenyamanan pada programmer.
d)Untuk mengilustrasikan proses-proses yang saling bekerjasama ini digunakan producer-consumer problem.
4. Tuliskan kode program untuk penyelesaian permasalahan producer consumer dengan menggunakan shared memory.
# define BUFER_SIZE 10
Typedef struct {
. . .
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
Proses Producer :
item nextProduced;
while (1) {
while (((in + 1) % BUFFER_SIZE) == OUT)
; /* do nothing */
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
}
Proses Consumer :
Item nextConsumed;
While (1) {
While (in == out)
; /* do nothing */
nextConsumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
}
5. Diketahui skema komunikasi antar proses menggunakan mailbox
a.Proses p ingin menunggu 2 pesan, satu dari mailbox A dan satu dari mailbox B. Tunujukan urutan send dan receive yang dieksekusi.
Urutan eksekusinya :
1.Sambungan antara dua proses diberikan jika antara kedua proses tersebut saling menggunakan mailbox secara bersama –sama
2.Sambungan tersebut disambungkan dengan beberapa proses
3.Antar tiap – tiap pasangan proses yang lain berkomunikasi, ada sejumlah sambungan yang berbeda, tiap – tiap link berhubungan dengan satu mailbox.
4.Sambungan tersebut mungkin bersipat unidirectional, namun biasanya bidirectional
b.Bagaimana urutan send dan receive yang dieksekusi P jika P ingin menunggu satu pesan dari mailbox A atau mailbox B (salah satu atau keduanya).
Urutan eksekusinya :
P1,p2, dan p3 menggunakan mailbox A bersama –sama . p1 mengirim pesan sedangkan p2 dan p3 menjalankan operasi receife. Solusi ini dapat menggunakan salah satu cara dibawah ini :
Mengijinkan satu sambungan dihubungkan dengan paling banyak dua proses.
Mengijinkan hanya satu proses pada satu waktu mengeksekusi proses receife.
Mengijinkan sistem untuk memilih penerima tertentu. Proses pengirim diberitahukan proses mana yang menerima
6.Jelaskan apa yang maksud dengan thread dan struktur dari thread?
Thread : Suatu unit dasar dari CPU utilization yang berisi program counter, kumpulan register, dan ruang satck disebut dengan thread lighweigt proces.
Struktur thread :
Code
Data
Files
Register
Stack
7. jelaskan empat keuntungan menggunakan threads pada multyple process?
a.Pada respon lebih cepat
b.Menggunakan resource bersama –sama
c.Lebih ekonomis
d.Menigkatkan utilitas arsitektur mikroprocessor
8. Apa perbedaan antara user-level thread dan kernel-supported threads?
user-level thread : Thread yang diatur dengan menggunakan pustaka user level thread. Contoh sistem yang menggunakan user thread adalah POSIX Ptherads, Mach C-threads dan Solaris Threads.
kernel-supported threads : Thread yang didukung oleh kernel. Contoh sistem yang menggunakan kernel thread adalah Windows 95/98/NT/2000,Solaris,Tru64 UNIX,BeOS dan LINUX.
9. Ada 3 model multithredaing, Jelaskan?
a.Many-to-one : beberapa user level thread dipetakan kesatu kernel thread dan digunakan pada sistem yang tidak mendukung kernel threads
b.One-to-One : setiap user level threads dipetakan ke kernel therad.Misalnya pada Windows 95/98/NT/2000 dan OS/2.
c.Many-to-Many : user level thread dipetakan ke beberapa kernel threads, pada sistem operasi ini akan dibuat sejumlah kernel thread, contohnya solaris 2 dan Windows NT/2000 dengan ThreadFiber package.
10. Jelaskan state pada java thread?
Java Thread : Bahasa pemrograman java menggunakan java thread yang dibuat dengan menggunakan class thread dan mengimplementasikan antar muka yang bersipat runnable (dapat dijalankan). Java thread diatur oleh java virtual machine (JVM). Java thread terdiri dari state new,runnable,blocked, dan dead.
Kamis, 03 September 2009
Jumat, 10 Juli 2009
list & sort
<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("1");
list.Tambah("8");
list.Tambah("2");
document.write("Isi Linked List <br>");
document.write("--------------- <br>");
for (i=0; i<3; i++)
{
document.write(list.Item(i) + "<br>");
}
document.write("--------------- <br>");
document.write(list.toArray());
//-->
</script>
<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 denga Koma :
<hr>
<input type = text name=Data size=30 malue="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>
<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("1");
list.Tambah("8");
list.Tambah("2");
document.write("Isi Linked List <br>");
document.write("--------------- <br>");
for (i=0; i<3; i++)
{
document.write(list.Item(i) + "<br>");
}
document.write("--------------- <br>");
document.write(list.toArray());
//-->
</script>
<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 denga Koma :
<hr>
<input type = text name=Data size=30 malue="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>
Rabu, 01 Juli 2009
gabungan
<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>
<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>
Rabu, 24 Juni 2009
Kalender
<script>
setCal()
function getTime() {
// initialize time-related variables with current time settings
var now = new Date()
var hour = now.getHours()
var minute = now.getMinutes()
now = null
var ampm = ""
// validate hour values and set value of ampm
if (hour >= 24) {
hour -= 24
} else
hour = (hour == 0) ? 24 : hour
// add zero digit to a one digit minute
if (minute < 10)
minute = "0" + minute // do not parse this number!
// return time string
return hour + ":" + minute + " " + ampm
}
function leapYear(year) {
if (year % 4 == 0) // basic rule
return true // is leap year
/* else */ // else not needed when statement is "return"
return false // is not leap year
}
function getDays(month, year) {
// create array to hold number of days in each month
var ar = new Array(12)
ar[0] = 31 // Januari
ar[1] = (leapYear(year)) ? 29 : 28 // Pebruari
ar[2] = 31 // Maret
ar[3] = 30 // April
ar[4] = 31 // Mei
ar[5] = 30 // Juni
ar[6] = 31 // Juli
ar[7] = 31 // Agustus
ar[8] = 30 // September
ar[9] = 31 // Oktober
ar[10] = 30 // November
ar[11] = 31 // Desember
// return number of days in the specified month (parameter)
return ar[month]
}
function getMonthName(month) {
// create array to hold name of each month
var ar = new Array(12)
ar[0] = "Januari"
ar[1] = "Pebruari"
ar[2] = "Maret"
ar[3] = "April"
ar[4] = "Mei"
ar[5] = "Juni"
ar[6] = "Juli"
ar[7] = "Agustus"
ar[8] = "September"
ar[9] = "Oktober"
ar[10] = "November"
ar[11] = "Desember"
// return name of specified month (parameter)
return ar[month]
}
function setCal() {
// standard time attributes
var now = new Date()
var year = now.getYear()
if (year < 1000)
year+=1900
var month = now.getMonth()
var monthName = getMonthName(month)
var date = now.getDate()
now = null
// create instance of first day of month, and extract the day on which it occurs
var firstDayInstance = new Date(year, month, 1)
var firstDay = firstDayInstance.getDay()
firstDayInstance = null
// number of days in current month
var days = getDays(month, year)
// call function to draw calendar
drawCal(firstDay + 1, days, date, monthName, year)
}
function drawCal(firstDay, lastDate, date, monthName, year) {
// constant table settings
var headerHeight = 15// height of the table's header cell
var border = 2 // 3D height of table's border
var cellspacing = 4 // width of table's border
var headerColor = "midnightblue" // color of table's header
var headerSize = "+3" // size of tables header font
var colWidth = 10 // width of columns in table
var dayCellHeight = 5 // height of cells containing days of the week
var dayColor = "darkblue" // color of font representing week days
var cellHeight = 5 // height of cells representing dates in the calendar
var todayColor = "red" // color specifying today's date in the calendar
var timeColor = "purple" // color of font representing current time
// create basic table structure
var text = "" // initialize accumulative variable to empty string
text += '<CENTER>'
text += '<TABLE BORDER=' + border + ' CELLSPACING=' + cellspacing + '>' // table settings
text += '<TH COLSPAN=7 HEIGHT=' + headerHeight + '>' // create table header cell
text += '<FONT COLOR="' + headerColor + '" SIZE=' + headerSize + '>' // set font for table header
text += monthName + ' ' + year
text += '</FONT>' // close table header's font settings
text += '</TH>' // close header cell
// variables to hold constant settings
var openCol = '<TD WIDTH=' + colWidth + ' HEIGHT=' + dayCellHeight + '>'
openCol += '<FONT COLOR="' + dayColor + '">'
var closeCol = '</FONT></TD>'
// create array of abbreviated day names
var weekDay = new Array(7)
weekDay[0] = "Minggu"
weekDay[1] = "Senin"
weekDay[2] = "Selasa"
weekDay[3] = "Rabu"
weekDay[4] = "Kamis"
weekDay[5] = "Jumat"
weekDay[6] = "Sabtu"
// create first row of table to set column width and specify week day
text += '<TR ALIGN="center" VALIGN="center">'
for (var dayNum = 0; dayNum < 7; ++dayNum) {
text += openCol + weekDay[dayNum] + closeCol
}
text += '</TR>'
// declaration and initialization of two variables to help with tables
var digit = 1
var curCell = 1
for (var row = 1; row <= Math.ceil((lastDate + firstDay - 1) / 7); ++row) {
text += '<TR ALIGN="right" VALIGN="top">'
for (var col = 1; col <= 7; ++col) {
if (digit > lastDate)
break
if (curCell < firstDay) {
text += '<TD></TD>';
curCell++
} else {
if (digit == date) { // current cell represent today's date
text += '<TD HEIGHT=' + cellHeight + '>'
text += '<FONT COLOR="' + todayColor + '">'
text += digit
text += '</FONT><BR>'
text += '<FONT COLOR="' + timeColor + '" SIZE=2>'
text += '<CENTER>' + getTime() + '</CENTER>'
text += '</FONT>'
text += '</TD>'
} else
text += '<TD HEIGHT=' + cellHeight + '>' + digit + '</TD>'
digit++
}
}
text += '</TR>'
}
// close all basic table tags
text += '</TABLE>'
text += '</CENTER>'
// print accumulative HTML string
document.write(text)
}
</script>
<p align="center"><font face="arial" size="-2">This free script provided by</font><br>
<font face="arial, helvetica" size="-2"><a href="http://javascriptkit.com">JavaScript
Kit</a></font></p>
setCal()
function getTime() {
// initialize time-related variables with current time settings
var now = new Date()
var hour = now.getHours()
var minute = now.getMinutes()
now = null
var ampm = ""
// validate hour values and set value of ampm
if (hour >= 24) {
hour -= 24
} else
hour = (hour == 0) ? 24 : hour
// add zero digit to a one digit minute
if (minute < 10)
minute = "0" + minute // do not parse this number!
// return time string
return hour + ":" + minute + " " + ampm
}
function leapYear(year) {
if (year % 4 == 0) // basic rule
return true // is leap year
/* else */ // else not needed when statement is "return"
return false // is not leap year
}
function getDays(month, year) {
// create array to hold number of days in each month
var ar = new Array(12)
ar[0] = 31 // Januari
ar[1] = (leapYear(year)) ? 29 : 28 // Pebruari
ar[2] = 31 // Maret
ar[3] = 30 // April
ar[4] = 31 // Mei
ar[5] = 30 // Juni
ar[6] = 31 // Juli
ar[7] = 31 // Agustus
ar[8] = 30 // September
ar[9] = 31 // Oktober
ar[10] = 30 // November
ar[11] = 31 // Desember
// return number of days in the specified month (parameter)
return ar[month]
}
function getMonthName(month) {
// create array to hold name of each month
var ar = new Array(12)
ar[0] = "Januari"
ar[1] = "Pebruari"
ar[2] = "Maret"
ar[3] = "April"
ar[4] = "Mei"
ar[5] = "Juni"
ar[6] = "Juli"
ar[7] = "Agustus"
ar[8] = "September"
ar[9] = "Oktober"
ar[10] = "November"
ar[11] = "Desember"
// return name of specified month (parameter)
return ar[month]
}
function setCal() {
// standard time attributes
var now = new Date()
var year = now.getYear()
if (year < 1000)
year+=1900
var month = now.getMonth()
var monthName = getMonthName(month)
var date = now.getDate()
now = null
// create instance of first day of month, and extract the day on which it occurs
var firstDayInstance = new Date(year, month, 1)
var firstDay = firstDayInstance.getDay()
firstDayInstance = null
// number of days in current month
var days = getDays(month, year)
// call function to draw calendar
drawCal(firstDay + 1, days, date, monthName, year)
}
function drawCal(firstDay, lastDate, date, monthName, year) {
// constant table settings
var headerHeight = 15// height of the table's header cell
var border = 2 // 3D height of table's border
var cellspacing = 4 // width of table's border
var headerColor = "midnightblue" // color of table's header
var headerSize = "+3" // size of tables header font
var colWidth = 10 // width of columns in table
var dayCellHeight = 5 // height of cells containing days of the week
var dayColor = "darkblue" // color of font representing week days
var cellHeight = 5 // height of cells representing dates in the calendar
var todayColor = "red" // color specifying today's date in the calendar
var timeColor = "purple" // color of font representing current time
// create basic table structure
var text = "" // initialize accumulative variable to empty string
text += '<CENTER>'
text += '<TABLE BORDER=' + border + ' CELLSPACING=' + cellspacing + '>' // table settings
text += '<TH COLSPAN=7 HEIGHT=' + headerHeight + '>' // create table header cell
text += '<FONT COLOR="' + headerColor + '" SIZE=' + headerSize + '>' // set font for table header
text += monthName + ' ' + year
text += '</FONT>' // close table header's font settings
text += '</TH>' // close header cell
// variables to hold constant settings
var openCol = '<TD WIDTH=' + colWidth + ' HEIGHT=' + dayCellHeight + '>'
openCol += '<FONT COLOR="' + dayColor + '">'
var closeCol = '</FONT></TD>'
// create array of abbreviated day names
var weekDay = new Array(7)
weekDay[0] = "Minggu"
weekDay[1] = "Senin"
weekDay[2] = "Selasa"
weekDay[3] = "Rabu"
weekDay[4] = "Kamis"
weekDay[5] = "Jumat"
weekDay[6] = "Sabtu"
// create first row of table to set column width and specify week day
text += '<TR ALIGN="center" VALIGN="center">'
for (var dayNum = 0; dayNum < 7; ++dayNum) {
text += openCol + weekDay[dayNum] + closeCol
}
text += '</TR>'
// declaration and initialization of two variables to help with tables
var digit = 1
var curCell = 1
for (var row = 1; row <= Math.ceil((lastDate + firstDay - 1) / 7); ++row) {
text += '<TR ALIGN="right" VALIGN="top">'
for (var col = 1; col <= 7; ++col) {
if (digit > lastDate)
break
if (curCell < firstDay) {
text += '<TD></TD>';
curCell++
} else {
if (digit == date) { // current cell represent today's date
text += '<TD HEIGHT=' + cellHeight + '>'
text += '<FONT COLOR="' + todayColor + '">'
text += digit
text += '</FONT><BR>'
text += '<FONT COLOR="' + timeColor + '" SIZE=2>'
text += '<CENTER>' + getTime() + '</CENTER>'
text += '</FONT>'
text += '</TD>'
} else
text += '<TD HEIGHT=' + cellHeight + '>' + digit + '</TD>'
digit++
}
}
text += '</TR>'
}
// close all basic table tags
text += '</TABLE>'
text += '</CENTER>'
// print accumulative HTML string
document.write(text)
}
</script>
<p align="center"><font face="arial" size="-2">This free script provided by</font><br>
<font face="arial, helvetica" size="-2"><a href="http://javascriptkit.com">JavaScript
Kit</a></font></p>
Pengurutan (Sort)
<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>
<input type=text name=Data size=30 value="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>
<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>
<input type=text name=Data size=30 value="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>
Rabu, 17 Juni 2009
Graph
<html>
<head>
<title>Dijkstra Algoritms </title>
<script>
<!--
alert("Taet Dijkstra");
//-->
</script>
</head>
<body>
<script language = "javascript">
var NilaiAcuan =10000
var TakTerdefinisi=-1
var Nama Verteks =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 =new Array(JumlahVerteks)
var Kunjungan =new Array(JumlahVerteks)
var Sebelum =new Array(JumlahVerteks)
for (i=0; i<JumlahVerteks; i++)
{
Posisi[i] = NilaiAcuan
Sebelum[i] = TakTerdefinisi
Kunjungan[i] =false
}
Posisi[Awal] =0
var Verteks;
for (Verteks = 0; Verteks < JumlahVerteks; Verteks++) {
var JarakTerpendek =NilaiAcuan, Berhenti =-1
for (i=0; i < JumlahVerteks; i++)
{
if (!Kunjungan[i])
{
if (posisi[i] <= JarakTerpendek {
JarakTerpendek = Posisi[i]; Berhenti =i;
}
}
}
Kunjungan[Berhenti] = true
for (i=0; i < JumlahVerteks; i++)
{
if (!Kunjungan [i])
{
var w = Bobot (Berhenti, i);
if (Posisi[Berhenti]+w < Posisi[i])
{
Posisi[i] = Posisi[Berhenti]+w;
Sebelum[i] = Berhenti;
}
}
}
}
i=d
if (Posisi[i] < NilaiAcuan) {
var Lintangan = NamaVerteks [i];
var Verteks = i;
while (Verteks>0)
{
Verteks = Sebelum[Verteks];
if (Verteks>=0) Lintasan = NamaVereteks [Verteks] + '->' + Lintasan;
{
message ("Jarak ; "+Posisi[i]+'('Lintasan+')'+'<br>');
}else
{
message ("Tidak ada Jalur")
}
}
function init() {
var x = NilaiAcuan
Matriks[0]=new Array(0,2,3,x,x,x)
Matriks[1]=new Array(2,0,3,6,x,x)
Matriks[2]=new Array(3,3,0,3,5,x)
Matriks[3]=new Array(x,6,3,0,1,3)
Matriks[4]=new Array(x,x,5,1,0,1)
Matriks[5]=new Array(x,x,x,3,1,0)
var Awal='<pre>'
Awal = Awal + 'A--2-B-6--D--3-F'+'<br>'
Awal = Awal + ' \ | /| / '+'<br>'
Awal= Awal + ' 3 3 3 1 1 '+'<br>'
Awal= Awal + ' \ | / | / '+'<br>'
Awal = Awal + ' \|/ |/ '+'<br>'
Awal = Awal + ' C--5-E '+'<br>'
Awal = Awal +'</pre>'
message (Awal.replace(/(\d)+/g, '<font color ="red">$1</font>'));
}
init()
var Dari=0 // A
var Ke =5 // F
Dijkstra(Matriks.length,Dari,Ke);
//-->
</script>
</body>
</html>
<head>
<title>Dijkstra Algoritms </title>
<script>
<!--
alert("Taet Dijkstra");
//-->
</script>
</head>
<body>
<script language = "javascript">
var NilaiAcuan =10000
var TakTerdefinisi=-1
var Nama Verteks =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 =new Array(JumlahVerteks)
var Kunjungan =new Array(JumlahVerteks)
var Sebelum =new Array(JumlahVerteks)
for (i=0; i<JumlahVerteks; i++)
{
Posisi[i] = NilaiAcuan
Sebelum[i] = TakTerdefinisi
Kunjungan[i] =false
}
Posisi[Awal] =0
var Verteks;
for (Verteks = 0; Verteks < JumlahVerteks; Verteks++) {
var JarakTerpendek =NilaiAcuan, Berhenti =-1
for (i=0; i < JumlahVerteks; i++)
{
if (!Kunjungan[i])
{
if (posisi[i] <= JarakTerpendek {
JarakTerpendek = Posisi[i]; Berhenti =i;
}
}
}
Kunjungan[Berhenti] = true
for (i=0; i < JumlahVerteks; i++)
{
if (!Kunjungan [i])
{
var w = Bobot (Berhenti, i);
if (Posisi[Berhenti]+w < Posisi[i])
{
Posisi[i] = Posisi[Berhenti]+w;
Sebelum[i] = Berhenti;
}
}
}
}
i=d
if (Posisi[i] < NilaiAcuan) {
var Lintangan = NamaVerteks [i];
var Verteks = i;
while (Verteks>0)
{
Verteks = Sebelum[Verteks];
if (Verteks>=0) Lintasan = NamaVereteks [Verteks] + '->' + Lintasan;
{
message ("Jarak ; "+Posisi[i]+'('Lintasan+')'+'<br>');
}else
{
message ("Tidak ada Jalur")
}
}
function init() {
var x = NilaiAcuan
Matriks[0]=new Array(0,2,3,x,x,x)
Matriks[1]=new Array(2,0,3,6,x,x)
Matriks[2]=new Array(3,3,0,3,5,x)
Matriks[3]=new Array(x,6,3,0,1,3)
Matriks[4]=new Array(x,x,5,1,0,1)
Matriks[5]=new Array(x,x,x,3,1,0)
var Awal='<pre>'
Awal = Awal + 'A--2-B-6--D--3-F'+'<br>'
Awal = Awal + ' \ | /| / '+'<br>'
Awal= Awal + ' 3 3 3 1 1 '+'<br>'
Awal= Awal + ' \ | / | / '+'<br>'
Awal = Awal + ' \|/ |/ '+'<br>'
Awal = Awal + ' C--5-E '+'<br>'
Awal = Awal +'</pre>'
message (Awal.replace(/(\d)+/g, '<font color ="red">$1</font>'));
}
init()
var Dari=0 // A
var Ke =5 // F
Dijkstra(Matriks.length,Dari,Ke);
//-->
</script>
</body>
</html>
DoublyLinkedList
<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>");
document.write("Isi LinkedList Awal =" + List.Ukuran() +"<br><br>");
alert("ItemList 1 pada Linked List diBuang, yaitu = " + List.ItemList(1));
List.Buang(1);
document.write("Isi Linked LIst Setelah Dibuang <br>");
document.write("--------------- <br>");
for (i=0; i<4; i++)
{
document.write(List.ItemList(i) + "<br>") ;
}
document.write("--------------- <br>");
document.write("<br>Isi LinkedList Terakhir =" + List.Ukuran() +"<br>");
//-->
</script>
</body>
</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>");
document.write("Isi LinkedList Awal =" + List.Ukuran() +"<br><br>");
alert("ItemList 1 pada Linked List diBuang, yaitu = " + List.ItemList(1));
List.Buang(1);
document.write("Isi Linked LIst Setelah Dibuang <br>");
document.write("--------------- <br>");
for (i=0; i<4; i++)
{
document.write(List.ItemList(i) + "<br>") ;
}
document.write("--------------- <br>");
document.write("<br>Isi LinkedList Terakhir =" + List.Ukuran() +"<br>");
//-->
</script>
</body>
</html>
Langganan:
Postingan (Atom)
selamat datang di guners club
KODE
BOBOT : =IF(D3>=90;”A”;IF(D3>=80;”B’;IF(D3>=70;”C”;IF(D3>=60;”D”;”E”))))
KETERANGAN : =IF(D3>=60;”LULUS”;”TIDAK LULUS”)
KETERANGAN : =IF(D3>=60;”LULUS”;”TIDAK LULUS”)