Mengikat Ilmu agar Tak Lupa



Blogger news

Linkedin

Wednesday, March 4, 2015

Sejarah Singkat Java


Pada tahun 1991, sekelompok insinyur Sun Microsystem, Inc., dipimpin Patrick Nuaghton dan James Gosling merancang bahasa untuk perangkat konsumer seperti Cable TV Box. Karena perangkat tidak mempunyai banyak memori, bahasa harus berukuran kecil dan menghasilkan kode yang liat. Karena pabrikan-pabrikan berbeda memilih pemroses-pemroses berbeda maka bahasa harus netral arsitektur manapun. Proyek ini diberi nama kode "Green". Kebutuhan kecil, liat dan netral platform mengantar tim mempelajari implementasi pascal yang pernah dicoba. Niklaus Wirth , pencipta Pascal telah merancang bahasa kode antara (intermediate code) portabel untuk mesin hipotesis. kode antara ini kemudian dapat digunakan disembarang mesin hipotesis. Kode antara ini kemudian dapat digunakan disembarang mesin yang memiliki interpreter . Proyek Green menggunakan mesin maya untuk mengatasi isu netral terhadap arsitektur mesin.
Karena orang-orang di proyek Green berbasis C++ bukan Pascal maka kebanyakan sintaks diambil dari C++ serta mengadpsi orientasi objek bukan prosedural. Mulanya bahasa yang diciptakan diberi nama "Oak" kemudian diganti "Java" karena telah ada bahasa yang bernama "Oak".

Monday, March 2, 2015

Deklarasi dan Penciptaan Array

Apa itu Array? => Array adalah bentukan yang menyediakan penyimpanan sejumlah item bertipe sama. Array di java dideklarasikan dengan kurung siku: [...].
Array merupakan cara nyaman untuk mengelompokkan informasi yang berhubungan.
Sintaks umum deklarasi Array sebagai berikut:
type var-name[];

atau
type[] var-name;

type adalah mendeklarasikan tipe basis array. Tipe basis ini menentukan tipe data bagi masing-masing elemen yang membentuk array. Dengan demikian, tipe basis untuk array menentukan tipe data yang dibuat oleh array.

berikut contoh deklarasi array di java:

int numbers[];

char[] letters;

long grid[][];



sumber: Hariyanto, Bambang "Esensi-esensi bahasa pemograman Java", Informatika, Bandung : 2014.

Monday, February 23, 2015

Inilah ‘Tamparan’ dari Dosen untuk Mahasiswa (source: anakunsri.com)

