Anda di halaman 1dari 12

Praktikum

APLIKASI
PEMROGRAMAN SHELL

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
red
green
yellow
blue
magenta
cyan
white

30
31
32
33
34
35
36
37

40
41
42
43
44
45
46
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 <=$w"
do
let "x=x+1"
let "y=y+1"
echo -n -e "\033[34m masukkan resistor $y : \033[0m"
read a
g=`echo "$g+$a" | bc`;
done
echo
echo -e "\033[34m hasil perhitungan nilai rangkaian yang di
rangkai seri adalah : $g ohm \033[0m"
sleep 1.75
jawab=`zenity --title "" --width 400 --entry --text "
apakah anda ingin menjalankannya lagi(y/t)? : "`
case $jawab 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 "== ttttttttt ==" --width 400 --entry --text "
*--*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
....TERIMAKASIH TELAH MENGGUNAKAN PROGRAM INI....
-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"`
echo $v;;
esac
return 0
}
par(){
load
echo ""
echo -e "
\033[34m
RANGKAIAN PARAREL \033[0m"
echo ""
echo -n -e "\033[1;35m masukkan banyak resistor yang anda hitung :

136

\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 <=$w-1"
do
let "x=x+1"
echo -n -e "\033[34m masukkan nilai resistor ke $x : \033[0m"
read a
rum=`echo "$g*$a" | bc`;
rum2=`echo "$g" | bc`;
rum3=`echo "$rum2+$a" | bc`;
g=`echo "scale=2;$rum/$rum3" | bc`;
done
echo
echo -e "\033[34m Hasil perhitungan nilai rangkaian yang di
rangkai pararel adalah : $g ohm \033[0m"
sleep 1.75
jawab=`zenity --title "" --width 400 --entry --text "
apakah anda ingin menjalankannya lagi(y/t)? : "`
case $jawab 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 "== tttttttt ==" --width 400 --entry --text "
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
....TERIMAKASIH TELAH MENGGUNAKAN PROGRAM INI....
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"`
;;
esac
return 0
}
apik(){
h=`date`
f=`case $(date +%H) in
00|01|02|03|04|05|06|07|08|09)
echo "SELAMAT PAGI"
;;
10|11|12|13|14)
echo
"SELAMAT SIANG"
;;
15|16|17|18)
echo
"SELAMAT SORE"
;;

137

*)
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
<==
PILIHAN ANDA : "`
echo $b
case $b in
1 | seri | Seri | SERI) seri ;;
2 |PARAREL| PARALEL | pararel | paralel | Pararel | Paralel ) par
;;
* )
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 "== tttttttt ==" --width 400 --entry --text "
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
....TERIMAKASIH TELAH MENGGUNAKAN PROGRAM INI....
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"`
echo $v;;
esac;;
esac
}
dor(){
b=`zenity -title "== PILIHAN ANDA ==" -width 400 -entry -text "
*-*-*-*-*-* pilihlah model rangkaianya *-*-*-*-*-*
==>
dirangkai seri pil no 1
<==
==>
dirangkai pararel pil no 2 <==
==>
lainnya selesai
<==
PILIHAN ANDA : "`
echo $b
case $b in
1 | seri | Seri | SERI) seri ;;
2 |PARAREL| PARALEL | pararel | paralel | Pararel | Paralel ) par

138

;;
* )
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 <= 5"
do
angka=`zenity --title "$nama's Game" --entry --text "Enter a
number:"`;
echo $angka;
let a=$a+1;
if [ $angka -eq $rani ]; then
zenity --title "Haha...$name winner" --warning --text
"$nama...!!You Win" --height 200 --width 250
lagi;
else
kalah=`zenity --title "$nama Try again" --warning --text
"$nama...!!You are not lucky" --height 200 --width 300`;
echo $kalah;
fi
done
Zenity --title "Hehe..$name loser" --warning --text
"Sorry...$nama...You lose" --height 200 --width 300 lagi;

139

