Rabu, 26 Oktober 2011

Menghitung dua waktu berbeda saat benda berada pada ketinggian yang sama

Problem:
Pada waktu kapankah posisi benda berada pada pada ketinggian yang sama saat benda naik ke atas(t1) dan saat kembali turun (t2) ?

Berikut ini solusi untuk menghitung kedua waktu untuk ketinggian yang sama saat benda naik dan turun untuk benda yang dilempar secara vertikal ke atas.

Rumus dasar: y = v0t - 1/2gt^2
dengan:
v0 = kecepatan awal benda (m/s)
t = waktu (s)
g = percepatan gaya gravitasi (9,81 m/s^2)

Solusi:
Misalkan ketinggian benda adalah yc, maka yc = v0t - 1/2gt^2.
Selanjutnya dapat ditulis 1/2gt^2 -v0t + yc = 0, menjadi bentuk persamaan kuadrat ax^2 + bx + c
Menggunakan rumus mencari akar-akar persamaan kuadrat ABC, yakni t1 = (b - akar(b^2 - 4ac))/2a dan t2 = (b + akar(b^2 - 4ac))/2a, dengan a = 1/2g, b = v0, c = yc
Sekarang didapat: t1 = (v0 - akar(v0^2 - 4(1/2)g.yc))/2(1/2)g dan t2 = (v0 + akar(v0^2 - 4(1/2)g.yc))/2(1/2)g
Disederhanakan menjadi t1 = (v0 - akar(v0^2 - 2gyc))/g dan t2 = (v0 + akar(v0^2 - 2gyc))/g
Karena akar-akar persamaan kuadrat t1 dan t2 akan memenuhi persamaan kuadrat 1/2gt^2 -v0t + yc = 0, maka kita dapat dengan mudah mengetahui kapan saat benda pada posisi tertentu yang sama saat benda naik dan turun.

ex:
v0 = 5 m/s
g = 9,81 m/s^2
yc = 0,2

Mencari waktu t1 dan t2 saat ketinggiannya (yc) = 0.2 m

t1 = (v0 - akar(v0^2 - 2gyc))/g
t1 = (5 - akar(5^2 - 2(9,81).0,2))/9,81
t1 = (5 - akar(25 - 3,924))/9,81
t1 = (5 - akar(21,076))/9,81
t1 = (5 - 4.59)/9,81
t1 = 0,41 / 9,81
t1 = 0,042

t2 = (v0 + akar(v0^2 - 2gyc))/g
t2 = (5 + akar(5^2 - 2(9,81).0,2))/9,81
t2 = (5 + akar(25 - 3,924))/9,81
t2 = (5 + akar(21,076))/9,81
t2 = (5 + 4.59)/9,81
t2 = 9,59 / 9,81
t2 = 0,978

Jadi pada waktu 0,042 dan 0,987 detik benda yang memiliki kecepatan awal 5 m/s berada pada ketinggian 0,2 meter

Buat programnya:
Melelahkan bukan jika nilainya bukan bilangan yang mudah dilakukan perhitungan, misalnya kesulitan mencari akarnya atau bilangannya pecahan desimal. Meskipun menggunakan kalkulator kesalahan bisa terjadi karena urutan atau kesalahan pemasukan data yang serba manual.

Paling enak ya dibuat programnya saja, semua bisa dimanipulasi. Pengguna cuma memasukan nilai-nilai awalnya saja, dan nggak sampai satu detik hasil program telah nampak di layar :D


Yang penting saat membuat program adalah saat menyusun algoritma (urutan terstruktur menyelesaikan masalah) termasuk merubah rumusnya menjadi rumus yang dipahami komputer. Untungnya bahasa pemrograman tingkat tinggi (mendekati bahasa manusia) memiliki banyak persamaan dengan bahasa manusia termasuk rumus matematika atau fisika.

Beberapa aturan bahasa pemrograman Python:
- Koma pada suatu bilangan harus diubah ke titik, sehingga 9,81 harus diubah jadi 9.81
- Pangkat yang semula dituliskan menggunakan karakter ^ diganti menjadi **
- Mencari akar menggunakan fungsi internal math.sqrt() atau cukup ditulis sqrt() saja, misal akar 4 ya sqrt(4)