Sebuah renungan untuk diri sendiri . Ini cara saya menggampar mahasiswa saya Tulisan dari Bapak I Made Andi Arsana (Teknik Geodesi UGM). Semoga menginspirasi. Tamparan dari dosen untuk mahasiswa ini semoga dapat menjadi motivasi untuk terus belajar dan bekerja keras.
1. Kamu ingin dapat beasiswa S2 ke luar negeri nanti? Pastikan IP di atas 3 dan TOEFL di atas 500! Merasa tidak pinter? BELAJAR!
2. Empat atau lima tahun lagi kamu bisa sekolah S2 di luar negeri dengan beasiswa. Itu kalau kamu tidak cuma twitteran saja sampai lulus nanti.
3. Kamu tidak akan bisa S2 di luar negeri karena akan ditolak profesor kalau nulis email formal saja tidak bisa. Alay itu tidak keren, tidak usah bangga!
4. Tidak usah tanya tips cara menghubungi professor di luar negeri kalau kirim email ke dosen sendiri saja kamu belum bisa. Hey, ganti dulu akun niennna_catique@gmail.com itu!
5. Tidak usah ikut meledek Vicky, kamu saja tidak tahu kapan harus pakai tanda tanya, tanda seru, tanda titik, spasi, huruf besar, huruf kecil di email kok!
6. Mana bisa diterima di perusahaan multinasional biarpun IP tinggi kalau nulis email saja lupa salam pembuka dan penutup
7. Sok mengkritik kebijakan UN segala, dari cara menulis email saja kelihatannya kamu tidak lulus Bahasa Indonesia kok. Tidak usah gaya!
8. Bayangkan kalau kamu harus menulis email ke pimpinan sebuah perusahaan besar. Apa gaya bahasa email kamu yang sekarang itu sudah sesuai? Jangan-jangan bosnya tertawa!
9. Apapun bidang ilmu kamu, akhirnya kamu akan berhubungan dg MANUSIA yang beda umur dan latar belakangnya. Belajar komunikasi yang baik. Jangan bangga jadi alay!
10. Bangga bisa software dan gunakan alat-alat canggih? Suatu saat kamu harus yakinkan MANUSIA akan skill itu. Belajar komunikasi dengan bahasa manusia biasa!
11. Kamu orang teknik dan hanya peduli skil teknis? Kamu salah besar! Nanti kamu akan jual skil itu pada MANUSIA, bukan pada mesin!
12. Kamu kira orang teknik hanya ngobrol sama mesin dan alat? Kamu harus yakinkan pengambil kebijakan suatu saat nanti dan mereka itu manusia. Belajar ngomong sama manusia!
13. Malas basa-basi sama orang yang tidak dikenal? Enam tahun lagi kamu diutus kantor untuk presentasi sama klien yang tidak kamu kenal. Belajar!
14. Malas belajar bikin presentasi? Lima thn lagi bos kamu datang dengan segepok bahan, “saya tunggu file presentasinya besok!”
15. Kamu orang sosial dan malas belajar hal-hal kecil di komputer? Lima tahun lagi bos kamu datang bertanya “cara membesarkan huruf di Ms Word dengan shortcut gimana ya?’ Mau nyengir?
16. Mahasiswa senior, jangan bangga bisa membully Mahasiswa baru, tujuh tahun lagi kamu diinterview sama dia saat pindah kerja ke perusahaan yang lebih bagus
17. Mahasiswa senior, keren rasanya ditakuti Mahasiswa baru? JANGAN! Urusan kalian nanti bersaing sama orang-orang ASEAN dan Dunia. Bisa bikin mereka takut tidak?
18. Bangga bisa demo untuk mengundurkan jadwal ujian karena kamu tidak siap? Kamu itu mahasiswa negara ekonomi terbesar di Asia Tenggara, masa’ urusannya cetek-cetek begitu sih?!
19. Tidak usah lah sok hebat demo nyuruh SBY berani sama Amerika kalau kamu diskusi sama mahasiswa Singapura saja tergagap-gagap
20. Tidak perlu lah teriak-teriak “jangan tergantung pada barat” jika kamu belum bisa tidur kalau tidak ada BB dekat bantal
21. Tentara kita tidak takut sama tentara Malaysia kalau kamu bisa kalahkan mahasiswa Malaysia debat ilmiah dlm forum di Amerika!
22. Tidak perlu beretorika menentang korupsi kalau kamu masih nitip absen sama teman saat demo antikorupsi!
23. Boleh kampanye “jangan tergantung pada barat” tapi jangan kampanye di Twitter, Facebook, BBM, Path dan Email! Memangnya itu buatan Madiun?!
24. Kalau file laporan praktikum masih ngopi dari kakak kelas dan hanya ganti tanggal, tidak usah teriak anti korupsi ya Boss!
25. Minder karena merasa dari kampung, tidak kaya, tidak gaul? Lima tahun lagi kamu bisa S2 di negara maju karena IP, TOEFL dan kemampuan kepemimpinan. Bukan karena kaya dan gaul!
26. Pejabat kadang membuat kebijakan tanpa riset serius. Sama seperti mahasiswa yang membuat tugas dalam semalam hanya modal Wikipedia
27. DPR kadang studi banding untuk jalan-jalan doang. Sama seperti mahasiswa yang tidak serius saat kunjungan ke industri lalu nyontek laporan sama temannya
28. Pejabat kadang menggelapkan uang rakyat. Sama seperti mahasiswa yang melihat bahan di internet lalu disalin di papernya tanpa menyebutkan sumbernya.
29. Alah, pakai mengkritik kebijakan pemerintah segala, bikin paper saja ngopi file dari senior dan ubah judul, pendahuluan sama font-nya
30. Gimana mau membela kedaulatan bangsa kalau waktu menerima kunjungan mahasiswa asing saja kamu tidak bisa ngomong saat diskusi. Mau pakai bambu runcing?
31. Kalau kamu berteriak “jangan mau ditindas oleh asing”, coba buktikan. Ikuti forum ASEAN atau Dunia dan buktikan di situ kamu bisa bersuara dan didengar!

Prak; Pemograman Java (1)

Untuk memulai latihan pemograman Java, beberapa instalasi yang diperlukan diantaranya adalah:
1. Java Development Kit versi 1.8 keatas.
2. Java Runtime Environtment versi 1.8 keatas.
3. NetBeans IDE versi 8.0 keatas.

Java Development Kit 
Java Development Kit merupakan perangkat lunak yang digunakan untuk melakukan proses kompilasi dari kode Java menjadi bytecode yang dapat dimengerti dan dapat dijalankan oleh Java 

Runtime Environtment
Java Development Kit wajib terinstall pada komputer yang akan melakukan proses pembuatan aplikasi berbasis Java. Namun Java Development Kit tidak wajib terinstall di komputer yang akan menjalankan aplikasi yang dibangun menggunakan Java. 

Java Runtime Environtment 
Java Runtime Environtment merupakan perangkat lunak yang digunakan untuk menjalankan aplikasi yang dibangun menggunakan java. Versi JRE harus sama atau lebih tinggi dari JDK yang digunakan untuk membangun aplikasi agar aplikasi dapat berjalan sesuai dengan yang diharapkan. 

NetBeans IDE 
NetBeans IDE merupakan perangkat lunak yang digunakan untuk membangun perangkat lunak yang lain. NetBeans IDE dapat digunakan untuk membangun perangkat lunak berbasis Java Standard Edition, Java Enterprise Edition, Java Micro Edition, JavaFX, PHP, C/C++, Ruby, Groovy dan Python. 

Catatan: untuk OS dengan windows 7 keatas, file .java tidak bisa diedit dengan menggunakan command prompt, alternatifnya adalah dengan menggunakan notepad, notepad++, ketika file .java di run di command prompt hasilnya akan keluar.

Buka Command Prompt => Cara manual : Start > All Programs > Accesories > Command Prompt
atau dengan (di Windows 8) : Klik logo windows di keyboard lalu ketik command prompt akan muncul program yang dimaksud.

cd\"program files"\Java\jdk1.8.0_31\bin *enter*
jika berhasil
c:\program files\Java\Java\jdk1.8.0_31\bin>_ (kursor kedip-kedip)
ketik d: *enter*
jika berhasil
d:\>_ (kursor kedip-kedip)
ketik md\latihanjava *enter*
ketik cd\latihanjava *enter*
jika berhasil
d:\latihanjava>_ (kursor kedip-kedip)
ketik: edit Hallo.java *enter*
jika berhasil akan muncul tab editor
ketik di editor

  class Hallo {
  public static void main (String[]args) {
  System.out.println ("Besok Libur!");
   }
  }

