::::::::::::::::::::BE MORE CREATIVE::::::::::::::::::::

jason..mraz..i'm..yours

Get More Songs & Codes at www.stafaband.info

Selasa, 22 Desember 2009

PROSES-PROSES (BAB 3)

Align Center

1. Sebutkan state pada proses dan jelaskan diagram proses?

  1. New: proses sedang dibuat.
  2. Running: proses sedang dieksekusi.
  3. Waiting: proses sedang menunggu beberapa event yang akan terjadi (seperti menunggu untuk menyelesaikan I/O atau menerima sinyal).
  4. Ready: proses menunggu jatah waktu dari CPU untuk diproses.
  5. Terminated: proses telah selesai dieksekusi.

penjelasan diagram proses:

  • Status Proses. New, ready, running, waiting dan terminated.
  • Program Counter. Menunjukkan alamat berikutnya yang akan dieksekusi oleh proses tersebut.
  • CPU Registers. Register bervariasi tipe dan jumlahnya tergantung arsitektur komputer yang bersangkutan. Register-register tersebut terdiri-atas: accumulator, index register, stack pointer, dan register serbaguna dan beberapa informasi tentang kode kondisi. Selama Program Counter berjalan, status informasi harus disimpan pada saat terjadi interrupt. Gambar 3-3 menunjukkan switching proses dari satu proses ke proses berikutnya.
  • Informasi Penjadwalan CPU. Informasi tersebut berisi prioritas dari suatu proses, pointer ke antrian penjadwalan, dan beberapa parameter penjadwalan yang lainnya.
  • Informasi Manajemen Memori. Informasi tersebut berisi nilai (basis) dan limit register, page table, atau segment table tergantung pada sistem memory yang digunakan oleh SO.
  • Informasi Accounting. Informasi tersebut berisi jumlah CPU dan real time yang digunakan, time limits, account numbers, jumlah job atau proses, dll.

2. Apa yang dimaksud short term scheduler dan long term scheduler ?

  • Longterm-Scheduler (job scheduler), menyeleksi proses-proses mana yang harus dibawa ke ready queue.
  • Short-term Scheduler (CPU scheduler), memilih proses-proses yang siap untuk dieksekusi, dan mengakolakasikan CPU ke salah satu dari proses-proses tersebut.

3. Jelaskan 4 alasan mengapa proses harus bekerja sama!

  • pembagian informasi
  • meningkatkan kecepatan komputasi
  • proses dapat dibagi dalam modul-modul
  • lebih memberikan kenyamanan pada programmer

4. Tuliskan kode program untuk penyelesaian permasalahan producer consumer dengan menggunakan shared memory!


#define BUFFER_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!

  • Proses P ingin menunggu 2 pesan, satu dari mailbox A dan satu dari mailbox B. Tunjukkan urutan send dan receive yang dieksekusi
  • Bagaimana urutan send dan receive yang dieksekusi P jika P ingin menunggu
    satu pesan dari mailbox A atau mailbox B (salah satu atau keduanya)

6. Jelaskah apa yang dimaksud dengan thread dan struktur dari thread!

Pengertian tread : Suatu unit dasar dari CPU utilization yang berisi program counter, kumpulan register, dan ruang stack disebut dengan thread atau lighweight process (LWP). Thread akan bekerjasama dengan thread yang lainnya dalam hal penggunaan bagian kode, bagian data, dan resource sistem operasi, seperti open file dan sinyal secara kolektif yang sering disebut dengan task.

Struktur Thread :Seperti halnya proses, thread memiliki status: ready, blocked, running dan terminated, dan hanya satu thread yang aktif dalam satu waktu. Thread dapat membuat child thread. Jika satu thread dalam keadaan blocked, maka thread yang lainnya dapat dijalankan. Namun, tidak saling bebas, Sebab semua thread dapat mengakses setiap alamat dalam satu task, thread dapat membaca dan menulisi stack dari thread yang lainnya. Sehingga tidak ada proteksi antara satu thread terhadap thread yang lainnya. Suatu proses dapat terdiri dari satu thread (single thread) dan beberapa thread (multi thread).

7. Jelaskan empat keuntungan menggunakan threads pada multiple process!

  • respon lebih cepat
  • menggunakan resource bersama-sama
  • lebih ekonomis
  • meningkatkan utilitas arsitektur mikroprosessor

8. Apakah perbedaan antara user-level thread dan kernel-supported threads ?

Thread terdiri dari dua bentuk yaitu user-level thread dan kernel-supported thread.

User-level thread adalah thread yang diatur dengan menggunakan pustaka user level thread. Contoh
sistem yang menggunakan user thread adalah POSIX Pthreads, Mach C-threads dan
Solaris threads.

Kernel-supported thread adalah 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 multithreading, jelaskan!

  • Pada model Many-to-One , beberapa user level thread dipetakan ke satu kernel thread dan digunakan pada sistem yang tidak mendukung kernel threads.
  • Pada model One-to-One, setiap user-level thread dipetakan ke kernel thread, misalnya pada Windows 95/98/NT/2000 dan OS/2.
  • Pada model Many-to-Many, user level thread dipetakan ke beberapa kernel threads. Pada sistem operasi ini akan dibuat sejumlah kernel thread.

10. Jelaskan state pada Java thread!

Bahasa pemrograman Java menggunakan Java thread yang dibuat dengan menggunakan class Thread dan mengimplementasikan antar muka yang bersifat runnable (dapat dijalankan). Java thread diatur oleh Java virtual machine (JVM). Java thread terdiri dari state new, runnable, blocked dan dead.

Penjadwalan CPU (BAB 4)

1. Perbedaan Penjadwalan Preemptive dan non Preemptive


# Penjadwalan preemptive
Keputusan penjadwalan CPU dilakukan apabila proses berpindah dari keadaan running
ke ready atau proses berpindah dari waiting ke ready.
# Penjadwalan non preemptive
Keputusan penjadwalan CPU dilakukan apabila proses berpindah dari running
ke waiting atau apabila proses berhenti.

2. Diketahui :

Burst time = 10 , 6 , 2, 4 , 8
Priority = 3 , 5 , 2 , 1 , 4 (5 adalah prioritas tertinggi)

a).Menggunakan Algoritma Round Robin (quantum time = 2)



