Saturday, September 26, 2015

Bilangan Prima & Bash Scripting ?



Mencari bilangan prima dengan menggunakan program merupakan hal yang sering dijumpai di dunia pemrograman. Baik itu menggunakan C, C++, java, Pascal, dll. Modifikasinyapun banyak dan sering di kombinasikan dengan fungsi-fungsi lain. Bagaimana jika kita membuat sebuah program bilangan prima menggunakan bash script?

Nah sebelum membuat script, kita perlu menyusun pemikiran kita terlebih dahulu, "Apa yang disebut bilangan prima?".

1.Bilangan prima adalah bilangan asli yang lebih dari satu
2.Bilangan prima hanya habis dibagi oleh angka satu dan dirinya sendiri.

Mungkin ada pendapat lain, tapi saya mencoba mengaturnya menjadi lebih sederhana dan mendapatkan kesimpulan tersebut. Dari dua poin tersebut, dapat kita buat sebuah penanda agar kita mengetahui apakah sebuah bilangan tersebut habis dibagi lebih dari 2 angka, dan jika hanya habis dibagi oleh 2 angka maka kita dapat menampilkannya, sedangkan jika lebih dari 2 tidak perlu ditampilkan karena bukan bilangan prima.

Berikutnya kita buat script. Nah bisa dibilang kita perlu menyesuaikan atau beradaptasi dengan bash script. Karena penulisannya cukup berbeda dengan C/C++,Pascal, dll.
Langsung saja ke contoh:

"Bagaimana cara menampilkan bilangan prima yang kurang dari n?" 



Screenshot di atas menunjukkan script yang saya gunakan untuk memecahkan masalah tersebut. Dalam permasalahan pembuatan script di atas saya menggunakan linux mint mate(OS), terminal, dan GNU nano.

Dimulai dari langkah pembuatan script, langkahnya adalah sebagai berikut:

1. Pastikan Linux telah terinstall
2. Buka terminal
3. Ketikkan nano [nama_file].sh, untuk membuat file baru di direktori
4. Nah, tampil layar diatas, tapi tentunya belum ada isinya....

Berikutnya saya akan menjelaskan apa saja yang ada dalam script tersebut....

1. #!/bin/bash
Merupakan elemen yang memang diharuskan ada di setiap bash script.

2. input1=$1
Mengambil inputan dari ketikan pertama dan dimasukkan ke variabel input1 (Berkaitan dengan eksekusi dari script)

3. for i in for i in `seq 1 $input1`; do done
Memiliki pengertian, untuk isi i dari 1 hingga input1. Sama seperti penulisan for(i=1;i<input1;i++) {} di bahasa C namun tentunya dengan perubahan penulisan, seperti adanya "seq" dan akhiran ; (titik koma) dalam penulisan script tersebut. Perulangan For di bash script juga tidak menggunakan {} namun menggunakan do dan done.

4.mono=0
Mengisi nilai dari variabel mono sama dengan 0. Dalam hal ini kita tidak perlu menuliskan tipe data seperti integer, char, dll. Mengisi variabel tersebut juga tidak perlu diakhiri ; (titik koma).

5. if [ $(($i%$j)) -eq 0 ]; then fi
Jika i mod j adalah 0 maka lakukan ... . Di script tersebut ini adalah kondisi dimana bilangan tersebut yaitu i habis dibagi bilangan j atau tidak. Jika habis maka lakukan, if dibuka dengan "then" dan diakhiri dengan "fi". Jadi yang merupakan bagian dari kondisi if adalah yang diapit oleh then dan fi. Jika dituliskan dalam bahasa C kurang lebih seperti berikut : if(i%j==0) {}.

6. let "mono=$mono+1"
Mengisi variabel mono dengan nilai mono di tambah dengan 1. "$" digunakan untuk mengambil nilai dari variabel mono sebelumnya.

7. echo $i
Menampilkan isi variabel i ke layar, kurang lebih fungsi dari echo sama dengan printf di bahasa C atau writeln di Pascal

Selesai dan kemudian simpan. Jika menggunakan nano maka menyimpannya menggunakan Ctrl+x dan y. Untuk eksekusi file tersebut terlebih dahulu ubah permission dari file tersebut dengan cara mengetikkan chmod 777 nama_file.sh pada terminal.Lalu ketik "./[nama_file].sh n(angka batas)".

Pada contoh saya menggunakan 15 sebagai n, dan didapatkan:


Nah, script selesai.....

Jika kita perhatikan kita menginput hanya angka 15, bagaimana jika 15 16 20 90 100 ?. Apakah tetap 15 yang dipakai untuk mengisi input1???

Jawabanya adalah "YA". Karena kita mengisinya dengan $1 yang mana angka satu pada $1 menyatakan inputan pertama. Jadi kita dapat menggantinya dengan input ke $2,$3,$4,$5 dst... .

Contoh Script:

Beberapa Modifikasi dapat kita lakukan juga pada script sebelumnya, jika dilihat ada tambahan input2 dan "input=$input1+$input2" dan pergantian pada for yang pertama terlihat di $input. Script yang telah dimodifikasi ini dimaksudkan agar  n berganti dengan inputan pertama ditambah dengan inputan kelima yang mana variabel input2 diisi oleh input yang ke lima (dapat kita lihat pada input2=$5). Hal ini bisa kita buat sesuai script diatas. Menghasilkan keluaran berupa bilangan prima yang kurang dari penjumlah input pertama dan kelima.
Hasil:

Sekian sekilas tentang bilangan prima & bash scripting, semoga dapat membantu......