Tekan tombol Alt + F (secara bersamaan), lalu tekan s pada keyboard kemudian tekan lagi Alt+F (secara bersamaan), lalu tekan x pada keyboard
kemudian compile file java tadi dengan cara:
ketik:
c:javac Hallo.java *enter*
kalau tidak ada eror akan keluar baris kosong, kalau ada eror akan keluar petunjuk eror
kemudian lakukan Run dengan cara
ketik:
c: java Hallo *enter*

Jika berhasil akan keluar:
Besok Libur!

Pada latihan kode diatas, kita telah membuat sebuah program sederhana yang menampilkan tulisan “Besok Libur!” pada console. 

1. Terdapat beberapa aturan dalam membuat program dalam Java yaitu : Nama file harus sama dengan nama kelas program. Misal pada kode diatas nama kelasnya adalah Hallo, maka nama file harus Hallo.java. 
2. Hanya boleh terdapat satu kelas public pada sebuah file.
3. Kelas yang menjadi program harus memiliki metode public static void main(String[] args)
4. Terminal pada Java menggunakan tanda ; (titik koma). 

Thursday, February 19, 2015

Dasar Pemograman Java (2)

Penggunaan Komentar pada Java

Komentar digunakan untuk tulisan berupa keterangan dan tidak ikut diproses pada saat
program dijalankan. Komentar digunakan untuk mengingat kembali perintah yang pernah ditulis
Komentar pada Java menggunakan dua cara :
– Komentar satu baris
// ini adalah komentar satu baris
– Komentar lebih dari satu baris
/*   ini adalah komentar baris pertama
dan ini komentar baris kedua
*/

Baris perintah blok program

Baris perintah pada Java selalu diakhiri dengan tanda (;)
total = total + x;
Blok adalah kumpulan perintah yang diapit dengan tanda kurung buka { dan kurung tutup }
{
a = b + c;
a = a + 1;
}

Definisi sebuah class, diletakkan dalam blok.
public class Tanggal {
private int tgl;
private int bulan;
private int tahun;
}
Blok program bisa bersarang (nested) => di dalam blok program terdapat blok program yang lain
public class CekTanggal {
if (bulan==2)
{   tgl=28;
}
}

Identifier 

Identifier digunakan untuk memberi nama variabel, class dan method Identifier dimulai dengan sembarang huruf, underscore(_) atau dollar ($) Contoh penamaan :
namaku
_var1
$harga

Tipe Data Dasar 

Dalam JAVA, tipe data dasar ada 8 yaitu :
Logika – boolean ; 
Tipe data boolean mempunyai dua
kemungkinan nilai : true atau false

Teks – char 
Direpresentasikan dalam 16 bit unicode

Nilai karakter diapit dengan tanda petik tunggal
Contoh :
‘a’
huruf a
‘\u0063’

unicode karakter untuk huruf c

Teks – string 
Sebenarnya bukan tipe data dasar tapi sebuah class
• Perhatikan huruf besar pada karakter pertama yang merupakan ciri class

• Nilai string diapit dengan tanda petik ganda
contoh:
String salam=“Assalamu’alaikum”

String pesanerror=“Record tidak ditemukan”

Bilangan bulat – byte 
                        – short  
                        – int 
                        – long 

Menggunakan tiga bentuk => desimal, oktal, hexadesimal

Contoh :
– 2
Bentuk desimal untuk integer 2
– 077
Diawali dengan angka 0, menandakan bilangan oktal
– 0xBAAC
Diawali dengan 0x menandakan bilangan hexadesimal
• Defaultnya adalah int
• Untuk mendefinisikan tipe data long digunakan L atau l di belakang nilai


Bilangan pecahan – float 
                             – double
Defaultnya adalah double
Dapat dituliskan dalam bentuk :

  • Bilangan desimal : 12.345
  • Floating point : 6.02E34
  • Float : 2.425F
  • Double : 123.4E+342D

Tuesday, February 17, 2015

Kriteria Penjadwalan