Waktu tunggu untuk untuk P1 = 5, P2 = 3, P3 = 4, P4 = 2, P5 = 4
Rata-rata waktu tunggu (turn around) = (5 + 3 + 4 + 2 + 4) / 5 = 3,6

b).Menggunakan Algoritma Priority



Waktu tunggu untuk P1 = 14, P2 = 0, P3 = 24, P4 = 26, P5 = 6
Rata-rata waktu tunggu (turn around) = (14 + 0 + 24 + 26 + 6) / 5 = 14

c).Menggunakan Algoritma Shortest Job First



Waktu tunggu untuk P1 = 0, P2 = 16, P3 = 10, P4 = 12, P5 = 22
Rata-rata waktu tunggu (turn around) = (0 + 16 + 10 + 12 + 22) / 5 = 12

3. Diketahui :



a). Menggunakan Algoritma FCFS



Waktu tunggu untuk P1 = 0, P2 = 8, P3 = 12
Rata-rata waktu tunggu (turn around) = (0 + 8 + 12) / 3 = 6,6

b). Menggunakan Algoritma SJF non preemptive



Waktu tunggu untuk P1 = 0
P2 = 9 – 0,4 = 8,6
P3 = 8 – 1 = 7
Rata-rata waktu tunggu (turn around) = (0 + 8,6 + 7) / 3 = 5,2

c). Menggunakan Algoritma SJF preemptive / SRTF



Waktu tunggu untuk P1 = 5 – 0 = 5
P2 = 4,8 – 0,4 = 4,4
P3 = 1 – 1 = 0
Rata-rata waktu tunggu (turn around) = (5 + 4,4 + 0) / 3 = 3,13


d). Menggunakan Algoritma Round Robin (quantum time = 1)



Waktu tunggu untuk P1 = 8, P2 = 4, P3 = 2
Rata-rata waktu tunggu (turn around) = (8 + 4 + 2) / 3 = 4,6

4. Hubungan antara pasangan algoritma

a). Priority dan SJF
Algoritma SJF adalah Algoritma Priority untuk menyelesaikan suatu kasus khusus
b). Priority dan FCFS
Algoritma FCFS adalah Algoritma Priority yang memiliki prioritas sama.
c). Round Robin dan FCFS
Algoritma Round Robin adalah Algoritma FCFS yang bersifat preemptive
dan menggunakan time-sharing.

Nama : Nurikhsan Purnama
NPM : 43E57006085051
Prodi : Teknik Informatika Malam

Minggu, 20 Desember 2009

BASH SHELL PROGRAMMING

Variabel

Nama variable bisa terdiri dari numerik atau huruf dan tidak perlu pendeklarasian tipe data, dan dapat langsung diberikan nilai berupa numeric atau string. Contoh:

#!/bin/bash          
STR="Hello World!"
ANGKA=10
echo $STR $ANGKA
perintah echo adalah perintah untuk mencetak variabel ke standar output.
 
Variabel Lokal
Untuk membuat variabel local cukup menyatakannya dengan keyword “local”. Contoh:
 
#!/bin/bash
HELLO=Hello 
function hello 
{
      local HELLO=World
      echo $HELLO
}
echo $HELLO
hello
echo $HELLO

Kondisi

Syntax pengkondisian dengan menggunakan if adalah

if [expression]; then

fi

Contoh kondisi dengan if…then:

#!/bin/bash
if [ "foo" = "foo" ]; then
   echo expression evaluated as true
fi

Contoh kondisi dengan if...then else

#!/bin/bash
if [ "foo" = "foo" ]; then
   echo expression evaluated as true
else
   echo expression evaluated as false
fi

Contoh kondisi dengan variabel:

#!/bin/bash
T1="foo"
T2="bar"
if [ "$T1" = "$T2" ]; then
  echo expression evaluated as true
else
  echo expression evaluated as false
fi
 
 

Loop dengan for, while..until

Contoh for:

#!/bin/bash
for i in $( ls ); do
  echo item: $i
done
        
#!/bin/bash
for i in `seq 1 10`;
do
  echo $i
done    
        

Contoh while:

#!/bin/bash 
COUNTER=0
while [  $COUNTER -lt 10 ]; do
  echo The counter is $COUNTER
  let COUNTER=COUNTER+1 
done

Contoh until:

#!/bin/bash 
COUNTER=20
until [  $COUNTER -lt 10 ]; do
  echo COUNTER $COUNTER
let COUNTER-=1
done
 
Perintah Select
 

Contoh membuat menu:

#!/bin/bash
OPTIONS="Hello Quit"
select opt in $OPTIONS; do
if [ "$opt" = "Quit" ]; then
  echo done
  exit
elif [ "$opt" = "Hello" ]; then
  echo Hello World
else
  clear
  echo bad option
fi
done
          

Mengunakan Comamnd Line

#!/bin/bash        
if [ -z "$1" ]; then 
  echo usage: $0 directory
  exit
fi
SRCD=$1
TGTD="/var/backups/"
OF=home-$(date +%Y%m%d).tgz
tar -cZf $TGTD$OF $SRCD
         

$1 merupakan parameter command line yang pertama.

Input menggunakan read

#!/bin/bash
echo Input nama kamu :
read NAME
echo "Hi $NAME!"

secara muliple value:

#!/bin/bash
echo Input nama depan dan nama belakang kamu :
read FN LN 
echo "Hi! $LN, $FN !"

Aritmatika

echo $[1+1]

Akan mencetak angka 2

echo 3/4|bc –l

Akan mencetak nilai pecahan 0.75

Mengambil nilai dari command output

#!/bin/bash
DBS=`mysql -uroot  -e"show databases"`
for b in $DBS ;
do
   mysql -uroot -e"show tables from $b"
done

TABEL Operator

Operator String

Keterangan

S1 = S2

Sama dengan

S1 != S2

Tidak sama dengan

S1 > S2

Lebih besar dari

S1 <>

Lebih kecil dari

-n S1

S1 is not NULL

-z S1

S1 is NULL

Contoh:

#!/bin/bash
S1='string'
S2='String'
if [ $S1=$S2 ];
then
   echo "S1('$S1') tidak sama dengan S2('$S2')"
fi
if [ $S1=$S1 ];
then
    echo "S1('$S1') sama dengan S1('$S1')"
fi


Operator Aritmatika

Operator Aritmatika

