Berikut ini adalah suatu sajian test-case yang akan kita coba selesaikan dengan menggunakan pemrograman bash. Saya asumsikan kalian telah belajar lebih banyak dari post sebelumnya tentang dasar pemrograman bash. So, Check it Out!
*************
Prima with Bash
Cayza ingin mengetahui bilangan apa saja yang merupakan bilangan prima. Bantulah Cayza untuk mengetahui bilangan-bilangan prima yang ada di bawah bilangan tertentu.
Semisal Cayza menginputkan angka 50, maka program akan memberikan semua bilangan prima yang ada di bawah 50 dalam list dan dimasukkan dalam file berjudul prima.txt.
Selain itu Cayza ingin program bisa otomatis mengompress file tersebut dalam format .tar.gz dan membuat file baru berisi catatan (log) waktu pemakaian program tersebut. Jadi setiap kali Cayza menjalankan program, waktunya tercatat dalam catatan log tersebut.
---------------------
Logical Solution
Bilangan prima didapatkan dengan cara bilangan yang diinginkan dibagi satu-persatu dengan semua bilangan dibawahnya (kecuali 1). Apabila tidak ada hasil pembagian yang bulat, maka bilangan tersebut adalah bilangan prima.
Katakanlah bilangan yang diinginkan adalah x, maka pseudoce-nya:
===============================
flag:=0
for i:= 2 to x
if (x % i == 0) then flag := flag +1
if (flag := 0) then x is prima
else x is non-prima
===============================
Variabel flag sebagai penanda, apabila ada pembagian yang bernilai bulat maka nilai flag akan bertambah. Jadi, apabila nilai flag tidak pernah bertambah (masih 0) berarti tidak ada pembagian yang bulat, berarti bilangan tersebut prima. Mudah bukan?
Karena nilai x dicari statusnya satu persatu mulai dari 2 sampai bilangan yang diinput oleh Cayza (0 dan 1 sudah jelas bukan bilangan prima), maka untuk x pun harus dibuat dalam mode looping. Jadi
pseudocode-nya:
===============================
for x:=2 to input
for i:= 2 to x
if (x % i == 0) then flag := flag +1
if (flag := 0) then x is prima
else x is non-prima
===============================
Apabila kita code dengan bash :
===============================
#!/bin/bash
read input;
x=2
while [ $x -le $input ];
do
flag=0
i=2
while [ $i -lt $x ];
do
if [ $(( x%i )) -eq 0 ];
then
let "flag= $flag +1"
fi
let "i=$i+1"
done
if [ $flag -eq 0 ];
then
echo $x >> prima.txt
fi
let "x=$x+1"
done
===============================
Selanjutnya meng-konversi ke dalam bentuk .tar.gz. Dalam hal ini bisa menggunakan fungsi tar -zcvf. Berikut ini adalah penjelasan mengenai -zcvf
-> z artinya mengarsip dengan menggunakan gzip
-> c artinya mengompres (bisa x kalau mau mengekstrak)
-> v artinya view, prosesnya tertampil di terminal (opsional, boleh dihilangkan)
-> f artinya nama file
Apabila kita code dengan bash :
===============================
tar -zcvf arsip_prima.tar.gz prima.txt
echo "File Telah Dikompres pada tanggal $(date '+%d_%m_%Y') pukul $(date '+%H:%M:%S')" >> log_prima.txt
=================================
Dengan demikian case kali ini terselesaikan dengan baik. Semoga posting ini bermanfaat untuk semua. Posting berikutnya akan berisi hal yang tidak ada hubungannya dengan pemrograman bash
terima kasih kak sangat membantu :)
BalasHapus