Suatu algoritma penjadwalan CPU yang berbeda dapat mempunyai nilai yang berbeda untuk sistem yang berbeda. Banyak kriteria yang bisa dipakai untuk menilai algoritma penjadwalan CPU.
Kriteria yang digunakan dalam menilai adalah:
1. CPU Utilization. 
Kita ingin menjaga CPU sesibuk mungkin. CPU utilization akan mempunyai range dari 0 sampai 100 persen. Di sistem yang sebenarnya ia mempunyai range dari 40 sampai 100 persen.
2. Throughput. 
Salah satu ukuran kerja adalah banyaknya proses yang diselesaikan per satuan waktu. Jika kita mempunyai beberapa proses yang sama dan memiliki beberapa algoritma penjadwalan yang berbeda, throughput bisa menjadi salah satu kriteria penilaian, dimana algoritma yang menyelesaikan proses terbanyak mungkin yang terbaik.
3. Turnaround Time. 
Dari sudut pandang proses tertentu, kriteria yang penting adalah berapa lama untuk mengeksekusi proses tersebut. Memang, lama pengeksekusian sebuah proses sangat tergantung dari hardware yang dipakai, namun kontribusi algoritma penjadwalan tetap ada dalam lama waktu yang dipakai untuk menyelesaikan sebuah proses. Misal kita memiliki sistem komputer yang identik dan proses-proses yang identik pula, namun kita memakai algoritma yang berbeda, algoritma yang mampu menyelesaikan proses yang sama dengan waktu yang lebih singkat mungkin lebih baik dari algoritma yang lain. Interval waktu yang diijinkan dengan waktu yang dibutuhkan untuk menyelesaikan sebuah proses disebut turnaround time. Turnaround time adalah jumlah periode untuk menunggu untuk dapat ke memori, menunggu di ready queue, eksekusi CPU, dan melakukan operasi M/K.
4. Waiting Time. 
Algoritma penjadwalan CPU tidak mempengaruhi waktu untuk melaksanakan proses tersebut atau M/K, itu hanya mempengaruhi jumlah waktu yang dibutuhkan proses di antrian ready. Waiting time adalah jumlah waktu yang dibutuhkan proses di antrian ready.
5. Response Time. Di sistem yang interaktif, turnaround time mungkin bukan waktu yang terbaik untuk kriteria. Sering sebuah proses dapat memproduksi output di awal, dan dapat meneruskan hasil yang baru sementara hasil yang sebelumnya telah diberikan ke pengguna. Ukuran lain adalah waktu dari pengiriman permintaan sampai respon yang pertama diberikan. Ini disebut response time, yaitu waktu untuk memulai memberikan respon, tetapi bukan waktu yang dipakai output untuk respon tersebut.
6. Fairness. 
Suatu algoritma harus memperhatikan pengawasan nilai prioritas dari suatu proses (menghindari terjadinya starvation CPU time).
7. Efisiensi. 
Rendahnya overhead dalam context switching, penghitungan prioritas dan sebagainya menentukan apakah suatu algoritma efisien atau tidak. Sebaiknya ketika kita akan membuat algoritma penjadwalan yang dilakukan adalah memaksimalkan CPU utilization dan throughput, dan meminimalkan turnaround time, waiting time, dan response time.

Sumber: Pengantar Sistem Operasi Komputer (Jilid Pertama), oleh Masyarakat Digital Gotong Royong (MDGR)


Seri Diktat Kuliah; Pengantar Algoritma dan Pemograman




Seri Diktat Kuliah; Pengantar Algoritma dan Pemograman
Teknik Digaram Alur dan Bahasa Basic Dasar

Suryadi H.S, Agus Sumin

Download E-book

Konsep Penjadwalan

Siklus Burst CPU – M/K


Keberhasilan dari penjadwalan CPU tergantung dari beberapa properti prosesor. Pengeksekusian dari proses tersebut terdiri atas siklus CPU ekskusi dan M/K Wait. Proses hanya akan bolak-balik dari dua state ini, inilah yang disebut Siklus Burst CPU-M/K. Pengeksekusian proses dimulai dengan Burst CPU, setelah itu diikuti oleh Burst M/K, kemudian Burst CPU lagi lalu Burst M/K lagi, dan seterusnya dilakukan secara bergiliran. Burst CPU terakhir akan berakhir dengan permintaan sistem untuk mengakhiri pengeksekusian melalui Burst M/K lagi. 
Kejadian siklus Burst;


Dari gambar dapat kita lihat bahwa Burst CPU time yang lama jarang terjadi karena kebanyakan proses akan melakukan antara output ke layar atau file, maupun meminta input dari user atau file sehingga situasi dimana proses bekerja dengan memory dan register dalam jangka waktu lama tidak terlalu banyak ditemukan.

Penjadwalan Preemptive
Penjadwalan CPU mungkin akan dijalankan ketika proses dalam keadaan:
1. Berubah dari running ke waiting state.
2. Berubah dari running ke ready state.
3. Berubah dari waiting ke ready state.
4. Dihentikan.
Penjadwalan Preemptive mempunyai arti kemampuan sistem operasi untuk memberhentikan sementara proses yang sedang berjalan untuk memberi ruang kepada proses yang prioritasnya lebih tinggi. Penjadwalan ini bisa saja termasuk penjadwalan proses atau M/K. Penjadwalan Preemptive memungkinkan sistem untuk lebih bisa menjamin bahwa setiap proses mendapat sebuah slice waktu operasi. Dan juga membuat sistem lebih cepat merespon terhadap event dari luar (contohnya seperti ada data yang masuk) yang membutuhkan reaksi cepat dari satu atau beberapa proses. Membuat penjadwalan yang Preemptive mempunyai keuntungan yaitu sistem lebih responsif daripada sistem yang memakai penjadwalan Non Preemptive.
Dalam waktu-waktu tertentu, proses dapat dikelompokkan ke dalam dua kategori: proses yang memiliki Burst M/K yang sangat lama disebut I/O Bound, dan proses yang memiliki Burst CPU yang sangat lama disebut CPU Bound. Terkadang juga suatu sistem mengalami kondisi yang disebut busywait, yaitu saat dimana sistem menunggu request input (seperti disk, keyboard, atau jaringan). Saat busywait tersebut, proses tidak melakukan sesuatu yang produktif, tetapi tetap
memakan resource dari CPU. Dengan penjadwalan Preemptive, hal tersebut dapat dihindari. Dengan kata lain, penjadwalan Preemptive melibatkan mekanisme interupsi yang menyela proses yang sedang berjalan dan memaksa sistem untuk menentukan proses mana yang akan dieksekusi selanjutnya.
Penjadwalan nomor 1 dan 4 bersifat Non Preemptive sedangkan lainnya Preemptive. Penjadwalan yang biasa digunakan sistem operasi dewasa ini biasanya bersifat Preemptive. Bahkan beberapa penjadwalan sistem operasi, contohnya Linux 2.6, mempunyai kemampuan Preemptive terhadap system call-nya (preemptible kernel). Windows 95, Windows XP, Linux, Unix, AmigaOS, MacOS X, dan Windows NT adalah beberapa contoh sistem operasi yang menerapkan penjadwalan Preemptive.
Lama waktu suatu proses diizinkan untuk dieksekusi dalam penjadwalan Preemptive disebut time slice/quantum. Penjadwalan berjalan setiap satu satuan time slice untuk memilih proses mana yang akan berjalan selanjutnya. Bila time slice terlalu pendek maka penjadwal akan memakan terlalu banyak waktu proses, tetapi bila time slice terlau lama maka memungkinkan proses untuk tidak dapat merespon terhadap event dari luar secepat yang diharapkan.