Keterangan

+

Penjumlahan

-

Pengurangan

*

Perkalian

/

Pembagian

%

Sisa bagi

Operator Pembanding Aritmatika

Keterangan

-lt (less than)

Lebih kecil

-gt (grather than)

Lebih besar

-le (less equal than)

Lebih kecil atau sama dengan

-ge (grather equal than)

Lebih besar atau sama dengan

-eq (equal)

Sama dengan

-ne (not equal)

Tidak sama dengan

Useful Command:

sed (stream editor) merupakan non-ineractive editor dengan cara penggunaan adalah scrip instruksi editing ke sed plus nama file yang akan diedit. Dapat juga dengan tambahan filter. Contoh:

$sed 's/to_be_replaced/replaced/g' /tmp/dummy

sed akan mengganti kata to_be_replaced dengan kata replaced pada file dummy yang ada di direktori tmp.

awk (manipulation of datafiles, text retrieval and processing) untuk pencarian data pada file dengan mengunakan pattern.

grep (print lines matching a search pattern)

sort (sort lines of text files)

bc (a calculator programming language)

Reference :

Bash Programming Introduction-HOWTO

Pengenalan Sistem Operasi Linux

Sabtu, 04 Juli 2009

TUGAS INSTALASI KOMPUTER

KLASIFIKASI SOFTWARE


Perangkat lunak secara umum dapat di bagi 2 yaitu :

1. Perangkat lunak sistem
2. Perangkat lunak aplikasi.

Perangkat lunak sistem dapat di bagi lagi menjadi 3 macam yaitu :

1. Bahasa pemrograman : merupakan perangkat lunak yang bertugas mengkonversikan arsitektur dan algoritma yang di rancang manusia ke dalam format yang dapat di jalankan komputer, contoh bahasa pemrograman di antaranya : BASIC, COBOL, Pascal, C++, FORTRAN

2. Sistem Operasi : saat komputer pertama kali di hidupkan, sistem operasilah yang pertama kali di jalankan, sistem operasi yang mengatur seluruh proses, menterjemahkan masukan, mengatur proses internal, memanejemen penggunaan memori dan memberikan keluaran ke peralatan yang bersesuaian, contoh sistem operasi : DOS, Unix, Windows 95, IMB OS/2, Apple’s System 7

3. Utility : sistem operasi merupakan perangkat lunak sistem dengan fungsi tertentu, misalnya pemeriksaan perangkat keras (hardware troubleshooting), memeriksa disket yang rusak (bukan rusak fisik), mengatur ulang isi harddisk (partisi, defrag), contoh Utilty adalah Norton Utility

Perangkat lunak aplikasi merupakan bagian perangkat lunak yang sangat banyak di jumpai dan terus berkembang, baik pada system operasi berbasis text maupun pada system operasi berbasis Grafis (GUI). Sebelum tahun 1990-an aplikasi yang di kenal yaitu pemroses kata (Word Star, Chi Write), pemproses tabel (Lotus 123, Quatro Pro), database (DBASE), dan hiburan (game). Pada perkembangan pemroses kata, tabel dan database saat ini telah di bundel menjadi aplikasi office atau Open Office dengan tambahan aplikasi untuk pembuatan presentasi yang nanti akan di berikan pada pelatihan ini.
  • Contoh aplikasi office adalah Microsoft Office yang terdiri dari Word(pemroses kata), Excel (pemroses tabel), Access (database), dan PowerPoint (presentasi).
  • Dan contoh Open Office KWord (Pemroses kata), KSpreed(Pemroses table), KPresenter (presentasi). Yang berkembang sangat banyak saat ini adalah aplikasi multimedia dan internet.
  • Contoh aplikasi multimedia adalah Winamp, Media Player, XMMS, untuk memutar musik berformat MP3 atau CD Audio, kemudian RealPlayer, Power DVD, XINE yang dapat digunakan untuk menonton film atau VCD. Aplikasi internet yang umum di gunakan adalah untuk browsing,e-mail, chatting dan messenger. Aplikasi yang bersifat khusus di antaranya untuk membantu pekerjaan Engineer seperti AutoCAD (gambar struktur), Protel (gambar rangkaian elektronik), dan Matlab (pemroses dan visualisasi persamaan matematis).

Sistem Operasi

Sistem operasi sangat berkaitan dengan prosesor yang di gunakan. Jenis prosesor pada PC yang umum adalah yang kompatibel dengan produk awal IBM dan Macintosh. PC Macintosh, perangkat lunaknya di kembangkan oleh perusahaan yang sama sehingga perkembangannya tidak sepesat cloning IBM PC. Sistem operasi dari cloning IBM saat ini secara umum terbagi menjadi 2 aliran yaitu komersil yang di buat oleh Microsoft, dan Linux yang bersifat freeware yang di kembangkan oleh peneliti dari seluruh dunia karena bersifat open source, yaitu bahan baku pembuatan dapat di baca, sehingga hasilnya dapat di tambah atau di modifikasi oleh setiap orang. Sementara interaksi antara pengguna dan komputer di kenal melalui 2 cara, cara yang pertama adalah pemberian instruksi melalui penulisan perintah (text), atau dengan cara tunjuk (pointer) dengan tampilan grafis (GUI).
Instlasi Software pada berbagai macam basis OS

Instalasi Software Ms-Office
Ms-Offiice merupakan paket software yang dibuat oleh Microsoft, yang termasuk dalam paket software ini antara lain : Ms-Word (Word Processing), Ms-Excel (Spreed Sheet), Ms-Power Point (Presentasi), Ms-Access (Database).
Pertama yang perlu dipahami adalah bahwa software ini hanya dapat diinstalasi dan berjalan pada system operasi Microsoft Windows.
Adapun langkah-langkah instalasinya adalah sebagai berikut :
1. Siapkan Paket instalasi software yang legal dalam media penyimpanan yang sesuai seperti HD, CD, FDD, DVD atau media lain.
2. Jalankan system operasi Windows dan pastikan bahwa system operasi tersebut telah berjalan dengan baik.
3. Pastikan bahwa ruang (spaces) HD masih mencukupi.
4. Apabila paket software tersedia dalam media CD, maka masukkan CD installer tersebut kedalam CD-Room.
5. Ikuti proses instalasi sesuai dengan Petunjuk instalasi (Instalation user manual).