Apakah harus menggunakan bahasa pemrograman Python? Tentu saja tidak, segudang bahasa pemrograman lainnya seperti C, C++, C#, Java, PHP, JavaScript, Pascal, VB, dan lainnya bisa kita gunakan. Namun seperti bahasa manusia juga, tiap bahasa pemrograman memiliki struktur penulisan atau grammar tersendiri.

Kita ambil rumusnya saja langsung:
t1 = (v0 - akar(v0^2 - 2gyc))/g diubah jadi: t1 = (v0 - math.sqrt(v0**2 - 2*g*yc))/g
t2 = (v0 + akar(v0^2 - 2gyc))/g diubah jadi: t2 = (v0 + math.sqrt(v0**2 - 2*g*yc))/g

berikut kode lengkapnya:
v0 = 5 # kec. awal, ubah nilai ini sesuai kebutuhan
yc = 0.2 # ketinggian, ubah nilai ini sesuai kebutuhan
g = 9.81 # percepatan gaya gravitasi

print '\nKecepatan awal (v0) = ', v0, 'm/s'
print 'Ketinggian (yc) = ', yc, 'm'
print 'Percepatan gaya gravitasi (g) = ', g, 'm/s^2'
print ''

import math

t1 = (v0 - math.sqrt(v0**2 - 2*g*yc))/g
t2 = (v0 + math.sqrt(v0**2 - 2*g*yc))/g
print 'Benda berada pada ketinggian %g m saat waktunya %.2f dan %.2f detik.\n' % (yc, t1, t2)

Manakah yang perlu diubah-ubah? cukup nilai dari variabel v0 dan yc nya saja, mudah bukan?

Happy programming :D

(C) 2011 Computer Science Solution (CSS)

Selasa, 25 Oktober 2011

Membuat Program Piramida Bilangan

Kamu sudah tahu kan bentuk piramida seperti apa. Namun program yang kita buat hanya berbentuk 2 dimensi saja (segitiga) dari bentuk asli piramida tersebut. Program sederhana ini akan menyusun bilangan dari angka 1 sampai N, dimana N adalah bilangan yang dimasukan user. Nilai N ini digunakan sebagai tinggi (jumlah baris) piramida ini.

Misalkan user memasukan nilai 5, maka bentuknya adalah seperti ini:
         1
       2 1 2
     3 2 1 2 3
   4 3 2 1 2 3 4
 5 4 3 2 1 2 3 4 5
 

Bagaimana membuatnya dalam program C++?

Langkah pertama adalah meminta user memasukan bilangan untuk jumlah barisnya (N) dan ditempatkan pada variabel integer jmlBaris.

Setelah itu tetapkan nilai awal program. Kamu perlu mendefinisikan jangkauan nilainya. Jangkauan ini memiliki bentuk deret bilangan ganjil 1, 3 ,5, dan seterusnya.

Karena pola bilangannya semakin ke bawah semakin naik nilainya maka perlu digunakan variabel counter yang akan mencatat nilai seperti:

baris 1 = 1
baris 2 = 2 1 2
baris 3 = 3 2 1 2 3
baris 4 = 4 3 2 1 2 3 4
baris 5 = 5 4 3 2 1 2 3 4 5

Perhatikan juga bilangannya bahwa jika nilainya kurang dari satu, maka bilangan akan dijumlahkan lagi. Perhatikan 3 2 1 2 3, bilangan akan dikurangi dulu sampai angka 1 kemudian dijumlahkan lagi setelah angka 1. Untuk keperluan ini, kamu memerlukan variabel tipe boolean yang akan memberitahu apakah mode perhitungan diubah dari pengurangan ke penjumlahan, misalnya kita set variabel balik pada awalnya adalah false.


Untuk membentuk pola miring, maka dapat dilakukan dengan mengetahui posisi nilai sebelumnya. Misalnya posisi sebelumnya berada pada nilai 5 maka posisi penulisan angka sekarang pada posisi 5-1 = 4 dan bila posisi sebelumnya 4 maka posisi sekarang 4-1 = 3 jadi bentuknya starter - 1.

Kamu juga perlu tahu lebar piramidanya dengan mengalikan jumlah baris dengan bilangan 2. Sehingga tengah-tengah piramida tersebut dapat diketahui dengan membagi dua lebar piramida tersebut.

Berikut kode inisialisasi awal program ini:

int jangkauan = 1;
int counter = 1;
int starter = jmlBaris;
int lebar = jmlBaris * 2;
bool balik = false;

Melalui perulangan for terluar, maka kamu bisa menentukan jumlah barisnya. Berikut potongan kodenya:

for (int i = 1; i <= jmlBaris; i++) {
 counter = i;
   
 // instruksi selanjutnya berupa perulangan bersarang
 // untuk menentukan nilai per baris
 // ..... for
 // ..... for
 
 balik = false;
 starter--;
 jangkauan += 2;
 lebar = jmlBaris * 2;
 cout << "\n" << endl;
}
Dapat dilihat dari potongan kode di atas tiap ganti baris, beberapa variabel di inisialisasi ke nilai baru seperti mode penjumlahan diganti ke mode pengurangan melalui variabel balik = false, kemudian awal penulisan bilangan digeser ke kiri sebesar satu langkah melalui bentuk starter--, jangkauan nilai semakin besar yang misalnya dari 1 ke 3, dan dari 3 ke 5. Kemudian lebar akan diset ke bentuk awal. Kode selanjutnya adalah untuk menuliskan bilangan, spasi, dan format penulisan lainnya. Kode ini dituliskan di dalam blok perulangan di atas. Berikut kodenya:
for (int j = 1; j <= lebar; j++) {
 if (j == starter) {
  for (int k = 1; k <= jangkauan; k++) {
   if (counter <= 1 && !balik) balik = true;
   printf("%4d", counter);
   lebar--;
   if (balik) counter++;
   else counter--;      
  }
 }
 else {
  cout << "    ";
 }
}

Perulangan pertama pada kode di atas akan menentukan lebar piramida yang bernilai 2 kali tingginya. Kemudian akan memeriksa apakah pada posisi j yakni posisi tertentu pada jangkauan lebarnya sama dengan nilai starter. Penyeleksian kondisi ini nanti akan menentukan kemiringan angka yang dituliskan sehingga membentuk gambar piramida.

Perulangan kedua digunakan untuk keperluan menuliskan angka-angka penyusun piramida dan di dalamnya terdapat penyeleksian kondisi lagi apakah nilai yang dituliskan kurang dari satu, jika benar maka nilainya dinaikkan lagi.

Jika kondisi penulisan angka tidak terpenuhi maka, program hanya akan menuliskan spasi baris.

Program ini membutuhkan kemampuan algoritma yang matang. Karena berhubungan dengan menyusun pola piramida(segitiga sama kaki) dan menuliskan pola bilangan 1; 2 1 2; 3 2 1 2 3; dst, secara vertikal.

Happy Programming :D

(C) 2011 Computer Science Solution (CSS)

Membuat Fungsi (C++)

Fungsi adalah sesuatu yang sangat sering kamu jumpai di dalam pemrograman termasuk C++. Sebuah fungsi digunakan untuk mengeksekusi perintah yang spesifik. Jadi bila kamu mempunyai kode yang ditujukan hanya untuk menjumlahkan data, maka buatlah fungsi yang isinya menjumlahkan data saja. Hindari sebuah fungsi yang mengerjakan berbagai operasi dengan tujuan yang berbeda.

Suatu program yang baik adalah dengan memecah-mecah persoalan besar menjadi beberapa persoalan kecil. Nah setiap persoalan-persoalan kecil tersebut ditempatkan pada masing-masing fungsi dengan tugas yang spesifik. Misalnya kamu punya tiga bagian program yakni:

1. Input data
2. Proses
3. Output informasi

Maka buatlah masing-masing fungsi dari ketiganya. Contoh:

1. Fungsi input.
Menyediakan menu untuk memasukan data dan juga pemeriksaan terhadap semua nilai yang dimasukan user.

2. Fungsi proses.
Setelah data-data input diperiksa oleh fungsi input dan hasilnya valid (benar) maka data tersebut akan diproses pada inti program ini yakni di dalam fungsi proses. Bila memungkinkan, tiap proses-proses yang ada pada fungsi proses ini dipecah-pecah lagi menurut proses yang lebih spesifik, misalnya subproses 1, subproses2, subproses3.

