Entri Populer

Jumat, 14 Oktober 2011

Belajar Zenity Shell Script

Praktikum Modul 1 Sistem Operasi
Soal Shift: 
  1. Buatlah shell script yang dapat mengkonversi suhu-suhu, dengan asumsi sebagai berikut: Celcius ke reamur dan sebaliknya, celcius ke Fahrenheit dan sebaliknya, celcius ke Kelvin dan sebaiknya, reamur ke Fahrenheit dan sebaliknya, reamur ke Kelvin dan sebaliknya *lengkap dengan error handling*
  2. Buatlah program Calculator++ yang minimal dapat melakukan operasi tambah,kurang,kali,bagi,dengan menggunakan shell scripting (*scientific lebih baik,*zenity nilai tambah)
  3. Buatlah program yang bisa mengganti extensi suatu file dalam suatu directory menjadi extensi file yang diinginkan user
jawaban :
  1. function convert()
    {
               operator=`zenity --title "Konversi Suhu" --text "Selamat Datang Kawan" --list --     radiolist --column "Pilihan" --column "Temperature" True Celcius True           Fahrenheit True Reamur True Kelvin`

               #operasi untuk celcius
               if   [  $operator  = "Celcius" ]
               then
               value=$(zenity --entry --text "Masukkan suhu anda (celcius):")
               fahrenheit=$(echo "scale=2; $value * 9 / 5 + 32" |bc)
               reamur=$(echo "scale=2; $value * 4 / 5" |bc)
               kelvin=$(echo "scale=2; $value + 273.15" |bc)

               zenity --list \
              --title="Hasil anda" \
               --column="Temperature" --column="suhu" \
              --print-column= fahrenheit "$fahrenheit" reamur "$reamur" kelvin "$kelvin"

               #operasi untuk fahrenheit
               elif [  $operator  = "Fahrenheit" ]
               then
               value=$(zenity --entry --text "Masukkan suhu anda (Fahrenheit):")
               celcius=$(echo "scale=2; ($value-32) * 5 / 9" |bc)
               reamur=$(echo "scale=2; ($value-32)/2.25" |bc)
               kelvin=$(echo "scale=2; ($value + 459.67)/1.8" |bc)

               zenity --list \
              --title="Hasil anda" \
               --column="Temperature" --column="suhu" \
              --print-column= celcius "$celcius" reamur "$reamur" kelvin "$kelvin"

               #operasi untuk reamur
               elif [  $operator  = "Reamur" ]
               then
               value=$(zenity --entry --text "Masukkan suhu anda (Reamur):")
               celcius=$(echo "scale=2; $value / 0.8" |bc)
               fahrenheit=$(echo "scale=2; $value * 2.25 +32" |bc)
               kelvin=$(echo "scale=2; $value / 0.8 + 273.15" |bc)

               zenity --list \
              --title="Hasil anda" \
               --column="Temperature" --column="suhu" \
              --print-column= celcius "$celcius" reamur "$fahrenheit" kelvin "$kelvin"

               #operasi untuk kelvin
               elif [  $operator  = "Kelvin" ]
               then
               value=$(zenity --entry --text "Masukkan suhu anda (Kelvin):")
               celcius=$(echo "scale=2; $value - 273.15" |bc)
               fahrenheit=$(echo "scale=2; $value * 1.8 - 459.67" |bc)
               reamur=$(echo "scale=2; ($value-273.15)* 4/5 " |bc)

               zenity --list \
              --title="Hasil anda" \
               --column="Temperature" --column="suhu" \
              --print-column= celcius "$celcius" reamur "$fahrenheit" kelvin "$reamur"
               else
               zenity --info --text "Error"
               fi
    }

function kalkulator()
{
           zenity --info --text "hello, ini kalkulator sederhana";
           a=$(zenity --entry --text "pick a number");
           
   #memilih operator

     op=`zenity --title "Kalkulator" --text "Silahkan Pilih Operator" --list --radiolist --     column "Pilihan" --column "Answer" False "+" False "-" False "/" False "*"`


           b=$(zenity --entry --text "pick a number");

           #loop sampai var a='='
           until [ $a == '=' ]
           do
           case $op in
           "+")let hasil=$a+$b;;
           "/")let hasil=$a/$b;;
           "-")let hasil=$a-$b;;
           "*")let hasil=$a*$b;;
           esac

           hasil=$(zenity --info --text hasil=$hasil);
           a=$(zenity --entry --text "pick a number");
 op=`zenity --title "Kalkulator" --text "Silahkan Pilih Operator" --list --radiolist --column "Pilihan" --column "Answer" False "+" False "-" False "/" False "*"`

           b=$(zenity --entry --text "pick a number");
           done
}

3. function rubahext()
{
           input=$(zenity --entry --text "Masukkan nama file:")
           if [ -f $input ]
           then
           eks=$(zenity --entry --text "Masukkan jenis ekstensi file:")

           mv ${input} ${input}.$eks
           zenity --info --text=$input"."$eks"Sukses"

           else
           zenity --error --text="Anda salah memasukkan nama file"
           fi
}

disini kami membuat 3 soal diatas menjadi satu tampilan sehingga ditambahkan fungsi main :

#main
ans=`zenity --title "Pilih Program" --text "Selamat Datang" --list --radiolist --column "Pilihan" --column "Program" True Kalkulator True KonversiSuhu True RubahEkstensi`

case $ans in
"Kalkulator")kalkulator;;
"KonversiSuhu")convert;;
"RubahEkstensi")rubahext;;
esac

Tampilannya seperti berikut:



 kemudian pilih kalkulator:




 klik ok dan muncullah kata pembukaan dari kalkulator sederhana




klik ok dan tampillah kotak dimana kita diminta untuk memasukkan angka pertama yang ingin kita proses 




klik ok dan pilihlah operasi mana yang ingin dikerjakan



Pada contoh diatas kita mencoba operasi penjumlahan kemudian klik ok



Setelah itu muncullah kotak dimana kita diminta memasukkan angka kedua yang ingin diproses

Kemudian muncullah hasil dari operasi diatas .


2 komentar:

  1. Aneh. Malah sesuatu yang sangat besar seperti Zenity ini sepi pengunjung dan sepi komentator. Justru saya yakin sekali Zenity ini (atau Kdialog dan semacamnya) adalah tonggak masa depan Linux desktop. Inilah Autoit untuk Linux! Dan ini akan sangat mengurangi kerumitan. Anda bisa mencari pahala dengan memudahkan kerja orang lain. Salah satunya dengan Zenity ini.

    Akang, teruslah menulis. Akang sendiri mungkin tidak tahu betapa besar manfaat Zenity ini sesungguhnya. Saya sangat senang. Saya simpan tulisan ini. Terima kasih.

    BalasHapus
  2. keren , aku lihat buat referensi tugas. makasih

    BalasHapus