Penjadwalan Non Preemptive

Penjadwalan Non Preemptive ialah salah satu jenis penjadwalan dimana sistem operasi tidak pernah melakukan context switch dari proses yang sedang berjalan ke proses yang lain. Dengan kata lain, proses yang sedang berjalan tidak bisa di- interupt.
Penjadwalan Non Preemptive terjadi ketika proses hanya:
1. Berjalan dari running state sampai waiting state.
2. Dihentikan.
Ini berarti CPU menjaga proses sampai proses itu pindah ke waiting state ataupun dihentikan (proses tidak diganggu). Metode ini digunakan oleh Microsoft Windows 3.1 dan Macintosh. Ini adalah metode yang dapat digunakan untuk platforms hardware tertentu, karena tidak memerlukan perangkat keras khusus (misalnya timer yang digunakan untuk menginterupt pada metode penjadwalan Preemptive).

Dispatcher

Komponen yang lain yang terlibat dalam penjadwalan CPU adalah dispatcher. Dispatcher adalah modul yang memberikan kontrol CPU kepada proses yang sedang terjadwal. 
Fungsinya adalah:
1. Context switching. Mengganti state dari suatu proses dan mengembalikannya untuk menghindari monopoli CPU time. Context switching dilakukan untuk menangani suatu interrupt (misalnya menunggu waktu M/K). Untuk menyimpan state dari proses-proses yang terjadwal sebuah Process Control Block harus dibuat untuk mengingat proses-proses yang sedang diatur scheduler. Selain state suatu proses, PCB juga menyimpan process ID, program counter (posisi saat ini pada program), prioritas proses dan data-data tambahan lainnya.
2. Switching to user mode dari kernel mode.
3. Lompat dari suatu bagian di progam user untuk mengulang program.

Dispatcher seharusnya dapat dilakukan secepat mungkin. Dispatch Latency adalah waktu yang diperlukan dispatcher untuk menghentikan suatu proses dan memulai proses yang lain.

Sumber: Pengantar Sistem Operasi Komputer (Jilid Pertama), oleh Masyarakat Digital Gotong Royong (MDGR)



Download e-book; Drupal 7

Download e-book : Beginning Drupal 7


Download E-Book; Sistem Operasi

Algoritma Penjadwalan

Penjadwalan berkaitan dengan permasalahan memutuskan proses mana yang akan dilaksanakan dalam suatu sistem. Proses yang belum mendapat jatah alokasi dari CPU akan mengantri di ready queue. Algoritma penjadwalan berfungsi untuk menentukan proses manakah yang ada di ready queue yang akan dieksekusi oleh CPU. Bagian berikut ini akan memberikan ilustrasi beberapa algoritma penjadwalan.

FCFS (First Come First Served)
Algoritma ini merupakan algoritma penjadwalan yang paling sederhana yang digunakan CPU. Dengan menggunakan algoritma ini setiap proses yang berada pada status ready dimasukkan kedalam FIFO queue atau antrian dengan prinsip first in first out, sesuai dengan waktu kedatangannya. Proses yang tiba terlebih dahulu yang akan dieksekusi.

Contoh
Ada tiga buah proses yang datang secara bersamaan yaitu pada 0 ms, P1 memiliki burst time 24 ms, P2 memiliki burst time 3 ms, dan P3 memiliki burst time 3 ms. Hitunglah waiting time rata-rata dan turnaround time (burst time + waiting time) dari ketiga proses tersebut dengan menggunakan algoritma FCFS. Waiting time untuk P1 adalah 0 ms (P1 tidak perlu menunggu), sedangkan untuk P2 adalah sebesar 24 ms (menunggu P1 selesai), dan untuk P3 sebesar 27 ms (menunggu P1 dan P2
selesai).

Gantt Chart Kedatangan Proses
Urutan kedatangan adalah P1, P2 , P3; gantt chart untuk urutan ini adalah:
Waiting time rata-ratanya adalah sebesar(0+24+27)/3 = 17ms. Turnaround time untuk P1 sebesar 24
ms, sedangkan untuk P2 sebesar 27 ms (dihitung dari awal kedatangan P2 hingga selesai dieksekusi), untuk P3 sebesar 30 ms. Turnaround time rata-rata untuk ketiga proses tersebut adalah (24+27+30)/3 = 27 ms.

Kelemahan dari algoritma ini:
1. Waiting time rata-ratanya cukup lama.
2. Terjadinya convoy effect, yaitu proses-proses menunggu lama untuk menunggu 1 proses besar yang sedang dieksekusi oleh CPU. Algoritma ini juga menerapkan konsep non-preemptive, yaitu setiap proses yang sedang dieksekusi oleh CPU tidak dapat di-interrupt oleh proses yang lain.
Misalkan proses dibalik sehingga urutan kedatangan adalah P3, P2, P1. Waiting time adalah P1=6;
P2=3; P3=0. Average waiting time: (6+3+0)/3=3.

