basic bash programming

Post on 17-Jul-2015

197 views 1 download

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