3. Fungsi output.
Data yang telah diolah dan diproses di dalam fungsi proses, maka selanjutnya data-data tersebut telah siap ditampilkan kepada user dalam bentuk informasi. Informasi yang ditampilkan pada fungsi output ini hasilnya harus sesuai input pengguna yang telah diproses secara valid. Jenis informasi yang ditampilkan dapat berupa konfirmasi atas hasil masukan, keterangan-keterangan, atau campuran dari keduanya.

Bagaimana membuat fungsi pada pemrograman C++?

Ada dua bentuk penulisan fungsi pada pemrograman C++ yakni cara langsung dan mendeklarasikan prototype fungsinya dulu.

 

1. Cara langsung
Cara langsung ini dengan mendefinisikan fungsi secara utuh yakni menuliskan header dan tubuh fungsi. Definisi fungsi harus dituliskan sebelum fungsi utama program yakni fungsi main(). Berikut contoh penerapannya:

#include <iostream>
using namespace std;

// definisi fungsi harus dituliskan sebelum fungsi main()
void fungsi1(){
 cout << "Di dalam fungsi 1" << endl;
}

int main() {
 
 // memanggil fungsi 1
 fungsi1();
 
 return 0;
}

 

2. Melalui prototype fungsi
Jika kamu ingin menuliskan definisi fungsi setelah fungsi utama program yakni fungsi main(), maka kamu harus menuliskan prototype fungsi sebelum fungsi main(). Protoype fungsi berisi header fungsi tanpa blok isinya termasuk tanda {}.
#include <iostream>
using namespace std;

// protoype fungsi yang hanya berisi header fungsi
void fungsi1();

int main() {
 
 // memanggil fungsi 1
 fungsi1();
 
 return 0;
}

// definisi fungsi dituliskan setelah fungsi main()
void fungsi1(){
 cout << "Di dalam fungsi 1" << endl;
}

 

Berikut ini contoh penggunaan fungsi dalam program sederhana C++ dengan menggunakan prototype fungsi:
#include <iostream>
#include <string>

using namespace std;

// prototype fungsi
void fungsi1();
int fungsi2(int nilai);
void fungsi3(string nama, int umur = -1);

int main() {
 
 // panggil fungsi1
 fungsi1();
 
 // panggil fungsi2 dengan melampirkan suatu nilai
 // dan mengembalikan nilai tersebut
 int nilai = fungsi2(12345);
 cout << "Oh, terima kasih sudah mengembalikan nilai = " << nilai << " kepadaku." << endl;
 
 // panggil fungsi3 dengan memberikan sebuah data saja
 fungsi3("Joni");
}

void fungsi1() {
 cout << "\nHey..! aku berada di dalam fungsi 1, makasih sudah menyapaku..." << endl;
}

int fungsi2(int nilai) {
 cout << "\nAda nilai " << nilai << " masuk ke fungsi 2, aku kembalikan aja ke tempat asalnya." << endl;
 return nilai;
}

void fungsi3(string nama, int umur) {
 cout << "\nHai " << nama << ", selamat datang di fungsi 3" << endl;
 
 if (umur < 0)
  cout << "Hmm.. tunggu dulu! Kamu belum memasukan umurmu dengan benar! \nMasa umur kamu " << umur << " tahun?!\n" << endl;
 else
  cout << "Wah kamu sudah berumur " << umur << " tahun sekarang :)" << endl;
}

Happy programming :D

(C) 2011 Computer Science Solution (CSS)

Minggu, 23 Oktober 2011

Program mencari bilangan n dari bentuk n^3 < nilaiMaksimal

Misalkan kamu disuruh mencari bilangan terbesar n dari n pangkat 3 yang kurang dari bilangan tertentu. Misalnya berapa nilai n untuk n pangkat 3 yang kurang dari 120000?

Hal penting yang perlu dilakukan adalah membandingkan nilai n pangkat 3 (n^3) dengan nilai maksimalnya. Periksa apakah sudah melewati nilai maksimal yang diinginkan, misalnya saja nilai maksimalnya adalah 120000.

Kalau dijabarkan, logikanya seperti ini:


Nah karenya syaratnya n^3 < 120000, maka bilangan n adalah 49 dimana 49 x 49 x 49 (49^3) adalah 117649 dan 117649 < 120000. Jadi bisa disimpulkan bahwa bilangan n = 49 adalah bilangan terbesar dari bentuk n^3 yang hasilnya kurang dari 120000. Bila hitungan ini terlalu besar nilainya, kamu bisa dengan mudah menurunkan nilai maksimalnya, misalnya 64. Sehingga bilangan terbesar dari bentuk n^3 yang hasilnya kurang dari 64 adalah n = 3. Kalau n = 4 maka n^3 = 4^3 = 64 sehingga syaratnya tidak terpenuhi karena program meminta n^3 yang kurang dari 64. Untuk melakukan itu semua, diperlukan sebuah perulangan. Kamu bisa pakai perulangan jenis while. Berikut potongan kodenya:

while (n3 < maks) {
 n++;
 n3 = n * n * n;
}

System.out.println("\nn = " + (n-1));
Terlihat jelas bahwa perulangan hanya akan berhenti jika n3 lebih besar dari maks. Nilai n akan dinaikkan satu tiap perulangannya kemudian nilai tersebut dikalikan sampai tiga kali (dipangkatkan 3) dan hasilnya disimpan di variabel n3. Setelah kondisi logika n3 < maks bernilai salah maka perulangan berhenti dan akan langsung menampilkan nilai n ke layar. Berikut kode selengkapnya dalam bahasa pemrograman Java:
/*
Program mendapatkan nilai n terbesar dari bilangan n pangkat 3 sebelum nilai tertentu.

Ambil bilangan n terbesar dari bentuk n^3 < maks.

File: CSS.java
Compile: javac CSS.java
Run: CSS.java

(C) 2011 Computer Science Solution (CSS)
*/

public class CSS {
 public static void main(String[] args) {
  int n = 1;
  int n3 = n * n * n;
  int maks = 120000;
  
  while (n3 < maks) {
   n++;
   n3 = n * n * n;
  }
  
  System.out.println("\nn = " + n);
 }
}

(C) 2011 Computer Science Solution (CSS)

Menampilkan karakter ASCII dari karakter '~' sampai '!' (Java)

Ingin menampilkan karakter ASCII dari karakter '~' sampai '!'?

Intinya adalah mengonversi bilangan bulat 33 sampai 126 ke tipe data char. Untuk mendapatkan karakter ASCII tersebut, lakukan type-casting yakni dengan cara menuliskan kode (char)i, dimana i adalah variabel bilangan bulat.


Kemudian untuk mendapatkan karakter ASCII itu semua, gunakanlah perulangan, salah satunya tipe while dengan melakukan perulangan sebanyak 33 sampai 126 = 94 kali (while (i <= 126) dengan i = 33). Berikut kode selengkapnya dalam bahasa pemrograman Java:

/*
Program menampilkan karakter ASCII dari karakter '!' sampai karakter '~'
File: CSS.java
Compile: javac CSS.java
Run: CSS.java
(C) 2011 Computer Science Solution (CSS)
*/
public class CSS {
public static void main(String[] args) {
int i = 33;
int row = 1;
System.out.println("\n");
while (i <= 126) { System.out.print((char)i + " "); i++; if (row % 15 == 0) System.out.println("\n"); row++; } System.out.println("\n"); } }


(C) 2011 Computer Science Solution (CSS)

Menggunakan kelas JOptionPane pada Pemrograman Java (PEMULA)

Tanya: Mengapa menggunakan JOptionPane?
Jawab: Agar memudahkan pengguna untuk memasukan data dan melihat hasil keluarannya.

Kelas JOptionPane merupakan kelas dari paket swing. Objek JOptionPane merupakan form berbentuk GUI dialog (jendela input/konfirmasi/informasi) yang dapat berfungsi sebagai:
1. Jendela pesan informasi (JOptionPane.showMessageDialog())
2. Jendela nilai masukan (JOptionPane.showInputDialog())
3. Jendela konfirmasi (JOptionPane.showConfirmDialog())

Berikut ini contoh penggunaan ketiga fungsi dari JOptionPane yang meminta user memasukan nilai kemudian program akan menjumlahkannya secara otomatis. Program akan segera menampilkan hasil penjumlahannya setelah user memilih untuk tidak memasukan nilai lagi.

Untuk melihat kerja programnya, kita bedah kodenya :D
Pertama kita definisikan dulu variabel yang akan digunakan untuk menampung nilai yang diperlukan:

int opsi = JOptionPane.YES_OPTION;
double jumlah = 0;