Instalasi Open Office
Open Office merupakan paket software freeware (open source), software ini berjalan pada sistem operasi Linux. Adapun yang termasuk dalam paket software ini antara lain : K-Word (Word processing), KSpreed (Spread Sheet), KPresenter (Presentasi).
Langkah-langkah instalasi paket software ini adalah :
1. Masuk ke modus Yast
2. Masuk menu instalasi software
3. Pilih dan tandai software yang akan diinstalasi.
4. dan Lanjutkan sesuai dengan petunjuk/langkah-langkah, dalam instalation user manual.
Troubleshouting
Di dalam proses tidak jarang akan terjadi sutu troubleshouting-troubleshouting yang terajdi mulai dari proses partisi harddisk sampai dengan pengintalan, antara lain :

1. Media Penyimpanan (Harddisk/Diket/CD)
> Boot record rusak
Ciri-ciri kerusakan :
• Bila Media Penyimpanan tersebut diakses, missal pindah directory atau memberi perintah dir/explor untuk melihat file maka akan keluar pesan General failure reading drive n :
( n adalah nama drive, bisa a atau c )
• Bila dilakukan perintah format maka akan mengeluarkan pesan kesalahan :
Invalid media track 0 bad – disk unusable format terminated
Kerusakan pada media ini biasanya sangat fatal terutama pada track 0 yang bad secara fisik, selama ini kasus media track 0 yang hancur tidak bisa diperbaiki.
> FAT rusak
Setiap cluster ( penyimpanan terkecil yang dibutuhkan suatu file ) memiliki satu lokasi dalam fat yang menunjukkan cluter yang berikutnya.
Ciri – ciri kerusakan :
• Bila suatu file bicara dengan perintah dos misalnya type nama file, akan muncul pesan kesalahan :
File allocation table bad, drive n
• Bila suatu file dibuka atau dibaca isinya ter nyata ada sebagian isi file yang hilang dan digantikan dengan karakter aneh atau ada bagian file yang hilang
Untuk membetulkan FAT dapat dilakukan dengan perintah CHKDSK dengan parameter /f (fix). Ketikkan C: \CHKDSK /f n: (Enter) maka CHKDK akan memperbaikinya dengan mengatur ukuran file untuk kesalahan alokasi, memotong file dari bagian yang rusak dan hasilnya disimpan dalam bentuk FILENNNN.CHK pada direktori utama. NNNN adalah nomor yang berurutan ( dimulai dari angka 0000 ).
> Root Directory Rusak
bagian ini merupakan bagian yang berhubungan dengan pemanipulasian file, yaitu tentang nama file, eksternsi, atribut, hari dan tanggal file dibuat, nomor cluster awl dan ukuran file.

Ciri – ciri kerusakan :
Karena berfariainya kerusakan derektory yang mungkin maka berikut ini contoh kesalahan yang umum terjadi :
• Bila dilakukan perintah DIR, akan ditampilkan pesan kesalahan :
Data eror reading drive n:
Abort, retry, fail ?_
Atau bisa juga ditampilkan pesan :
General failure error reading drive n :
Abort, retry, fail ?_
Cara mengatasi kesalahan pada root directory bisa dilakukan dengan
utility scandisk.
> Jika terdapat Bad Sector
Cirri -ciri Kerusakan :
Kesalahan jenis ini menyebabkan fele yang menempati sector yang rusak ( bad sector) tidak bisa diakses, baik itu dibaca, ditulisi atau dikopi, bila file tersebut diakses maka computer akan memberikan pesan kealahan :
Error reading drive n
Abort, retry, ignore ?_
Pilihan ignore berarti memaksa computer untuk tetap membaca bagian yang rusak. Bila ini dipilih maka kemungkinan computer akan hang. Biasanya jika bed sector itu cara fisik memang rusak maka disk tersebut akan tetap memiliki bad sector. Untuk mengatasi atau memindahkan data yang ada pada bad sector tersebut sekaligus menandainya bahwa terdapat bad di situ digunakan scandisk

Ditujukan untuk memenuhi tugas Mata Kuliah Instalasi Komputer :

Nama : Nurikhsan P.
NPM : 43E57006085051
Prodi : TI/Malam/semester 2
Kelas : Malam

Rabu, 01 Juli 2009

Array 2 Dimensi...

Membuat Deret menggunakan Array 2 Dimensi :

#include
main()
{
int x,y;
int z[5][5];
clrscr();
x=1;
while(x<=5) { y=1; while(y<=6-x) { z[x-1][y-1]=x*y; printf("%5d",z[x-1][y-1]); y++; } printf("\n\n"); x++; } getch(); } output program :

1 2 3 4 5
2 4 6 8
3 6 9
4 8
5

