praksh15
DESCRIPTION
bash shellTRANSCRIPT
-
APLIKASI PEMROGRAMAN SHELL
Praktikum
15
A. T U J U A N 1. Membuat program aplikasi pengaturan warna dan fungsi random.
2. Membuat program aplikasi aritmatika, awk, fungsi, user interface dan
dialog.
B. DASAR TEORI
Pembuatan program aplikasi ini berdasarkan pada teori-teori yang sudah
dibahas di bab atau praktikum sebelumnya, seperti: teori tentang expresi dan
test untuk operasi aritmatika, fungsi pada materi praktikum 9, awk juga telah
dijelaskan pada praktikum 11 dan 12, sedangkan pembahasan user
interface/GUI dan dialog pada modul praktikum 14 dan modul praktikum yang
lainnya. Sekedar untuk mengingatkan kembali berikut penulisan sintak dari
perintah/statement yang banyak digunakan dalam pembuatan program
aplikasi:
Sintak: Nama_fungsi () { command; command; }
Function nama_fungsi { command; command; }Function nama_fungsi () { command; command; }
Sintak: awk -f {awk program file} filename
Pernyataan didalam program awk:
Pattern { action 1 action 2 action N }
133
-
Untuk pewarnaan tampilan di layar dapat menggunakan kode ANSI (American
National Standards Institute). Sintaknya sebagai berikut :
\033[colorm Ket : m menandakan setting color
Color Foreground Background
Black 30 40 red 31 41
green 32 42 yellow 33 43 blue 34 44
magenta 35 45 cyan 36 46 white 37 47
C. PROSEDUR 1. Masuk ke sistem operasi Linux.
2. Login sebagai user yang telah ditentukan.
3. Buatlah program seperti pada percobaan dan program latihan.
4. Catatlah hasil dari setiap program pada prosedur no.3 sebagai laporan
sementara.
D. PERCOBAAN 1. Pemrograman shell untuk aplikasi schedule reminder :
#!/bin/bash clear echo ************************************** echo ********* SCHEDULE REMINDER ********** echo ************************************** echo * Date today:`date | awk {print $3,$2,$6} ` | time :`date | awk '{print $4}'` * echo ************************************** echo echo -n Massages = read pesan echo echo -n Time (hh:mm:ss) = read waktu echo echo "**************************************" echo "**** do not exit terminal untill *****" echo "********** the bell rings ************" echo "**************************************" duration=2000 volume=$'\xff'
134
-
mute=$'\x80' function mknote () { for t in `seq 0 $duration` do test $(( $t % $1 )) = 0 && echo -n $volume || echo -n $mute done } e=`mknote 50` g=`mknote 45` a=`mknote 36` b=`mknote 32` c=`mknote 30` cis=`mknote 29` d=`mknote 27` e2=`mknote 24` n=`mknote 32767` a=1 while (a==1) do cek="`date | awk '{print $4}'`"; if [ "$waktu" == "$cek" ] then echo -n "$n$n$n$n$e2$c$c$c$$c$c$c$e2$e2$c$c$c$n$n$n$n$e2$c$c$c$ " > /dev/dsp #nada bisa diubah sesuai keinginan d=`echo "Time : $waktu Massages : $pesan" | zenity --text-info --title "*** SCHEDULE REMINDER ***" --height 50 --width 300`
echo $d exit 0 fi done
2. Perhitungan Nilai Rangkaian Resistor Seri Atau Pararel. #!/bin/bash clear echo -e " \033[32m `date` \033[0m" sleep 1 load(){ clear tput cup 10 15 echo please_wait..!! echo " " tput cup 15 15 echo -n -e "\033[32m loading.\033[0m" sleep 1 echo -n -e "\033[31m .\033[0m" sleep 1 echo -n -e "\033[32m .\033[0m" sleep 1 echo -n -e "\033[31m .\033[0m" echo -n -e "\033[32m .\033[0m" echo -e "\033[31m .\033[0m" clear
135
- } seri(){ load echo "" echo -e " \033[34m RANGKAIAN SERI \033[0m" echo "" echo -n -e "\033[34m masukkan banyak resistor yang anda hitung : \033[0m" read w echo "" echo -e "\033[2;33m resistor dalam satuan ohm\033[0m" echo "" let "x=1" let "y=0" g=0 while let "x
- \033[0m" read w echo "" echo -e "\033[2;33m resistor dalam satuan ohm\033[0m" echo "" echo -n -e "\033[34m masukkan nilai resistor ke 1 : \033[0m" read z g=$z let "x=1" while let "x
- *) echo "SELAMAT MALAM" ;; esac` b=`zenity --title "=== $f ===" --width 400 --entry --text " $h ----------------------------------------------------------------- *******-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-******* * ANDA MEMASUKI PROGRAM UNTUK MENGHITUNG NILAI RESISTOR * *******-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-******* ----------------------------------------------------------------- *-*-*-*-*-* pilihlah model rangkaianya *-*-*-*-*-* ==> dirangkai seri pil no 1 dirangkai pararel pil no 2 lainnya selesai dirangkai seri pil no 1 dirangkai pararel pil no 2 lainnya selesai
-
;; * ) ab=`zenity -title " ingat hanya no 1&2" -width 400 -entry- text " apakah anda ingin menjalankannya lagi(y/t)? : "` case $ab in y | Y | ya | Ya | YA ) clear echo "loading. ." sleep 1 clear dor ;; t | T | tidak | TIDAK | *) echo clear tput cup 5 10 sleep 1 v=`zenity -title "== ttttttttttt ==" -width 400 -entry- text " *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* ....TERIMAKASIH TELAH MENGGUNAKAN PROGRAM INI.... *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"` echo $v;; esac;; esac } apik
3. Program aplikasi game tebak angka. #!/bin/bash nama=`zenity title WELCOME TO THE NUMBERS GAME width 400 entry text RULES OF GAME: 1. Number between 1 to 10 2. Game will do until 5 times Enter your name:` echo $nama lagi () { jwb=`zenity --title "$nama's Game" --entry --text "Play again:y/t?" --height 200` case $jwb in y|Y|ya|YA|Ya) rand=$[($RANDOM %10) +1] let a=1; while let "$a
- ;; t|T|tidak|Tidak|TIDAK) zenity --title "Bye-bye $nama" --warning --text "Ok..thank you See you..." --height 200 --width 250 exit 0 ;; esac } maen() { rand=$[($RANDOM %10) +1] let a=1; while let "$a
-
echo -e "\033[$i\033[1;5H \033[0m" echo -e "\033[$i\033[2;5H \033[0m" echo -e "\033[$i\033[3;5H \033[0m" echo -e "\033[$i\033[4;5H \033[0m" echo -e "\033[$i\033[5;5H \033[0m" echo -e "\033[$i\033[5;6H \033[0m" echo -e "\033[$i\033[5;7H \033[0m" echo -e "\033[$i\033[5;8H \033[0m" } hurufu(){ i=`back` echo -e "\033[$i\033[3;10H \033[0m" echo -e "\033[$i\033[3;13H \033[0m" echo -e "\033[$i\033[4;10H \033[0m" echo -e "\033[$i\033[4;13H \033[0m" echo -e "\033[$i\033[5;10H \033[0m" echo -e "\033[$i\033[5;11H \033[0m" echo -e "\033[$i\033[5;12H \033[0m" echo -e "\033[$i\033[5;13H \033[0m" } hurufp(){ i=`back` echo -e "\033[$i\033[3;15H \033[0m" echo -e "\033[$i\033[3;16H \033[0m" echo -e "\033[$i\033[3;17H \033[0m" echo -e "\033[$i\033[3;18H \033[0m" echo -e "\033[$i\033[4;15H \033[0m" echo -e "\033[$i\033[4;18H \033[0m" echo -e "\033[$i\033[5;15H \033[0m" echo -e "\033[$i\033[5;16H \033[0m" echo -e "\033[$i\033[5;17H \033[0m" echo -e "\033[$i\033[5;18H \033[0m" echo -e "\033[$i\033[6;15H \033[0m" echo -e "\033[$i\033[7;15H \033[0m" } hurufh(){ i=`back` echo -e "\033[$i\033[0;20H \033[0m" echo -e "\033[$i\033[1;20H \033[0m" echo -e "\033[$i\033[2;20H \033[0m" echo -e "\033[$i\033[3;20H \033[0m" echo -e "\033[$i\033[3;21H \033[0m" echo -e "\033[$i\033[3;22H \033[0m" echo -e "\033[$i\033[4;20H \033[0m" echo -e "\033[$i\033[4;22H \033[0m" echo -e "\033[$i\033[5;20H \033[0m" echo -e "\033[$i\033[5;22H \033[0m" } hurufU(){ i=`back` echo -e "\033[$i\033[0;26H \033[0m" echo -e "\033[$i\033[0;29H \033[0m" echo -e "\033[$i\033[1;26H \033[0m" echo -e "\033[$i\033[1;29H \033[0m" echo -e "\033[$i\033[2;26H \033[0m" echo -e "\033[$i\033[2;29H \033[0m" echo -e "\033[$i\033[3;26H \033[0m"
141
-
echo -e "\033[$i\033[3;29H \033[0m" echo -e "\033[$i\033[4;26H \033[0m" echo -e "\033[$i\033[4;29H \033[0m" echo -e "\033[$i\033[5;26H \033[0m" echo -e "\033[$i\033[5;27H \033[0m" echo -e "\033[$i\033[5;28H \033[0m" echo -e "\033[$i\033[5;29H \033[0m" } clear while true do hurufi hurufl hurufu hurufp hurufh hurufU sleep 1s done
5. Membuat rekapitulasi tranksaksi #!/bin/bash while true do clear echo -e "\033[0;36mSelamat Datang\033[0m di \033[44;1;34mgaTel (Warga Telkom) \033[0m \033[0;34mRestaurant\033[0m" echo -e "\033[2;13H-------------" echo -e "\033[1;35m\033[3;13HMENU HARI INI\033[0m" echo -e "\033[4;13H-------------" echo -e "\033[0;37m\033[5;4HMakanan\033[0m \033[1;30m\033[5;29HMinuman\033[0m" echo -e "1. Bakso \t\t 4. Es teh" echo -e "2. Gado-gado \t\t 5. Es Jeruk" echo -e "3. Rujak \t\t 6. Es Degan" echo
while true do echo -n "Masukkan pilihan makanan anda (atau 't' untuk tidak memesan): " read pil case $pil in 1) echo -n "Banyak Porsi = " read jumma let bayarma=jumma*5000; pilma="Bakso $jumma piring" break ;; 2) echo -n "Banyak Porsi = " read jumma let bayarma=jumma*4000; pilma="Gado-gado $jumma piring" break ;; 3) echo -n "Banyak Porsi = " read jumma
142
-
let bayarma=jumma*6000; pilma="Rujak $jumma piring" break ;; t) bayarma=0 pilma="tidak memesan makanan" break ;; *) echo "Pilihan 1-3 atau 't'" echo ;; esac done
echo
while true do echo -n "Masukkan pilihan minuman anda (atau 't' untuk tidak memesan): " read pil case $pil in 4) echo -n "Banyak Gelas = " read jummi let bayarmi=jummi*1500 pilmi="Es teh $jummi gelas" break ;; 5) echo -n "Banyak Gelas = " read jummi let bayarmi=jummi*2500 pilmi="Es jeruk $jummi gelas" break ;; 6) echo -n "Banyak Gelas = " read jummi let bayarmi=jummi*3500 pilmi="Es degan $jummi gelas break ;; t) bayarmi=0 pilmi="tidak memesan minuman" break ;; *) echo "Pilihan 4-6 atau 't'" echo ;; esac done
let total=$bayarma+$bayarmi echo echo -e "\033[0;31mBiaya yang harus anda bayar :\033[0m \033[4;1;31m$total\033[0m"
143
-
echo echo "Pada `date` pelanggan memesan : $pilma dan $pilmi dengan total Rp.$total" | cat >> rekapQ.txt echo -n "Apakah mau pesan lagi ? (Y/y/T/t) : " read jawab
case $jawab in Y | y ) echo "" ;; T | t ) exit 0 ;; esac echo "*************************************" echo done
E. Latihan
1. Dengan menggunakan parameter posisi buatlah program aplikasi kamus
Indonesia ke jawa atau sebaliknya, sebagai bantuan buatlah file database
yang berisi terjemahan setiap kata. 2. Buatlah program aplikasi database sederhana tentang biodata pasien baru
maupun lama pada sebuah rumah sakit yang berisi data sebagai berikut :
- ID, Nama, Umur, Alamat, Keadaan dan Diagnosa pasien.
Gunakan user interface dan dialog untuk Entry data pasien, menyimpan
data, dan tampilan daftar pasien.
144