Kode di atas maksudnya variabel opsi menampung nilai dari JOptionPane yakni YES_OPTION yang merupakan nama alias dari nilai 0.
Variabel jumlah dinolkan dulu karena belum memulai penjumlahan.
Keyword int artinya variabel yang memakai keyword tersebut (contoh: int opsi) hanya bisa menampung nilai bilangan bulat saja. Nah kalau keyword double digunakan untuk menampung bilangan pecahan desimal.

Karena program akan meminta user secara terus menerus memasukan nilai maka kode berikut diperlukan:
while (opsi == JOptionPane.YES_OPTION)
{
// instruksi akan diulang-ulang di sini :D
}

Sampai kapan user diminta untuk memasukan nilai? Sampai user menekan tombol NO saat program meminta user untuk memasukan nilai lagi. Saat user menolak untuk memasukan nilai lagi, maka statemen: while (opsi == JOptionPane.YES_OPTION) bernilai false, yang artinya perulangan berhenti. Jadi intinya perulangan while akan terus menerus melakukan perulangan sampai nilainya false. Oh jadi kalau nilainya true maka perulangan while akan terus terjadi? YA benar :D

Sekarang inti dari program ini adalah pada statemen penjumlahan berikut:
jumlah += Double.parseDouble(JOptionPane.showInputDialog(null, "Masukan nilai:"));

Jangan bingung dulu melihat statemen di atas :D
Statemen di atas kalau disederhanakan akan seperti berikut:

jumlah = 0

Perulangan ke-1 (user memasukan nilai 2):
jumlah = jumlah + 2
jumlah = 0 + 2
jumlah = 2

Perulangan ke-2 (user memasukan nilai 5):
jumlah = jumlah + 5
jumlah = 2 + 5
jumlah = 7

Perulangan ke-3 (user memasukan nilai 30):
jumlah = jumlah + 30
jumlah = 7 + 30
jumlah = 37

dan seterusnya :D

Iya tapi aku bingung nih, itu Double.parseDouble() buat apa ya?
Double.ParseDouble() berfungsi untuk mengubah format tipe data(jenis nilai) dari tipe data String(tulisan) ke tipe data Double(bilangan pecahan murni).