Gantt Chart Kedatangan Proses Sesudah Urutan Kedatangan Dibalik
SJF (Shortest Job First)

Pada algoritma ini setiap proses yang ada di ready queue akan dieksekusi berdasarkan burst time terkecil. Hal ini mengakibatkan waiting time yang pendek untuk setiap proses dan karena hal tersebut maka waiting time rata-ratanya juga menjadi pendek, sehingga dapat dikatakan bahwa algoritma ini adalah algoritma yang optimal.

Contoh Shortest Job First
Contoh: 
Ada 4 buah proses yang datang berurutan yaitu P1 dengan arrival time pada 0.0 ms dan burst time 7 ms, P2 dengan arrival time pada 2.0 ms dan burst time 4 ms, P3 dengan arrival time pada 4.0 ms dan burst time 1 ms, P4 dengan arrival time pada 5.0 ms dan burst time 4 ms.
Hitunglah waiting time rata-rata dan turnaround time dari keempat proses tersebut dengan mengunakan algoritma SJF. Average waiting time rata-rata untuk ketiga proses tersebut adalah sebesar (0 +6+3+7)/4=4 ms.

Shortest Job First (Non-Preemptive)
Average waiting time rata-rata untuk ketiga prses tersebut adalah sebesar (9+1+0+2)/4=3 ms.
Ada beberapa kekurangan dari algoritma ini yaitu:
1. Susahnya untuk memprediksi burst time proses yang akan dieksekusi selanjutnya.
2. Proses yang mempunyai burst time yang besar akan memiliki waiting time yang besar pula karena yang dieksekusi terlebih dahulu adalah proses dengan burst time yang lebih kecil.

Algoritma ini dapat dibagi menjadi dua bagian yaitu :
1. Preemptive 
Jika ada proses yang sedang dieksekusi oleh CPU dan terdapat proses di ready queue dengan burst time yang lebih kecil daripada proses yang sedang dieksekusi tersebut, maka proses yang sedang dieksekusi oleh CPU akan digantikan oleh proses yang berada di ready queue tersebut. Preemptive SJF sering disebut juga Shortest-Remaining- Time-First scheduling.
2. Non-preemptive 
CPU tidak memperbolehkan proses yang ada di ready queue untuk menggeser proses yang sedang dieksekusi oleh CPU meskipun proses yang baru tersebut mempunyai burst time yang lebih kecil.


Sumber: Pengantar Sistem Operasi Komputer (Jilid Pertama), oleh Masyarakat Digital Gotong Royong (MDGR)

Download E-Book 


Array

Array merupakan objek yang dapat digunakan untuk menyimpan sejumlah data. Data yang dapat ditampung pada array dapat berupa tipe data ataupun kelas(objek).

Mendeklarasikan Array
Untuk membuatan variabel array pun berbeda dengan membuat variabel biasanya yaitu sebagai berikut :

TipeArray namaArray[];

Dimana tipe array dapat berupa tipe data biasa seperti int, char, short atau juga kelas seperti String dan yang lainnya.

Membuat Array 
Setelah mendeklarasikan Array, maka perlu dibuat arraynya terlebih dahulu, sebelum array tersebut digunakan, caranya dengan menggunakan perintah new.

TipeArray namaArray[];

namaArray = new TipeArray[jumlah];

Dimana jumlah array merupakan jumlah data yang dapat ditampung oleh array.

Memanipulasi Data dalam Array 

Setelah membuat Array, maka untuk melakukan proses manipulasi seperti menambahkan data ke Array, mengubah data di Array ataupun mengakses data dalam Array, maka diperlukan sebuah indeks, dimana saat membuat sebuah array dengan jumlah data 5, maka hasilnya akan terlihat seperti ini.
No
Indeks
1
 0
2
 1
3
 2
4
 3
5  
 4

Artinya data ke 1 dapat diakses menggunakan indeks 0 dan seterusnya. Dan untuk melakukan proses manipulasi data dalam array menggunakan indeks dapat digunakan dengan perintah : 

namaArray[indeks];

Misal : 

int a[] = new int[5]; 

a[0] = 234; 
a[1] = 6867; 
a[2] = 4234; 
a[3] = 564; 
a[4] = 2423; 

System.out.println(a[0]); 
System.out.println(a[1]); 
System.out.println(a[2]); 
System.out.println(a[3]); 
System.out.println(a[4]);


Array Multidimensi

Java mendukung pembuatan array multidimensi maksudnya kita dapat menambahkan data array ke dalam sebuah array, cara pembuatannya adalah sebagai berikut : 

TipeArray namaArray[][] = new TipeArray[jumlah][jumlah];

Perulangan

Perulangan while
Pernyataan while berguna untuk melakukan proses perulangan untuk sebuah kondisi, selama kondisi tersebut bernilai benar (true), maka perulangan akan terus berjalan, dan terhenti ketika kondisi bernilai salah (false). Bentuk pernyataan while seperti berikut ini : 

while(kondisi){
    // isi instruksi
}


Misal : 

int jumlah = 1;

while(jumlah <= 10){
    System.out.println(jumlah);
    jumlah++; // menaikkan jumlah
}


Jika program tersebut dijalankan, maka hasilnya adalah tulisan dari no 1 sampai 10. Dan saat jumlah bernilai 11, maka perulangan akan terhenti dikarenakan kondisi bernilai false (11 <= 10) 

