basic bash programming
-
Upload
mafailmi -
Category
Engineering
-
view
197 -
download
1
Transcript of basic bash programming
Project Report
Tabel Periodik Unsur Bash Programming
By :
MAFATIKHUL ILMI
1203121023
Electronic Engineering Polytechnic Institute of Surabaya
2014
<SOURCE PROGRAMME>
#!/bin/bash
saya=`whoami`
apik(){
pilihan=$(zenity --width="250" --height="250" --list --title="Tabel Periodik
Unsur" --text="
--------------------------------------------------------------------------------
------------------------------------
\t\t\t\t\t SELAMAT DATANG
ANDA SEDANG MENGGUNAKAN PROGRAM TABEL PERIODIK UNSUR
--------------------------------------------------------------------------------
------------------------------------" --column " Choose" cari manual);
if [ $pilihan == "cari" ];
then
cari;
elif [ $pilihan == "manual" ];
then
main;
else
back;
exit 0
fi
}
main(){
zenity --width="300" --height="300" --list --text "Unsur - Unsur Kimia" --
radiolist --column " " --column "Deret Kimia" TRUE "Alkali" FALSE "Alkali Tanah"
FALSE "Lantanida" FALSE "Aktanida" FALSE "Logam Transisi" FALSE "exit">pil
a=$?
dapat=`cat pil`
echo $a
case $a in
0)
case $dapat in
"Alkali")
zenity --width="400" --height="250" --title "Golongan Alkali" --list --
radiolist --column " " --column "macam unsur" TRUE "Li" FALSE "Na"
FALSE "K" >pil2
b=$?
pil_al=`cat pil2`
echo $b
case $b in
0)
case $pil_al in
#Lithium
"Li")
Li
;;
#++Natrium++#
"Na")
Na
;;
#++kalium++#
"K")
Ka
;;
esac
;;
1)
main;
;;
esac
;;
#+++++++++++++++++++++++++++++ GOLONGAN ALKALI TANAH
++++++++++++++++++++++++++++++++++#
"Alkali Tanah")
zenity --width="400" --height="250" --title "Golongan Alkali Tanah" --list
--radiolist --column " " --column "macam unsur" TRUE "Be" FALSE "Mg"
FALSE "Ca" >pil2
b=$?
pil_at=`cat pil2`
echo $b
case $b in
0)
case $pil_at in
#Berillium
"Be")
Be;;
#Magnesium
"Mg")
Mg;;
#Calsium
"Ca")
Ca;;
#===============================================================================
=============
esac
;;
1)
main;
;;
esac
;;
#++++++++++++++++++++++++++++++++++++++++ GOLONGAN LANTANIDA
+++++++++++++++++++++++++++++++++++++++++++#
"Lantanida")
zenity --width="400" --height="250" --title "Golongan Lantanida" --list --
radiolist --column " " --column "macam unsur" TRUE "Ce" FALSE "Pr" FALSE
"Nd" >pil2
b=$?
pil_la=`cat pil2`
echo $b
case $b in
0)
case $pil_la in
#Serium
"Ce")
Ce;;
#Praseodimium
"Pr")
Pr;;
#Neodinium
"Nd")
Nd;;
#===============================================================================
=============
esac
;;
1)
main;
;;
esac
;;
#+++++++++++++++++++++++++++++++++++ Golongan Aktanida
+++++++++++++++++++++++++++++++++++++++++++++++++#
"Aktanida")
zenity --width="400" --height="250" --title "Golongan Aktanida" --list --
radiolist --column " " --column "macam unsur" TRUE "Th" FALSE "Pa" FALSE
"U" >pil2
b=$?
pil_ak=`cat pil2`
echo $b
case $b in
0)
case $pil_ak in
#Thorium
"Th")
Th;;
#Protaktinium
"Pa")
Pa;;
#Uranium
"U")
Ur;;
#===============================================================================
=============
esac
;;
1)
main;
;;
esac
;;
#++++++++++++++++++++++++++++++++++++++++ Logam Transisi
++++++++++++++++++++++++++++++++++++++++++++++++++#
"Logam Transisi")
zenity --width="400" --height="250" --title "Logam Transisi" --list --
radiolist --column " " --column "macam unsur" TRUE "Sc" FALSE "Ti" FALSE
"Zr" >pil2
b=$?
pil_lt=`cat pil2`
echo $b
case $b in
0)
case $pil_lt in
#skandium
"Sc")
Sc;;
#Titanium
"Ti")
Ti;;
#zirkonium
"Zr")
Zr;;
#===============================================================================
=============
esac
;;
1)
main;
;;
esac
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++
esac
;;
1)
exit 0;
;;
esac
back;
} ;
Li(){
zenity --width="400" --height="250" --title "Golongan Alkali" --list --radiolist
--column " " --column "pilihan" TRUE "gambar" FALSE
"penjelasan" >pil3
c=$?
pil_li=`cat pil3`
echo $c
case $c in
0)
case $pil_li in
"gambar")
proses
gbrli=`eog "file:/home/$saya/project/Lithium.jpg"`
echo $gbrli
;;
"penjelasan")
li=/home/$saya/project/lithium.txt
zenity --width="400" --height="250" --title
"penjelasan" --text-info --filename=$li
;;
esac
;;
1)
main;
;;
esac
}
Na(){
zenity --width="400" --height="250" --title "Golongan Alkali" --list --radiolist
--column " " --column "pilihan" TRUE "gambar" FALSE
"penjelasan" >pil3
c=$?
pil_na=`cat pil3`
echo $c
case $c in
0)
case $pil_na in
"gambar")
proses
gbrna=`eog "file:/home/$saya/project/Na.jpg"`
echo $gbrna
;;
"penjelasan")
na=/home/$saya/project/Na.txt
zenity --width="400" --height="250" --title
"penjelasan" --text-info --filename=$na
;;
esac
;;
1)
main;
;;
esac
}
Ka(){
zenity --width="400" --height="250" --title "Golongan Alkali" --list --radiolist
--column " " --column "pilihan" TRUE "gambar" FALSE
"penjelasan" >pil3
c=$?
pil_k=`cat pil3`
echo $c
case $c in
0)
case $pil_k in
"gambar")
proses
gbrk=`eog "file:/home/$saya/project/kalium.JPG"`
echo $gbrk
;;
"penjelasan")
k=/home/$saya/project/k.txt
zenity --width="400" --height="250" --title
"penjelasan" --text-info --filename=$k
;;
esac
;;
1)
main;
;;
esac
}
Be(){
zenity --width="400" --height="250" --title "Golongan Alkali" --list --radiolist
--column " " --column "pilihan" TRUE "gambar" FALSE
"penjelasan" >pil3
c=$?
pil_be=`cat pil3`
echo $c
case $c in
0)
case $pil_be in
"gambar")
proses
gbrbe=`eog
"file:/home/$saya/project/berilium.jpg"`
echo $gbrbe
;;
"penjelasan")
be=/home/$saya/project/be.txt
zenity --width="400" --height="250" --title
"penjelasan" --text-info --filename=$be
;;
esac
;;
1)
main;
;;
esac
}
Mg(){
zenity --width="400" --height="250" --title "Golongan Alkali" --list --radiolist
--column " " --column "pilihan" TRUE "gambar" FALSE
"penjelasan" >pil3
c=$?
pil_mg=`cat pil3`
echo $c
case $c in
0)
case $pil_mg in
"gambar")
proses
gbrmg=`eog
"file:/home/$saya/project/magnesium.jpg"`
echo $gbrmg
;;
"penjelasan")
mg=/home/$saya/project/mg.txt
zenity --width="400" --height="250" --title
"penjelasan" --text-info --filename=$mg
;;
esac ;;
1)
main;
;;
esac
}
Ca(){
zenity --width="400" --height="250" --title "Golongan Alkali" --list --radiolist
--column " " --column "pilihan" TRUE "gambar" FALSE
"penjelasan" >pil3
c=$?
pil_ca=`cat pil3`
echo $c
case $c in
0)
case $pil_ca in
"gambar")
proses
gbrca=`eog
"file:/home/$saya/project/kalsium.jpg"`
echo $gbrca
;;
"penjelasan")
ca=/home/$saya/project/Ca.txt
zenity --width="400" --height="250" --title
"penjelasan" --text-info --filename=$ca
;;
esac
;;
1)
main;
;;
esac
}
Ce(){
zenity --width="400" --height="250" --title "Golongan Lantanida" --list --
radiolist --column " " --column "pilihan" TRUE "gambar"
FALSE "penjelasan" >pil3
c=$?
pil_ce=`cat pil3`
echo $c
case $c in
0)
case $pil_ce in
"gambar")
proses
gbrli=`eog "file:/home/$saya/project/Cerium.jpg"`
echo $gbrli
;;
"penjelasan")
li=/home/$saya/project/serium.txt
zenity --width="400" --height="250" --title
"penjelasan" --text-info --filename=$li
;;
esac
;;
1)
main;
;;
esac
}
Pr(){
zenity --width="400" --height="250" --title "Golongan Lantanida" --list --
radiolist --column " " --column "pilihan" TRUE "gambar"
FALSE "penjelasan" >pil3
c=$?
pil_pr=`cat pil3`
echo $c
case $c in
0)
case $pil_pr in
"gambar")
proses
gbrli=`eog "file:/home/$saya/project/pr.jpg"`
echo $gbrli
;;
"penjelasan")
li=/home/$saya/project/Praseodimium.txt
zenity --width="400" --height="250" --title
"penjelasan" --text-info --filename=$li
;;
esac
;;
1)
main;
;;
esac
}
Nd(){
zenity --width="400" --height="250" --title "Golongan Lantanida" --list --
radiolist --column " " --column "pilihan" TRUE "gambar"
FALSE "penjelasan" >pil3
c=$?
pil_nd=`cat pil3`
echo $c
case $c in
0)
case $pil_nd in
"gambar")
proses
gbrli=`eog
"file:/home/$saya/project/Lithium.jpg"`
echo $gbrli
;;
"penjelasan")
li=/home/$saya/project/lithium.txt
zenity --width="400" --height="250" --title
"penjelasan" --text-info --filename=$li
;;
esac
;;
1)
main;
;;
esac
}
Th(){
zenity --width="400" --height="250" --title "Golongan
Aktanida" --list --radiolist --column " " --column "pilihan" TRUE "gambar"
FALSE "penjelasan" >pil3
c=$?
pil_th=`cat pil3`
echo $c
case $c in
0)
case $pil_th in
"gambar")
proses
gbrli=`eog
"file:/home/$saya/project/Thorium.jpg"`
echo $gbrli
;;
"penjelasan")
li=/home/$saya/project/thorium.txt
zenity --width="400" --height="250" --title
"penjelasan" --text-info --filename=$li
;;
esac
;;
1)
main;
;;
esac
}
Pa(){
zenity --width="400" --height="250" --title "Golongan
Aktanida" --list --radiolist --column " " --column "pilihan" TRUE "gambar"
FALSE "penjelasan" >pil3
c=$?
pil_pa=`cat pil3`
echo $c
case $c in
0)
case $pil_pa in
"gambar")
proses
gbrli=`eog
"file:/home/$saya/project/Protactinium.jpg"`
echo $gbrli
;;
"penjelasan")
li=/home/$saya/project/protaktinium.txt
zenity --width="400" --height="250" --title
"penjelasan" --text-info --filename=$li
;;
esac
;;
1)
main;
;;
esac
}
Ur(){
zenity --width="400" --height="250" --title "Golongan Aktanida" --list --
radiolist --column " " --column "pilihan" TRUE "gambar"
FALSE "penjelasan" >pil3
c=$?
pil_ur=`cat pil3`
echo $c
case $c in
0)
case $pil_ur in
"gambar")
proses
gbrli=`eog
"file:/home/$saya/project/Uranium.jpg"`
echo $gbrli
;;
"penjelasan")
li=/home/$saya/project/uranium.txt
zenity --width="400" --height="250" --title
"penjelasan" --text-info --filename=$li
;;
esac
;;
1)
main;
;;
esac
}
Sc(){
zenity --width="400" --height="250" --title "Logam Transisi" --list --radiolist
--column " " --column "pilihan" TRUE "gambar" FALSE
"penjelasan" >pil3
c=$?
pil_sc=`cat pil3`
echo $c
case $c in
0)
case $pil_sc in
"gambar")
proses
gbrli=`eog
"file:/home/$saya/project/skandium.jpg"`
echo $gbrli
;;
"penjelasan")
li=/home/$saya/project/skandium.txt
zenity --width="400" --height="250" --title
"penjelasan" --text-info --filename=$li
;;
esac
;;
1)
main;
;;
esac
}
Ti(){
zenity --width="400" --height="250" --title "Logam Transisi" --list --radiolist
--column " " --column "pilihan" TRUE "gambar" FALSE
"penjelasan" >pil3
c=$?
pil_ti=`cat pil3`
echo $c
case $c in
0)
case $pil_ti in
"gambar")
proses
gbrli=`eog
"file:/home/$saya/project/titanium.JPG"`
echo $gbrli
;;
"penjelasan")
li=/home/$saya/project/titanium.txt
zenity --width="400" --height="250" --title
"penjelasan" --text-info --filename=$li
;;
esac
;;
1)
main;
;;
esac
}
Zr(){
zenity --width="400" --height="250" --title "Logam Transisi" -
-list --radiolist --column " " --column "pilihan" TRUE "gambar"
FALSE "penjelasan" >pil3
c=$?
pil_zr=`cat pil3`
echo $c
case $c in
0)
case $pil_zr in
"gambar")
proses
gbrli=`eog
"file:/home/$saya/project/zirkonium.jpg"`
echo $gbrli
;;
"penjelasan")
li=/home/$saya/project/zirkonium.txt
zenity --width="400" --height="250" --title
"penjelasan" --text-info --filename=$li
;;
esac
;;
1)
main;
;;
esac
}
back(){
back=`zenity --width="400" --title "pilihan" --text "keluar program (Y/T) :" --
entry`
a=$?
case $a in
0)
case $back in
Ya | ya | Y | y )
zenity --width="400" --info --text "
~~ Thanks For Choosing Our Program ~~"
exit 0
;;
Tidak | tidak | t | T )
main;
;;
*)
zenity --error --text "inputan salah !!!"
back;
esac
;;
1)
main;
;;
esac
}
cari() { z=`zenity --title "Search Engine" --width 400 --entry --text "
*******-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*******
\t\t * Masukkan Nama Unsur yang Anda Cari *
*******-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*******
"`
echo $z
case $z in
lithium | Lithium | LITHIUM | li | Li) Li ;;
natrium | Natrium | NATRIUM | na | Na) Na ;;
kalium | Kalium | KALIUM | ka | Ka) Ka ;;
be | Be) Be;;
mg | Mg) Mg;;
ca | Ca) Ca;;
ce | Ce) Ce;;
pr | Pr) Pr;;
nd | Nd) Nd;;
th | Th) Th;;
pa | Pa) Pa;;
u | U) Ur;;
sc | Sc) Sc;;
ti | Ti) Ti;;
zr | Zr) Zr;;
*)
zenity --error --text "inputan salah !!!"
cari;
esac
}
proses(){
(
echo "10" ; sleep 1
echo "# Process.." ; sleep 1
echo "20" ; sleep 1
echo "# Process..." ; sleep 1
echo "75" ; sleep 1
echo "# Process....." ; sleep 1
echo "100" ; sleep 1
) | zenity --width="400" --progress \
--title="Image Processing" \ --text="Process." \
--percentage=0
}
apik
main;
Output Program :
Gambar 1
Gambar 2
Gambar 3
Gambar 4
Gambar 5
Gambar 6
Gambar 7
Gambar 8
Gambar 9
Gambar 10
Analisa
Pada program yang telah dibuat diatas dapat dilakukan analisa bahwa program dibagi menjadi
beberapa fungsi, berikut penjelsaannya :
1. Apik()
Fungsi apik() adalah fungsi yang pertama kali berjalan ketika program mulai dijalankan. Ketika fungsi
ini berjalan akan didapatkan output seperti yang tampak pada gambar dibawah ini
apik(){
pilihan=$(zenity --width="250" --height="250" --list --title="Tabel
Periodik Unsur" --text="
----------------------------------------------------------------------
----------------------------------------------
\t\t\t\t\t SELAMAT DATANG
ANDA SEDANG MENGGUNAKAN PROGRAM TABEL PERIODIK UNSUR
----------------------------------------------------------------------
----------------------------------------------" --column " Choose"
cari manual);
if [ $pilihan == "cari" ];
then
cari;
elif [ $pilihan == "manual" ];
then
main;
else
back;
exit 0
fi
}
Dari gambar diatas terlihat bahwa terdapat pilihan mode, otomatis (mode pencarian) atau
mode manual. Mode otomatis ditujukan untuk mempermudah user dalam mencari sebuah
unsur yang ingin diketahui dengan meng-inputkan nama unsur pada serach engine yang akan
ditampilkan ketika mode otomatis dipilih. Untuk mode manual difungsikan untuk user yang
belum mengetahui nama unsur yang ingin dicari, sehingga ketika mode manual diaktifkan akan
ditampilkan output seperti berikut :
User dapar melakukan pencarian berdasarkan golongan unsur.
2. Cari()
Fungsi cari () digunakan untuk mengaktifkan mesin pencari (search engine) setelah mode otomatis
dipilih oleh user. Berikut tampilan output dari fungsi cari()
cari() { z=`zenity --title "Search Engine" --width 400 --entry --text "
*******-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*******
\t\t * Masukkan Nama Unsur yang Anda Cari *
*******-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*******
"`
echo $z
case $z in
lithium | Lithium | LITHIUM | li | Li) Li ;;
natrium | Natrium | NATRIUM | na | Na) Na ;;
kalium | Kalium | KALIUM | ka | Ka) Ka ;;
be | Be) Be;;
mg | Mg) Mg;;
ca | Ca) Ca;;
ce | Ce) Ce;;
pr | Pr) Pr;;
nd | Nd) Nd;;
th | Th) Th;;
pa | Pa) Pa;;
u | U) Ur;;
sc | Sc) Sc;;
ti | Ti) Ti;;
zr | Zr) Zr;;
*)
zenity --error --text "inputan salah !!!"
cari;
esac
}
Dalam fungsi ini terdapat dua kondisi dimana kondisi yang pertama adalah kondisi ketika sebuah
program mengenali bentuk input string yang diberikan oleh user sehingga mesin pencari akan
langsung mem-proses informasi yang ingin didapatkan, sebagai contoh adalah akan dicari logam
natrium yang Nampak seperti gambar diatas. Ketika tombol oke ditekan maka akan tampil output
sebagai berikut
Kondisi yang kedua adalah kondisi dimana program tidak mengenali bentuk input yang diberikan
oleh user sehingga akan ditampilkan pesan eror seperti yang terlihat pada gambar dibawah ini
3. Fungsi unsur
Fungsi unsur yang dimaksud adalah kumpulan fungsi – fungsi yang akan memproses dan
memberikan informasi ketika user melakukan akses terhadap fungsi tersebut. Sebagai
contoh adalah fungsi Na().
Na()
Ketika fungsi ini diakses maka akan ditampilkan output sebagai berikut
Na(){
zenity --width="400" --height="250" --title "Golongan Alkali" --list --
radiolist --column " " --column "pilihan" TRUE "gambar"
FALSE "penjelasan" >pil3
c=$?
pil_na=`cat pil3`
echo $c
case $c in
0)
case $pil_na in
"gambar")
proses
gbrna=`eog
"file:/home/$saya/project/Na.jpg"`
echo $gbrna
;;
"penjelasan")
na=/home/$saya/project/Na.txt
zenity --width="400" --height="250" --title
"penjelasan" --text-info --filename=$na
;;
esac
;;
1)
main;
;;
esac
}
Pada gambar diatas terdapat title yang bertuliskan Golongan Alkali. Title ini menunjukkan bahwa
unsur natrium merupakan unsur yang termasuk dalam golongan alkali. Dalam program juga
diberikan dua opsi dimana user dapat mengetahui bentuk dari unsur yang dia cari atau menggali
informs tentang informasi dari unsur yang ingin diketahui dengan memilih penjelasan. berikut
adalah tampilan ketika opsi diatas dipilih :
Opsi gambar
gbrna=`eog "file:/home/$saya/project/Na.jpg"`
echo $gbrna
Opsi penjelasan
na=/home/$saya/project/Na.txt
zenity --width="400" --height="250" --title "penjelasan" --text-info --
filename=$na;;
4. Main()
main(){
zenity --width="300" --height="300" --list --text "Unsur - Unsur Kimia" -
-radiolist --column " " --column "Deret Kimia" TRUE "Alkali" FALSE
"Alkali Tanah" FALSE "Lantanida" FALSE "Aktanida" FALSE "Logam Transisi"
FALSE "exit">pil
a=$?
dapat=`cat pil`
echo $a
case $a in
0)
case $dapat in
"Alkali")
zenity --width="400" --height="250" --title "Golongan Alkali" --
list --radiolist --column " " --column "macam unsur" TRUE "Li" FALSE
"Na" FALSE "K" >pil2
b=$?
pil_al=`cat pil2`
echo $b
case $b in
0)
case $pil_al in
#Lithium
"Li")
Li
;;
#++Natrium++#
"Na")
Na
;;
#++kalium++#
"K")
Ka
;;
esac
;;
1)
main;
;;
esac
;;
#+++++++++++++++++++++++++++++ GOLONGAN ALKALI TANAH
++++++++++++++++++++++++++++++++++#
.
Source code diatas merupakan sampel dari source code main program. Fungsi main
merupakan fungsi inti dimana semua akses dari kesluruhan fungsi yang terdapat dalam
program dilkukan dalam fungsi ini.
5. Proses()
Fungsi ini digunakan untuk menampilkan porses bar ketika gambar akan ditampilkan
Berikut adalah tampilan output dari source code diatas
proses(){
(
echo "10" ; sleep 1
echo "# Process.." ; sleep 1
echo "20" ; sleep 1
echo "# Process..." ; sleep 1
echo "75" ; sleep 1
echo "# Process....." ; sleep 1
echo "100" ; sleep 1
) | zenity --width="400" --progress \
--title="Image Processing" \ --text="Process." \
--percentage=0
6. Back()
Fungsi back digunakan atau aktif ketika user akan keluar dari program. Berikut adalah source
code dari fungsi back
Tampilan source :
Terdapat tiga kondisi pada fungsi ini, kondisi pertama adalah ketika user memilih untuk keluar dari
program, sehingga program akan menampilkan tampilan sebagai berikut
back(){
back=`zenity --width="400" --title "pilihan" --text "keluar program
(Y/T) :" --entry`
a=$?
case $a in
0)
case $back in
Ya | ya | Y | y )
zenity --width="400" --info --text "
~~ Thanks For Choosing Our Program ~~"
exit 0
;;
Tidak | tidak | t | T )
main;
;;
*)
zenity --error --text "inputan salah !!!"
back;
esac
;;
1)
main;
;;
esac
}
Kondisi kedua adalah ketika user memilih untuk tidak keluar dari program sehingga program akan
kembali menuju main function. Sedangkan untuk kondisi yang ketiga adalah ketika user tidak
memberikan inputan sehingga akan muncul peringatan seperti yang tampak pada gamabar dibawah
ini
Kesimpulan
Dari program yang telah dibuat di atas dapat ditarik kesimpulan bahwa program mempunyai fungsi
sebagai table periodic digital dimana user/penggna dapat langsung mendapatkan informasi serta
bentuk gambar dari unsur yang dicari sehingga hal ini mempermudah bafi pengguna untuk
mendapatkan informasi lebih cepat dan tepat