;;
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 <= 5"
do
angka=`zenity --title "$nama's Game" --entry --text "Enter a
number:"`;
echo $angka;
let a=$a+1;
if [ $angka -eq $rani ]; then
zenity --title "Haha...$nama winner" --warning --text
"$nama...!!You Win" --height 200 --width 250
lagi;
else
kalah=`zenity --title "$nama Try again" --warning --text
"$nama...!!You are not lucky" --height 200 --width 300`;
echo $kalah;
fi
done
}
maen;
zenity
--title
"Hehe..$nama
loser"
--warning
--text
"Sorry...$nama...You lose" --height 200 --width 300
lagi;

4. Program aplikasi perubahan tampilan warna secara acak


#!/bin/bash
back(){
init=40
while true
do
acak=$RANDOM
if [ $acak -le 7 ]; then
let no=$acak+$init
echo $no"m"
break
fi
done
}
hurufi(){
i=`back`
echo -e "\033[$i\033[0;0H
echo -e "\033[$i\033[1;0H
echo -e "\033[$i\033[2;0H
echo -e "\033[$i\033[3;0H
echo -e "\033[$i\033[4;0H
echo -e "\033[$i\033[5;0H
}

\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"

hurufl(){
i=`back`
echo -e "\033[$i\033[0;5H \033[0m"

140

echo
echo
echo
echo
echo
echo
echo
echo
}

-e
-e
-e
-e
-e
-e
-e
-e

"\033[$i\033[1;5H
"\033[$i\033[2;5H
"\033[$i\033[3;5H
"\033[$i\033[4;5H
"\033[$i\033[5;5H
"\033[$i\033[5;6H
"\033[$i\033[5;7H
"\033[$i\033[5;8H

\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"

hurufu(){
i=`back`
echo -e "\033[$i\033[3;10H
echo -e "\033[$i\033[3;13H
echo -e "\033[$i\033[4;10H
echo -e "\033[$i\033[4;13H
echo -e "\033[$i\033[5;10H
echo -e "\033[$i\033[5;11H
echo -e "\033[$i\033[5;12H
echo -e "\033[$i\033[5;13H
}
hurufp(){
i=`back`
echo -e "\033[$i\033[3;15H
echo -e "\033[$i\033[3;16H
echo -e "\033[$i\033[3;17H
echo -e "\033[$i\033[3;18H
echo -e "\033[$i\033[4;15H
echo -e "\033[$i\033[4;18H
echo -e "\033[$i\033[5;15H
echo -e "\033[$i\033[5;16H
echo -e "\033[$i\033[5;17H
echo -e "\033[$i\033[5;18H
echo -e "\033[$i\033[6;15H
echo -e "\033[$i\033[7;15H
}
hurufh(){
i=`back`
echo -e "\033[$i\033[0;20H
echo -e "\033[$i\033[1;20H
echo -e "\033[$i\033[2;20H
echo -e "\033[$i\033[3;20H
echo -e "\033[$i\033[3;21H
echo -e "\033[$i\033[3;22H
echo -e "\033[$i\033[4;20H
echo -e "\033[$i\033[4;22H
echo -e "\033[$i\033[5;20H
echo -e "\033[$i\033[5;22H
}
hurufU(){
i=`back`
echo -e "\033[$i\033[0;26H
echo -e "\033[$i\033[0;29H
echo -e "\033[$i\033[1;26H
echo -e "\033[$i\033[1;29H
echo -e "\033[$i\033[2;26H
echo -e "\033[$i\033[2;29H
echo -e "\033[$i\033[3;26H

\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"

\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"

\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"

\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"

141

echo
echo
echo
echo
echo
echo
echo
}

-e
-e
-e
-e
-e
-e
-e

"\033[$i\033[3;29H
"\033[$i\033[4;26H
"\033[$i\033[4;29H
"\033[$i\033[5;26H
"\033[$i\033[5;27H
"\033[$i\033[5;28H
"\033[$i\033[5;29H

\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\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

Anda mungkin juga menyukai