Perulangan do-while 
Perulangan do-while merupakan perulangan yang hampir mirip dengan perulangan while namun perbedaannya, pada perulangan do-while, maka minimal instruksi akan dijalankan sekali. Bentuk pernyataan do-while sebagai berikut : 

do{
   // insturksi
}while(kondisi);


Misal. 

int jumlah = 100;

do{
    System.out.println(jumlah);
    jumlah++; // naikkan jumlah
}while(jumlah <= 10);


Jika program tersebut dijalankan, maka akan menghasilkan keluaran 100, artinya walaupun kondisi salah, namun minimal isi instruksi akan dijalankan sekali, hal ini dikarenakan proses do-while berbeda dengan while, dimana do-while pertama melakukan instruksi baru mengecek kondisi, sedangkan while pertama mengecek kondisi baru melakukan instruksi. 

Perulangan for 
Perulangan for merupakan perulangan yang memiliki variabel untuk melakukan pengkondisian, berbeda dengan while dan do-while yang kita harus membuat sebuah variabel diluar untuk melakukan penkondisian, pada perulangan for, ditempatkan sebuah blok untuk membuat variabel dan melakukan proses pengkondisian. Bentuk pernyataan for seperti berikut : 

for(inisialisasi; kondisi; penaikan/penurunan){
   instruksi
}


Misal kita akan menampilkan angka dari 1 = 100, maka dapat menggunakan perulangan for. 

for(int i = 1; i <= 100; i++){
    System.out.println(i);
}

Perintah break
Perintah break merupakan perintah yang dapat digunakan untuk menghentikan proses perulangan, misal jika kita membuat program seperti berikut : 

for(int i = 1; i <= 100; i++){
    System.out.println(i);
    if(i == 50){
        break;
    }
}


Maka program hanya akan menampilkan angka dari 1 sampai 50, karena pada saat i mencapai 50, program dihentikan oleh perintah break. 

Perintah continue 
Perintah continue dapat digunakan untuk meloncati sebuah perulangan, maksudnya adalah instruksi yang seharusnya dapat dilewat, hal ini berarti instrukti tidak akan dijalankan. Misal. 

for(int i = 1; i <= 100; i++){
    if(i % 2 == 0){
        continue;
    }
    System.out.println(i); 
}

Jika program diatas dijalankan, maka hasilnya akan menampilkan angka-angka ganjil saja, hal ini dikarenakan saat nilai i merupakan angka genap, maka perintah continue membuat program tidak menampilkan angka genap. 

Percabangan


Percabangan if
Pernyataan if merupakan salah satu bentuk pernyataan yang berguna untuk mengambil keputusan terhadap sebuah kemungkinan. Bentuk pernyataan if berupa :