Rabu, 24 Juni 2009

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)
{
aleart("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

Graf

$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>

Sabtu, 13 Juni 2009

Double LinkedList

$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>

Buka Link Google pake Dinamit

$HTML>
$HEAD>$TITLE>High Explosive Link: charge your links with dynamite$/TITLE>

$SCRIPT>
$!-- Beginning of JavaScript -

// The width of your image (pixels)
var imgwidth=120

// The height of your image (pixels)
var imgheight=60

// The URL of the sliced image
var imgurl="linkexploder.gif"

// The URL of the redirection link
var redirurl="http://www.google.com"

// Final horizontal position of the image: distance to the left margin of the window
var x_finalpos=240

// Final vertical position of the image: distance to the top margin of the window
var y_finalpos=80

// Number of sliced cells (the higher this number the slower the script)
var x_slices=8

// Number of sliced rows (the higher this number the slower the script)
var y_slices=4

// Speed of explosion
var pause=10

// Do not change the variables below
var marginright
var width_slice=Math.floor(imgwidth/x_slices)
var height_slice=Math.floor(imgheight/y_slices)

var cliptop=0
var clipbottom=height_slice
var clipleft=0
var clipright=width_slice
var spancounter=0
var x_random=new Array()
var y_random=new Array()
var max_explsteps=15
var i_explsteps=0

function initiate() {
spancounter=0
for (i=0;i$=y_slices-1;i++) {
for (ii=0;ii$=x_slices-1;ii++) {
x_random[spancounter]=Math.ceil(240*Math.random())-120
y_random[spancounter]=Math.ceil(240*Math.random())-120
spancounter++
}
}

}

function explode_IE() {
spancounter=0
if (i_explsteps$=max_explsteps) {
for (i=0;i$=y_slices-1;i++) {
for (ii=0;ii$=x_slices-1;ii++) {
var thisspan=eval("document.all.span"+spancounter+".style")
thisspan.posLeft+=x_random[spancounter]
thisspan.posTop+=y_random[spancounter]
spancounter++
}
}
i_explsteps++
var timer=setTimeout("explode_IE()",pause)
}
else {
spancounter=0
for (i=0;i$=y_slices-1;i++) {
for (ii=0;ii$=x_slices-1;ii++) {
var thisspan=eval("document.all.span"+spancounter+".style")
thisspan.posLeft=-5000
spancounter++
}
}
clearTimeout(timer)
var newwin=window.open(redirurl, "newindow",

"status=yes,toolbar=yes,menubar=yes,resizable=yes,scrollbars=yes,width=800,height=500,top=30,left=20")
}
}

// - End of JavaScript - -->
$/SCRIPT>

$META content="MSHTML 5.50.4522.1800" name=GENERATOR>$/HEAD>
$BODY text=#ffffff vLink=#ffffff aLink=#ffffff link=#ffffff bgColor=#000000
onload=initiate()>
$SCRIPT>
$!-- Beginning of JavaScript -
for (i=0;i$=y_slices-1;i++) {

for (ii=0;ii$=x_slices-1;ii++) {
marginright=screen.width+50
document.write("$span id='span"+spancounter+"' style='position:absolute;visibility:visible;

left:"+x_finalpos+"px;top:"+y_finalpos+"px;clip:rect("+cliptop+"px "+clipright+"px "+clipbottom+"px "+clipleft+"px)'>")
document.write("$a href='javascript:explode_IE()'>")
document.write("$img src='"+imgurl+"' border='0'>")
document.write("$/a>")
document.write("$/span>")
clipleft+=width_slice
clipright+=width_slice
spancounter++
}
clipleft=0
clipright=width_slice
cliptop+=height_slice
clipbottom+=height_slice
}
// - End of JavaScript - -->
$/SCRIPT>
$/BODY>
$/HTML>

Single LinkedList

$html>
$head>
$title>Struktur Data Linked List $/title>$/head>
$body>
$script language = "JavaScript">
$!--
function LinkedList()
{
this._panjang = 0;
this._kepala = null;
}
LinkedList.prototype =
{
construktor : 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();
}
};
//Lanjutan
var list = new LinkedList();

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.Item(i) + "$br>");
}
document.write("----------------$br>");

alert("Isi LinkedList Awal="+ list.Item(0));
alert("Item 1 pada Linked list dibuang,yaitu =" +list.Item(1));
list.Buang(1);


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

//-->
$/script>
$/body>
$/html>

Sabtu, 16 Mei 2009

Menampilkan Clock Pada TaskBar

$html>

$!-- Letakkan kode ini di antara tag $HEAD> dan $/HEAD> -->
$script Language="JavaScript">
var timerID = null;
var timerRunning = false;

function stopclock (){
if(timerRunning)
clearTimeout(timerID);
timerRunning = false;
}


function showtime () {
var now = new Date();
var hours = now.getHours();
var minutes = now.getMinutes();
var seconds = now.getSeconds()
var timeValue = "" + ((hours >12) ? hours -12 :hours)
timeValue += ((minutes $ 10) ? ":0" : ":") + minutes
timeValue += ((seconds $ 10) ? ":0" : ":") + seconds
timeValue += (hours >= 12) ? " P.M." : " A.M."
window.status = timeValue;
timerID = setTimeout("showtime()",1000);
timerRunning = true;
}
function startclock () {
stopclock();
showtime();
}
$/script>

$!-- Letakkan kode ini pada tag $BODY> -->
$body onLoad="startclock()">

Praktekum QUEUE pada JavaScript

$html>
$head>
$title>Queue$/title>
$script language="JavaScript">

var queue = new Array();

function Masuk_Antrian(data){
queue.unshift(data);
}

function Keluar_Antrian(){
var yang_keluar_antrian = queue.pop();
if(queue.length==0)
return "Antrian Sudah Kosong";
else
return yang_keluar_antrian;
}

function Dalam_Antrian(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='Masuk_Antrian(textSimpan.value);
textSimpan.value="";
Dalam_Antrian(Visualisasi);'>

$select name="Visualisasi" size=12>
$option>Isi Antrian....
$/select>
$input type=text name=textAmbil size=20>
$input type=button value="Keluar Antrian"
onClick="textAmbil.value=Keluar_Antrian();
Dalam_Antrian(Visualisasi);">
$/form>
$/body>
$/html>

Senin, 20 April 2009

STACK

%html>
%head>
%title>Struktur Data Stack%/title>
%script language = "JavaScript">

var stack = new Array();

function Input_ke_Stack (data) {
stack.push (data);
}

function Ambil_dari_Stack () {
var data_dari_stack = stack.pop();
if(data_dari_stack == undefined)
return "Stack Sudah Kosong";
else
return data_dari_stack;
}

function TampilkanStack (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="Masukan ke Stack"
OnClick='Input_ke_Stack(textSimpan.value);
textSimpan.value="";
TampilkanStack(mediaList);'>

%select name="mediaList" Size=25>
%option>Tampilkan data....
%/select>
%input type=text name=textAmbil size=20>
%input type=button value="Ambil dari Stack"
onClick="textAmbil.value = Ambil_dari_Stack();
TampilkanStack (mediaList);">
%/form>
%/body>
%/html>

STACK (Push & Pop)

%HTML>
%HEAD>
%TITLE>Contoh Implementasi Push dan POP pada Stack%/title>
%/HEAD>

%BODY>
%script type ="text/javascript">
var stack = new Array;
stack.push ("A");
stack.push ("B");
stack.push ("C");
document.write ("Stack: "+stack.toString() +"%br>");

var YangDiambil = stack.pop();
document.write ("Data Yang Diambil:"+YangDiambil);
document.write ("%br>");
document.write ("Isi Stack Terakhir:"+stack.toString());
%/SCRIPT>

%/BODY>
%/HTML>

Rabu, 15 April 2009

Program Konversi Antar Sistem 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>

Fungsi Matematika

%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("Type Data nya adalah = " +typeof(z));
//-->
%/SCRIPT>
%/BODY>
%/html>

Type Bilangan

%html>
%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>

Belajar Array

%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>

Parameter Array

%html>
%head>
%title>Paramater 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("Masukkan Bilangan :")
tempat[m]=bil;
}
for (n=1; n%=data; n++)
{
document.write("Elemen Array ("+n+") = "+tempat[n] + "%BR>");
}
//-->
%/SCRIPT>
%/BODY>
%/HTML>

Rabu, 01 April 2009

MODUL 3 (1 TABLE)

#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 ("43E001", "Dani", "TI", "SI");
Record[1]= new Mahasiswa ("43E001", "Doni", "TI", "SI");
Record[2]= new Mahasiswa ("43E001", "Dina", "TI", "SI");
Record[3]= new Mahasiswa ("43E001", "Dini", "TI", "SI");

//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>");

for (i=0;i #Record.length; i++)
{
document.write("#tr>");
Record[i].npm
document.write("#/tr>");
}
document.write("#/table>");
//-->

#/script>
#/body>
#/html>

MODUL 3 (2 TABLE)

#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 ("43E001", "Dani", "TI", "SI");
Record[1]= new Mahasiswa ("43E001", "Doni", "TI", "SI");
Record[2]= new Mahasiswa ("43E001", "Dina", "TI", "SI");
Record[3]= new Mahasiswa ("43E001", "Dini", "TI", "SI");

//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>");

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].npm
document.write("#/tr>");
}
document.write("#/table>");
//-->