Tapi mengapa perlu diubah? Kan aku tadi memasukan nilai bilangan pecahan 2.5 :(
Hehehe :D, itu karena keluaran dari method(fungsi) JOptionPane.showInputDialog() adalah tipe data String. Jadi sebelum diubah, nilainya adalah "2.5", nah setelah diubah jadi 2.5. Beda lho antara "2.5" dan 2.5.

Kalau "2.5" (tipe data String) adalah abjad tulisan alfabet "2.5"(bisa campuran angka dan huruf). Kalau 2.5 (tipe data Double) itu bentuk nilai nominal pecahan desimal 2.5 (murni angka). Saya pakai karakter "" (petik dua) sebagai pembeda antara tipe data String dan selainnya(integer, float, double, boolean).

Nah setelah user memasukan nilai ke dalam program, maka sekarang saatnya program bertanya pada user untuk memasukan nilai lagi apa tidak. Bagaimana cara program melakukannya? Berikut kodenya:

opsi = JOptionPane.showConfirmDialog(null, "Tambahkan data lagi?","Konfirmasi", JOptionPane.YES_NO_OPTION);

Melalui method atau fungsi showConfirmDialog(null, "Tambahkan data lagi?","Konfirmasi", JOptionPane.YES_NO_OPTION), program akan menampilkan jendela konfirmasi ke user dengan kalimat "Tambahkan data lagi?", dan judul jendelanya adalah "Konfirmasi", serta tombolnya ada dua yakni Yes dan No.

Nah jika user menekan tombol No, maka variabel opsi bernilai 1 yang memiliki nama alias(enumerasi) NO_OPTION. Kalau tombol Yes maka variabel opsi bernilai 0 (YES_OPTION).

Sekarang user telah selesai memasukan nilai, bagaimana cara program menampilkan hasilnya? Kode sederhana berikut
digunakan:

JOptionPane.showMessageDialog(null, "Jumlah = " + jumlah, "Hasil", JOptionPane.INFORMATION_MESSAGE);

Artinya program akan menampilkan jendela pesan informasi berapa hasil penjumlahannya. JOptionPane.INFORMATION_MESSAGE digunakan untuk menentukan jenis ikon atau maksud pesan informasinya, dalam hal ini ikon yang ditampilkan dan maksud dari pesannya adalah sebuah informasi.

OK, semoga dengan penjelasan yang mendetail ini, kamu jadi paham langkah-langkah program dalam mengeksekusi kode yang kamu tuliskan :D

Berikut kode sumber(source code) lengkapnya:

/*
Program penggunaan kelas JOptionPane untuk keperluan:
- Input data
- Pesan informasi
- Konfirmasi masukan

File: CSS.java
Compile: javac CSS.java
Run: CSS.java

(C) 2011 Computer Science Solution (CSS)
*/
import javax.swing.*;

public class CSS {
 public static void main(String[] args) {

  int opsi = JOptionPane.YES_OPTION;
  double jumlah = 0;
  
  while (opsi == JOptionPane.YES_OPTION) {
   jumlah += Double.parseDouble(JOptionPane.showInputDialog(null, "Masukan nilai:"));
   opsi = JOptionPane.showConfirmDialog(null, "Tambahkan data lagi?","Konfirmasi", JOptionPane.YES_NO_OPTION);
  }
  
  JOptionPane.showMessageDialog(null, "Jumlah = " + jumlah, "Hasil", JOptionPane.INFORMATION_MESSAGE);
 }
}


Berikut ini cara mengompilasi(mengubah kode sumber ke bytecode) dan menjalankan programnya dari command prompt(Windows) atau terminal(Linux):

Kompilasi kode sumber:
javac CSS.java

Eksekusi program:
java CSS

Happy programming :D

(C) 2011 Computer Science Solution (CSS)

Senin, 17 Oktober 2011

Program Daftar Bilangan Prima 2 - n

Mendapatkan bilangan prima kalau dihitung secara manual terasa sulit karena harus memeriksa tiap bilangan apakah ada nilai hasil sisa pembagian atau tidak. Namun dengan algoritma sederhana, nilai-nilai bilangan prima mudah di dapatkan dengan sekali klik. Program ini dapat menampilkan semua daftar bilangan prima dari jangkauan nilai 2 sampai 9999 hanya dengan sekali klik dan waktu hitung kurang dari 1 detik :D

Bayangkan bila kita mencarinya secara manual meski menggunakan kalkulator, berapa lama waktu dan tenaga yang dihabiskan untuk mencari semua bilangan prima pada jangkauan nilai tersebut? Tentu membutuhkan waktu lama dan tenaga ekstra. Hmm... itulah salah satu manfaat program komputer, biarlah komputer yang menghitungnya kita tinggal memerintahkannya :D

Algoritmanya
Terdapat dua perulangan for (perulangan bersarang), perulangan pertama berfungsi sebagai nilai titik akhir perhitungan, misal nilainya n = 7, maka perulangan dimulai dari nilai 2 sampai 7. Perulangan kedua berfungsi untuk memeriksa tiap bilangan di dalam range 2 sampai n - 1, misal nilai perulangan pertama n = 7, maka perulangan kedua ini akan melakukan perulangan sebanyak 5 kali (2,3,4,5,6). Nilai di dalam perulangan kedua ini akan dites apakah berupa bilangan genap atau terdapat sisa pembagian. Bila salah satu atau keduanya benar, maka bilangan tersebut bukan bilangan prima.

Bagaimana membuat program JavaScript ini?
Gampang banget, nih caranya :
- Buat file jenis 'html', caranya klik kanan, pilih new terus pilih Text Document
- buka file baru tersebut terus copy-paste kode program berikut, terakhir simpan (Save As) dengan nama file misal daftar-bil-prima.html
- untuk mencobanya, klik ganda file tersebut. Browser akan membuka dan menjalankan program tersebut.

Kode programnya:
  function periksa_bil()
  {
   var n = document.getElementById('n').value;
   var isPrima = true;
   if (n > 9999 || n == '' || n < 2) return;
   
   for (i = 2; i < n; i++){
    isPrima = true;
    for(j = 2; j < i; j++){
     if (i % 2 == 0 || i % j == 0){
      isPrima = false;
      break;
     }    
    }

    if(isPrima) {
     document.write("   "+i+"  ");     
    }
   }
  }

Berikut tampilannya:


(C) 2011 Computer Science Solution (CSS)