if(kondisi){     // yang akan dijalankan}

Contoh : 

int nilai = 10;
if(nilai == 10){
    System.out.println("Sepuluh");
}

Jika program diatas dijalankan, maka hasilnya adalah tulisan “Sepuluh” karena kondisi pada if bernilai true, jika kondisi bernilai salah, misal nilai ==  100, maka
program tidak akan menghasilkan tulisan apa-apa. 

Percabangan if-else 
Percabangan if-else merupakan percabangan yang sama dengan percabangan if namun memiliki kondisi false, artinya jika kondisi pada if tidak terpenuhi maka perintah pada else akan dijalankan. Bentuk pernyataan if-else berupa : 

if(kondisi){
    // jalankan jika kondisi true
}else{
    // jalankan jika kondisi false
}

Misal

int nilai = 8;
if(nilai == 10){
    System.out.println("Sepuluh");
}else{
    System.out.println("Bukan Sepuluh");
}


Jika program diatas dijalankan, maka hasilnya adalah tulisan “Bukan Sepuluh”, hal ini dikarenakan nilai bernilai 8, bukan 10.  

Percabangan if bersarang 

Percabangan if bersarang merupakan gabungan beberapa if dan dapat pula digabung dengan if-else. Bentuk pernyataan if bersarang adalah sebaga berikut : 

if(kondisi1){
   // perintah kondisi1 
   }else if(kondisi2){
   // perintah kondisi2
}else if(kondisi3){
   // perintah kondisi3
}else{
   // perintah jika semua kondisi tidak ada yang benar
}

Misal.

int nilai = 6;
char index;

if(nilai >= 8){
    index = 'A';
}else if(nilai >= 7){
    index = 'B';
}else if(nilai >= 6){
    index = 'C';
}else if(nilai >= 5){
    index = 'D';
}else{
    index = 'E';
}

System.out.println(index);

Jika program diatas dijalankan, maka hasilnya adalah ‘C’.

Percabangan switch-case 

Percabangan switch-case merupakan percabangan yang kondisinya hanya dapat menggunakan perbandingan == (sama dengan). Bentuk pernyataan percabangan switch-case adalah sebagai berikut: 

switch(variabel){
    case nilai1:
        // jalankan instruksi
        break; // hentikan
    case nilai2:
        // jalankan instruksi
        break; // hentikan
    case nilai2:
        // jalankan instruksi
        break; // hentikan
    case nilai4:
        // jalankan instruksi
        break; // hentikan
    default: 
       // jalankan instruksi
        break; // hentikan
}

Pada percabangan switch pertama, diperlukan sebuah variabel, setelah itu pada bagian case dibandingkan, jika sama, maka instruksi akan dijalankan sampai menemui tanda break. Misal :

int hari = 5;

switch(hari){
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
        System.out.println("Bukan Hari Libur");
        break;
    case 7:
        System.out.println("Hari Libur");
        break;
    default:
        System.out.println("Hari Tidak Diketahui");
        break;
}

Jika program diatas dijalankan, maka program akan menghasilkan tulisan “Bukan Hari Libur”.

Dasar-Dasar Pemograman Java

Terdapat beberapa aturan dalam membuat program dalam Java yaitu :

  1. Nama file harus sama dengan nama kelas program. Misal pada kode diatas nama kelasnya adalah HelloWorld, maka nama file harus HelloWorld.java. 
  2. Hanya boleh terdapat satu kelas public pada sebuah file.
  3. Kelas yang menjadi program harus memiliki metode public static void main(String[] args)
  4. Terminal pada Java menggunakan tanda ; (titik koma). 

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

Script diatas menampilkan tulisan “Hello World” pada console.

Tipe Data 
Terdapat beberapa tipe data di Java;
Tipe Data
Keterangan
boolean
true atau false
char 
Karakter
byte
-128 - 127
short
-32768 - 32767
int
-2147483648 - 2147483647
long
-9223372036854775808 - 9223372036854775807

String bukanlah merupakan tipe data di Java, String merupakan Object. Namun string memiliki keunikan yaitu String dapat langsung dibuat tanpa harus membuat Object. 

Variabel
Variabel merupakan sesuatu yang digunakan untuk menampung sebuah data. Sebuah variabel harus ada dalam sebuah kelas atau metode. Contoh sebuah variabel di Java terlihat pada script dibawah ini:

Tipevariabel namavariabel;

Tipe variabel dapat berupa tipe data atau kelas, misal : 

int nilai;
char indexNilai;

Untuk menambahkan nilai ke sebuah variabel, maka dapat menggunakan tanda = (sama dengan) ,  misal jika kita akan menambahkan nilai 100 pada variabel nilai dan A pada variabel indexNilai, maka dapat terlihat pada kode dibawah ini;

int nilai;
char indexNilai;

nilai = 100;
indexNilai = 'A';

Atau dapat juga langsung saat pembuatan sebuah variabel;
int nilai = 100;
char indexNilai = „A‟; 

Syarat-syarat penamaan variabel adalah : 
1. Harus diawalai dengan huruf
2. Tidak boleh terdapat karakter unik seperti @, #,% dan lain-lain
3. Tidak boleh mengandung karakter putih (spasi, enter, tab) 

Operator pada Java

Operator adalah suatu karakter khusus yang memerintahkan compiler untuk melakukan suatsu operasi terhadap sejumlah operand.
contoh: c=a+b
pada contoh tersebut yang disebut sebagai operator adalah "+" dan operand-nya adalah a dan b

  • Operator Aritmatika
Operator
Hasil
+
Penjumlahan
-
Pengurangan
*
Perkalian
/
Pembagian
%
Modulus (Hasil Bagi)
++
Increment
--
Decrement
+=
Persamaan Penjumlahan
+-
Persamaan Pengurangan

Contoh : 

int a = 10;
int b = 3;
int c = a / b;

System.out.println(c);

Hasil dari script program diatas adalah 3 bukan 3.333. Hal ini dikarenakan dalam Java jika kita melakukan operasi pembagian dengan tipe data integer, maka hasilnyapun akan integer, dan integer tidak dapat mengandung nilai koma dalam Java, sehingga jika akan melakukan perkalian yang menghasilkan nilai koma, maka harus menggunakan tipe data double atau float.
  • Operator Logika
Operator
Hasil
&&
AND
||
OR
!
NOT
Operator logika digunakan untuk membentuk suatu keadaan dari dua atau lebih kondisi tertentu, operator logika biasanya digabungkan dengan operator pembanding. Hasil dari operator logika adalah boolean. 
Hasil operasi logika dengan menggunakan && adalah sebagai berikut;
Operasi 1
Operasi 2
Hasil
False
False
False
False
True
False
True
False
False
True
False
False
True
True
True
Hasil operasi logika dengan menggunakan || adalah sebagai berikut;
Operasi 1
Operasi 2
Hasil
False
False
False
False
True
True
True
False
True
True
True
True
Contoh

boolean hasil = 10 == 100 || 100 == 100;

System.out.println(hasil);

Maka hasilnya adalah true.
 
  • Operator Penugasan
Operator
Hasil
=
Pemberian nilai
+=
Penambahan bilangan
-=
Pengurangan bilangan
*=
Perkalian bilangan
/=
Pembagian bilangan
%=
Pemerolehan sisa bagi
Contoh  

int a = 10;
a += 5;

System.out.println(a);

Hasil dari operasi += tersebut adalah 15. Hal ini dikarenakan a += 5 sama dengan a = a + 5, dikarenakan a sebelumnya adalah 10, maka itu berarti a = 10 + 5.  Jika akan melakukan penambahan atau pengurangan dengan nilai 1, maka dapat dengan mudah menggunakan karakter ++ untuk penambahan atau -- untuk pengurangan, misal : 

int a = 10;
a--;

System.out.println(a);

Maka hasilnya adalah 9. 
  • Operator Relasi/Pembanding
Operator
Hasil
==
Sama Dengan
!=
Tidak Sama Dengan
> 
Lebih Besar dari
< 
Lebih Kecil dari
>=
Lebih besar atau sama dengan
<=
Lebih Kecil atau sama dengan
Hasil dari operasi pembanding adalah boolean. True jika operasi pembanding tersebut benar, dan false jika operasi pembanding tersebut salah, misal : 

boolean a = 10 == 100;

System.out.println(a);

Hasil dari program diatas adalah false, karena memang 10 tidak sama dengan 100.