#/script>
#/body>
#/html>

Minggu, 01 Februari 2009

PERAN FISIKA MEDIK DALAM KEDOKTERAN NUKLIR

1. PENDAHULUAN

Secara prinsip kedokteran nuklir pada mulanya merupakan diagnosa in vivo dengan menggunakan radioisotop, meskipun terkadang terapi juga dimasukan kedalamnya. Era baru dunia kedokteran ini diawali setelah ditemukannya sinar-X oleh Wilhelm Roentgen, tahun 1895. Demikian halnya penemuan radioaktivitas oleh Henry Becquerel beberapa bulan setelah penemuan sinar-X, membuka cakrawala kedokteran nuklir. Bekerja dengan garam Uranium, Becquerel menentukan bahwa Uranium memancarkan radiasi pengion. Penemuan Becquerel ini menjadi dasar studi topik disertai oleh Marie Curie. Marie Curie bersama-sama dengan Pierre Curie (suami Marie Curie) dan W. Roentgen ikut andil dalam Hadiah Nobel Fisika tahun 1903 dengan Henri Becquerel atas penemuan radioaktivitas. Kemudian tahun 1911, Marie Curie mendapatkan Hadiah Nobel yang kedua kalinya dan kali ini di Bidang Kimia atas penemuannya radium dan Polonium. Tahun 1963, diperkirakan bahwa telah digunakan Radium di dunia kedokteran sekitar 1000 Ci [1]. George Charles de Havesy adalah orang pertama yang menggunakan radioisotop sebagai tracer (perunut), ketika itu digunakan Pb-210 dalam studi kelarutan di tahun 1913 [2]. Sehingga ada yang mempertimbangkan bahwa Hevesy ini sebagai Bapak Kedokteran Nuklir. Hasil kerja Hevesy ini dimuat dalam Journal of Nuclear Medicine tahun 1975 dengan topik bahasan “Perkembangan prinsip perunut Hevesy”. Hevesy menerima Hadiah Nobel di Bidang Kimia pada tahun 1943.

Teknologi pemercepat radioisotop mulai muncul berdasarkan pada penemuan Rutherford [3]. John Lawrence dengan menggunakan Siklotron Berkeley mem-produksi P-32 yang merupakan isotop artifisial pertama secara sukses digunakan untuk terapi leukimia. Pada tahun 1939, I-128 diproduksi pertama kalinya dengan siklotron juga, namun mengingat keterbatasan pendeknya wktu paro, maka kemudian I-131 dengan waktu paro 8 hari diproduksi [4]. Setelah berkembangnya teknologi siklotron untuk kepentingan kedokteran, maka produksi radionuklida waktu paro pendek dengan siklotron saaat ini merupakan dasar utama Positron Emission Tomography (PET) [5].

Selain pemercepat untuk mem-produksi radionuklida, reaktor nuklir juga merupakan tempat produksi radioisotop. Pengumuman pertama tentang reaktor penghasil radioisotop diumumkan dalam majalah science tahun 1946 [6]. Sampai dengan tahun 1966, menurut Baker [7] ada sekitar 11 reaktor di Amerika Serikat yang memproduksi radionuklida untuk melayani kebutuhan medis. Akan tetapi saat ini tidak ada reaktor komersial yang memproduksi radionuklida untuk kedokteran, karena peraturan birokrasi yang ada [8]. Perkembangan teknologi reaktor yang dikaitkan dengan kedokteran saat ini adalah produksi in-situ aktivasi Boron untuk kebutuhan radioterapi, yang dikenal dengan Boron Neutron Capture Therapy (BNCT).

Generator radionuklidapun saat ini juga berperan banyak dalam kedokteran nuklir. Produksi, pengembangan dan pemanfaatan generator Mo-99/Tc-99m merupakan salah satu dampak positif dalam praktek dunia kedokteran nuklir dan farmasi nuklir. Dengan generator ini bisa menyelesaikan masalah-masalah faktor produksi ulang, waktu, dan jarak terhadap tempat yang memproduksi radioisotop disamping mengurangi dosis terhadap pasien.

Dari produksi radioisotop sampai pada aplikasi klinisnya jelas bahwa peran fisika medik dalam kedokteran nuklir tidak bisa dilepaskan, karena kedokteran nuklir bukanlah sekedar masalah klinis saja tetapi juga masalah teknis dan fisik. Benar, kedokteran nuklir akan maju dengan baik apabila dari berbagai disiplin ilmu bekerja sesuai dengan bidangnya dan merupakan mitra kerja, bukan saingan. Demikian juga fisika medik akan mengambil porsi yang sesuai dengan keahliannya.

2. FISIKA MEDIK

Fisika medik pada dasarnya merupakan satu cabang dari disiplin ilmu Fisika Terapan yang berkaitan dengan aplikasi energi fisika, konsep dan metode untuk mendiagnosa dan melakukan terapi penyakit pada manusia. Bahsan lebih lanjut secara umum fisika medik, baik dalam perspektif sejarah dan ruang lingkupnya telah diuraikan dalam tulisan sebelumnya [9].

Kedokteran nuklir mencakup pemanfaatan radionuklida dan radiofarmaka untuk diagnosa dan terapi medis, akan tetapi saat ini diagnosa medis merupakan kerja kedokteran nuklir yang lebih dominan dibandingkan dengan terapi medis. Beberapa diagnosa medis ini meliputi pencitraan in-vivo dari distribusi radionuklida dan radiofarmaka dengan menggunakan kamera gamma dan sistem komputer. Beberapa studi memerlukan pengolahan data citra dan pengukuran kuantitatif fungsi organ. Fisika medik merupakan disiplin ilmu yang mampu menangani masalah tersebut di atas secara efektif. Sehingga kedokteran nuklir merupakan aktivitas multi disiplin ilmu dari para dokter, fisika medik, dokter spesialis radiolog (DSR), teknisi, radiografer, radiofarmasi, perawat dan lain sebagainya. Tugas dari fisikawan medik sangat bervariasi dan sangat tergantung kondisi
fasilitas kedokteran nuklir yang ada, di antaranya :


1. Manajemen pelayanan dalam aspek teknik dan ilmiah

Seorang fisikawan medik yang bekerja dalam kedokteran nuklir memiliki tanggung jawab pada aspek teknik dan ilmiah. Peran manajemen pelayanan biasanya mencakup tanggung jawab untuk staf ilmiah, teknik dan anggaran departemen. Sebagai tambahan, seorang fisikawan medik seringkali memiliki tugas dan tanggung jawab lebih dari yang disebutkan di atas, tergantung situasi, kondisi, dan kebutuhannya dalam pelayanan kedokteran nuklir. Acapkali meliputi seluruh manajemen instalasi termasuk radiofarmaka dan kerjasama dengan dokter dalam interpretasi penemuan klinis.


2. Pemilihan commissioning dan jaminan kualitas peralatan.

Standar Dasar Keselamatan Internasional yang diterbitkan tahun 1994 [10] menegaskan pentingnya jaminan kualitas dalam paparan medik. Program jaminan kualitas meliputi spesifikasi, seleksi, pengetesan penerimaan dan pemeliharaan secara rutin peralatan untuk meyakinkan bahwa standar kualitas dankeselamatan terpenuhi. Kualitas yang baik, perawatan yang terkendali dapat meningkatkan akurasi penemuan diagnostik, menurunkan kebutuhan studi pengulangan dan mengurangi dosis radiasi terhadap pasien. Fisikawan medik memerlukan pengetahuan yang berkaitan dengan parameter yang biasa digunakan untuk menentukan standar nasional maupun internasional yang akan diimplementasikan dalam aplikasi klinis praktek sehari-harinya.

Seorang fisikawan medik memiliki sebuah peran penting dalam menentukan kriteria penerimaan suatu peralatan baru. Dia akan menyiapkan dengan pihak pemakai klinis sebuah spesifikasi misalnya untuk kebutuhan tender pembelian sistem komputer harus diperhatikan kebutuhan akan perangkat keras dan lunaknya [11]. Demikian juga untuk peralatan pencitraan akan dibutuhkan parameter-parameter seperti keseragaman, resolusi, unjuk kerja laju cacah dan lainnya.

Dalam hal pengetasan penerimaan peralatan baru, seorang fisikawan medik haruslah memahami perannya dalam kebutuhan spesifikasi teknik termasuk standar keselamatan listrik mekaniknya. Untuk masalah ini bisa dilihat pada pengukuran pengetesan alat dengan fantom, MCA (multi-channel analyser). Osiloskop dan pengetes keselamatan listrik atau lain yang lebih canggih lagi. Selain itu juga fisikawan medik bertanggung jawab untuk melakukan pengetesan-pengetesan sederhana untuk kebutuhan rutin secara reguler.

Program jaminan kualitas untuk kamera gamma, sistem komputer, dan peralatan lainnya juga harus disiapkan dan dibimbing oleh fisikawan medik secara kuantitatif jika memungkinkan. Pengukuran ini biasanya tidak terlalu rumit dibandingkan dengan pengetesan penerimaan peralatan yang kadangkala bisa dilakukan oleh teknisi. Tanggung jawab kalibrasi dari peralatan lain juga dibebankan kepada fisikawan medik, seperti kalibrator radionuklida, monitor kontaminasi, dan peralatan laboratorium lainnya.

Peralatan rutin dan reparasi disamping tanggung jawab pabrik, juga seringkali dilimpahkan kepada fisikawan medik. Karena sebagian besar peralatan kedokteran nuklir memerlukan pengetesan peralatan khusus dan suku cadangnya, sehingga untuk reparasi biasanya dibebankan kepada pabrik. Akan tetapi bagaimanapun juga fisikawan medik sering dapat membantu mengurangi lamanya waktu kerusakan sebelum sampai kepada pihak pabrik. Kebutuhan in-house fisikawan medik dapat mengurangi kegagalan-kegagalan sebagian besar peralatan, disamping mengurangi biaya perbaikan oleh pihak pabrik. Karena fisikawan medik memiliki peran yang cukup penting dalam meyakinkan unjuk kerja peralaratan, khusunya prosedur perawatan.


3. Proteksi radiasi pasien, staf dan masyarakat

International Commission on Radiological Protection (ICRP) rekomendasi nomor 60 tahun 1990 [12] menyebutkan tentang tanggung jawab fisikawan medik dalam aspek fisik dan teknik dosimetri radiasi, instrumentasi kedokteran nuklir dan proteksi radiasi, dan kendali kualitastermasuk juga penanganan data dan komputasinya. Disinilah tanggung jawab utama fisikawan medik apabila pemahaman proteksi radiasi secara menyeluruh diketahui. Istilah proteksi radiasi itu sendiri bisa menyangkut perencanaan bangunan baru atau memodifikasi bangunan yang telah ada ataupun peralatannya yang menyangkut keselamatan pasien, staf dan masyarakat. Disamping itu, perencanaan teknik untuk menurunkan dosis terhadap pasien, prosedur operasional, peraturan sistem kerja dan kontrol, dan supervisi daerah radiasi serta pengukuran dan kalibrasi peralatan proteksi radiasi. Dalam Standar Dasar Keselamatan [10] juga disebutkan tentang dosimetri klinik, yakni dosis serap yang diterima pasien.


4. Penelitian dan Pengembangan

Fisikawan medik memiliki sumbangan besar terhadap penelitian dan pengembangan kedokteran nuklir, seperti pada perangkat lunak komputer, perancangan dan konstruksi instrumentasi baru, pengembangan teknik untuk analisa kuantitatif parameter fisiologi, pengembangan protokol untuk percobaan dan analisa klinis serta interpretasi hasilnya. Penelitian dan pengembangan ini sangat penting dalam meningkatkan kapasitasnya sebagai fisikawan medik dalam kedokteran nuklir.


5. Implementasi dan evaluasi teknik baru

Dunia kedokteran nuklir terus melaju sebagaimana perjalanan teknologi pada umumnya. Kemajuan yang berkesinambungan ini dalam hal pengembangan peralatan dan teknik baru, serta pengenalan radiofarmaka baru. Seperti halnya dengan berkembangnya PET [5], tentu merupakan suatu tantangan baru bagi dunia kedokteran nuklir. Fisikawan medik memiliki peran yang sangat penting dalam mengimplementasi dan mengevaluasi teknik baru, khususnya yang berkaitan dengan pengukuran kuantitatif dan ini membutuhkan pengembangan dalam pemrograman komputer dan protokol untuk
akuisasi dan analisis studi klinis.


6. Radioterapi

Pemanfaatan radiasi pengion untuk terapi sejak ditemukannya sudah dimulai. Yang berarti bahwa radionuklida tidak hanya untuk diagnosa, tetapi kedokteran nuklirpun bisa mencakup terapi. Hanya saja terkadang ada yang memasukan ke dalam ruang lingkup radioterapi. Pemanfaatan radionuklida (sumber terbuka) untuk terapi sudah tidak asing, dan lagi pula dalam terapi digunakan dosis yang cukup tinggi. Sehingga fisikawan medik akan sangat berperan dalam hal ini. Fisikawan medik memilki tanggung jawab dalam pengukuran radioaktivitas yang digunakan dan keselamatan administrasi dan perlakuannya terhadap pasien. Studi dan analisis dosis organ yang diterima pasien harus secara cermat diketahui efeknya berkaitan dengan radiofarmaka yang digunakannya, baik dosis terhadap tumor itu sendiri maupun dosis seluruh tubuh dan organ tubuh. Perhitungan dosis radiasi sebelum pengobatan dan sesudah pengobatan harus ditentukan oleh fisikawan medik, termasuk pengukuran kuantitatif uptake dan clearence dengan whole body counter.

Pengembangan secara efektif terapi dengfan sumber terbuka ini harus dipertimbangkan secara hati-hati dalam pemilihan radionuklidanya. Sifat-sifat target invivo dan clearence molekul pembawanya harus seimbang dengan peluruhan radionuklidanya. Tantangan penelitian dan pengembangan terapi dengan sumber terbuka ini bisa mencakup tiga kategori umum, yaitu [13];
1. Pemancar partikel beta.
2. Pemancar partikel alfa.
3. Pemancar Auger dan Coster-Kronig-elektron diikuti tangkapan elektron.

7. Radiofarmasi

Tanggung jawab ilmiah untuk penyiapan radiofarmaka merupakan tugas fisikawan medik dan bekerja dengan apoteker (radiopharmacist) sebagai penanggung jawab kendali kualitas.


8. Pendidikan dan Pelatihan

Bahan radioaktif banyak digunakan di dunia kedokteran. Fisikawan medik terlibat dalam pendidikan dan pelatihan praktek untuk keselamatan bahan radioaktif dan bisa jadi mengorganisasi pelatihan tersebut. Pendidikan dan pelatihan ini bisa diperuntukan untuk dokter umum, dokter spesialis, radiografer, teknisi, staf administrasi maupun untuk fisikawan medik itu sendiri. Fisikawan medik juga harus memahami resiko-resiko terhadap kesehatan daripemanfaatan radionuklida dalam kedokteran nuklir, untuk keuntungan staf medis, pasien dan masyarakat. Materi pokok pendidikan dan pelatihan ini disesuaikan dengan tingkatannya masing-masing. Untuk pendidikan dan pelatihan para dokter umum tentunya tidak disamakan dengan para dokter spesialis. Demikian juga untuk radiografer ataupun para teknisi. Sehingga dengan pendidikan dan pelatihan tersebut masing-masing mengetahui tugas dan kewajibannya terhadap mitra kerjanya. Dunia kedokteran nuklir merupakan sebuah tempat terjadinya mitra kerja antara dokter, fisikawan medik, radiopharmacist, radiografer dan teknisi.

DAFTAR PUSTAKA

1. U.S. Public Health Service, Training Publication No. 141 (2.63), p. 1-8, 1963.
2. PANETH,F. and HEVESY,G., Monatsh. Chem. 34, p. 1401-1407, 1913.
3. GRAHAM,D., et.al., J. Nucl. Med. 25, p.32, 1984.
4. HARBY,K., J. Nucl. Med. 29, p. 431-437, 1988.
5. NASUKHA, majalah Medika, No. 3 tahun ke XXI, Maret 1995.
6. MANHATAN PROJECT, Head-quarters, Washington DC, Availability of radioactive isotop, Science 103, p. 697, 1946.
7. BAKER,P.S., Reactor produce radionuclides, Pada US AEC Symposium Series 6, radioactive pharmaceuticals, Washington DC, US Govt. Print Office, Conf 651111, p. 129-142, 1966.
8. ICE,R.D., Health physics, 65(5), p. 721-727, 1995.
9. NASUKHA, warta OFP, No. 8/th-IV/Juli 1992.
10. IAEA, International Basic Safety Standard for Protection against ionizing radiation and for safety of radiation sources, 1994.
11. MICHAEL,M.G., et.al., J. Nucl. Med. 29(5), p. 717-724, 1988.
12. IAEA, ICRP Publication 60, 1990.
13. VOKERT,W.A., et.al., J. Nucl. Med. 32(1), p. 174-185, 1991.