Top Banner
NAMA : BIMANTARA KSATRIA PUTRA KELAS : 2 D3 TELEKOMUNIKASI B NRP : 7211030052 15 APLIKASI PEMROGRAMAN SHELL I. Tujuan 1. Membuat program aplikasi pengaturan warna dan fungsi random. 2. Membuat program aplikasi aritmatika, awk, fungsi, user interface dan dialog. II. Percobaan 1. Program 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 ************"
29

15 Aplikasi Pemrograman Shell

Dec 14, 2014

Download

Documents

Teddy Ernanto

app
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 15 Aplikasi Pemrograman Shell

NAMA : BIMANTARA KSATRIA PUTRAKELAS : 2 D3 TELEKOMUNIKASI BNRP : 7211030052

15 APLIKASI PEMROGRAMAN SHELL

I. Tujuan

1. Membuat program aplikasi pengaturan warna dan fungsi random.

2. Membuat program aplikasi aritmatika, awk, fungsi, user interface dan dialog.

II. Percobaan

1. Program shell untuk aplikasi schedule reminder :

#!/bin/bashclearecho "**************************************"echo "********* SCHEDULE REMINDER **********"echo "**************************************"echo "* Date today:`date | awk '{print $3,$2,$6}' ` | time:`date | awk '{print $4}'` *"echo "**************************************"echoecho -n " Massages = "read pesanechoecho -n " Time (hh:mm:ss) = "read waktuechoecho "**************************************"echo "**** do not exit terminal untill *****"echo "********** the bell rings ************"echo "**************************************"duration=2000volume=$'\xff'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`

Page 2: 15 Aplikasi Pemrograman Shell

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=1while (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 fidoneubuntu@ubuntu:~# bash coba.sh*********************************************** SCHEDULE REMINDER ************************************************* Date today:30 Dec 2012 | time:11:44:24 ***************************************

Massages = kerjakan projek shell

Time (hh:mm:ss) = 11:44:58

****************************************** do not exit terminal untill *************** the bell rings **************************************************

Page 3: 15 Aplikasi Pemrograman Shell

2. Penghitung nilai rangkaian resistor seri atau parallel

#!/bin/bashclearecho -e "\033[32m `date` \033[0m"sleep 1load(){ 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}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"

Page 4: 15 Aplikasi Pemrograman Shell

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 dirangkai 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;; esacreturn 0}par(){ load echo "" echo -e "\033[34mRANGKAIAN PARAREL \033[0m" echo "" echo -n -e "\033[1;35m masukkan banyak resistor yang anda hitung :\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"

Page 5: 15 Aplikasi Pemrograman Shell

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 dirangkai 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";; *) echo "SELAMAT MALAM";; esac`

Page 6: 15 Aplikasi Pemrograman Shell

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 <==

Page 7: 15 Aplikasi Pemrograman Shell

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 "== ttttttttttt ==" -width 400 -entry- text "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*....TERIMAKASIH TELAH MENGGUNAKAN PROGRAM INI....*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"` echo $v;; esac;; esac}apik

bimac@bimacx-pc:~$ bash prog2.sh

Mon Dec 31 18:14:03 WIT 20121 please_wait..!! loading. . . . . .

RANGKAIAN SERI

masukkan banyak resistor yang anda hitung :3

resistor dalam satuan ohm

masukkan resistor 1 : 1000

Page 8: 15 Aplikasi Pemrograman Shell

masukkan resistor 2 : 2200 masukkan resistor 3 : 4000

hasil perhitungan nilai rangkaian yang dirangkai seri adalah : 7200 ohm

3. Program aplikasi game tebak angka

#!/bin/bashnama=`zenity --title "WELCOME TO THE NUMBER'S GAME" --width 400 --entry \--text "RULES OF GAME:1. Number between 1 to 102. Game will do until 5 timesEnter your name:"`echo $namalagi () { jwb=`zenity --title "$nama's Game" --entry --text "Playagain: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; ;; t|T|tidak|Tidak|TIDAK) zenity --title "Bye-bye $nama" --warning --text "Ok..thank you See you..." --height 200 --width 250 exit 0 ;; esac

Page 9: 15 Aplikasi Pemrograman Shell

}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 $rand ]; 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 300lagi;

bimac@bimacx-pc:~$ bash prog3.sh

Awal program

Jika tebakan salah sampai 5 kali opsi untuk keluar

Page 10: 15 Aplikasi Pemrograman Shell

Jika memilih opsi keluar

4. Program aplikasi perubahan tampilan warna secara acak

#!/bin/bashback(){init=40while truedoacak=$RANDOMif [ $acak -le 7 ]; thenlet no=$acak+$initecho $no"m"breakfidone}hurufi(){i=`back`

Page 11: 15 Aplikasi Pemrograman Shell

echo -e "\033[$i\033[0;0H \033[0m"echo -e "\033[$i\033[1;0H \033[0m"echo -e "\033[$i\033[2;0H \033[0m"echo -e "\033[$i\033[3;0H \033[0m"echo -e "\033[$i\033[4;0H \033[0m"echo -e "\033[$i\033[5;0H \033[0m"}hurufl(){i=`back`echo -e "\033[$i\033[0;5H \033[0m"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(){

Page 12: 15 Aplikasi Pemrograman Shell

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"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"}clearwhile truedo hurufi hurufl hurufu hurufp hurufh hurufU sleep 1sdone

Page 13: 15 Aplikasi Pemrograman Shell

5. Membuat rekapitulasi transaksi

#!/bin/bashwhile truedo 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;

Page 14: 15 Aplikasi Pemrograman Shell

pilma="Gado-gado $jumma piring" break;; 3) echo -n "Banyak Porsi = " read jumma 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;; *)

Page 15: 15 Aplikasi Pemrograman Shell

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" 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;; esacecho "*************************************"echodone

bimac@bimacx-pc:~$ bash prog5.shSelamat Datang di gaTel (Warga Telkom) Restaurant ------------- MENU HARI INI ------------- Makanan Minuman1. Bakso 4. Es teh2. Gado-gado 5. Es Jeruk3. Rujak 6. Es Degan

Masukkan pilihan makanan anda (atau 't' untuk tidak memesan): 1Banyak Porsi = 10

Masukkan pilihan minuman anda (atau 't' untuk tidak memesan): 6Banyak Gelas = 10

Biaya yang harus anda bayar : 85000

Apakah mau pesan lagi ? (Y/y/T/t) : tbimac@bimacx-pc:~$

Page 16: 15 Aplikasi Pemrograman Shell

LATIHAN1. Dengan menggunakan parameter posisi buatlah program aplikasi kamus Indonesia

ke jawa atau sebaliknya. Sebagai bantuan buatlah file database yang berisi

terjemahan setiap kata.

Program :

database.txtsaya kulokamu sampeyanpergi lungotidur tilemmakan dhaharminum ngombeberangkat budhal

#!/bin/bashproc=`awk 'BEGIN{i=0}{ printf "indo["i"]="$1" ; jowo["i"]="$2" ;"; i+=1;}' < "database.txt"`;eval "$proc";

kata=$(zenity --entry --title "Kamus indonesia > jawa" \--text "Masukan kata indonesia : ");

e=1;for i in $(seq 0 $((${#indo[@]} - 1))); do if [ "$kata" == "${indo[$i]}" ]; then e=0; tmp=$i; fidone

echo $tmp;

if [ $e -eq 0 ]; then zenity --info --title "Kata ditemukan" --text "$kata = ${jowo[$tmp]}";else zenity --error --text "Kata $kata tidak ditemukan";fi

Page 17: 15 Aplikasi Pemrograman Shell

JIka kata yang dimasukkan tersedia dalam database

Jika kata yang dimasukkan tidak tersedia dalam database

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 diagnose pasien.

- Gunakan user interface dan dialog untuk entry data pasien, menyimpan data,

dan tampilan daftar pasien.

Program :

file data.txt1:Bimantara:18:Surabaya:Sehat:Wal'afiat2:Teddy:20:Surabaya:Parah:Sariawan3:Roni:21:Semarang:Kritis:Jantung

#!/bin/bashset_id(){ id=`awk 'BEGIN{i=1} { printf "ids="i";"; i+=1; }' < "database.txt"`;

Page 18: 15 Aplikasi Pemrograman Shell

eval "$id";}daftar(){ data=`awk 'BEGIN{FS=":";i=0} { printf "d["i"]="$1" ;d["i+1"]=\""$2"\" ;d["i+2"]="$3"; d["i+3"]=\""$4"\"; d["i+4"]=\""$5"\"; d["i+5"]=\""$6"\";"; i+=6; }' < "data.txt"`; eval "$data"; zenity --list --width 600 --height 500 --title "Daftar Pasien" --text "Daftar Pasien" \ --column "id" --column "nama" --column "umur" --column "alamat" \ --column "keadaan" --column "diagnosa" "${d[@]}"; main;}tambah(){ nama=$(zenity --entry --text "Masukan nama :"); umur=$(zenity --entry --text "Masukan umur :"); almt=$(zenity --entry --text "Masukan alamat :"); kadn=$(zenity --entry --text "Masukan keadaan :"); diag=$(zenity --entry --text "Masukan diagnosa :"); set_id; echo "$(($ids+1)):$nama:$umur:$almt:$kadn:$diag" >> "data.txt"; daftar;}main(){ pil=$(zenity --entry --cancel-label "exit" --title "Arsip Pasien" --text \"pilihan :1. Daftar Pasien2. Entry Pasien"); if [ $? -eq 1 ]; then exit; fi

case $pil in 1) daftar;; 2) tambah;; *) zenity --error --text "input salah"; main;; esac;}main;

Page 19: 15 Aplikasi Pemrograman Shell

Jika input 1 untuk menampilkan daftar pasien

Jika dipilih 2 untuk menginputkan dat apasien baru

Page 20: 15 Aplikasi Pemrograman Shell

ANALISA

Page 21: 15 Aplikasi Pemrograman Shell

Percobaan kali ini adalah mengenai aplikasi pemrograman shell, dimana terdapat

beberapa program dengan fungsi tertentu yang dibuat dengan menggunakan bahasa

pemrograman shell.

Percobaan pertama adalah pembuatan schedule reminder. Dalam program ini pesan

untuk pengingat diinputkan melalui keyboard dengan perintah read dan disimpan dalam

variable pesan. Kemudian diinputkan waktu dimana bell akan berbunyi dan disimpan

dalam variable waktu. Proses dalam program ini adalah menyamakan waktu computer

dengan waktu yang diinputkan, jika sama maka reminder akan berbunyi. Reminder ini

membunyikan nada yang disusun dengan mknote. Waktu dari computer diambil

menggunakan awk dan disimpan dalam variable cek. Setelah itu masuk ke fungsi if bila

“$waktu” == “$cek” maka nada dibunyikan, membunyikan nada cukup mencetak variable

nada yang disusun dari mknote menggunakan echo. Kemudian pesan yang ada dalam

variable pesan dicetak menggunakan zenity.

Percobaan kedua adalah program untuk menghitung nilai resistor yang dirangkai

seri maupun parallel. Program diawali dengan input jenis rangkaian yang akan dihitung,

yakni seri atau parallel. Untuk memilih dapat diinputkan angka 1 untuk seri, namun juga

dapat diinputkan string seri/Seri/SERI karna dalam inputnya disaring menggunakan case,

begitu juga parallel. Setelah didapat input kemudian fungsi langsung dijalankan

berdasarkan inputnya. Bila input 1 atau rangkaian seri maka akan dijalankan fungsi seri,

begitu juga dengan input parallel. Dalam fungsi seri atau parallel terdapat perintah untuk

menginputkan jumlah resistor yang akan dihitung, jumlah resistor tsb kemudian disimpan

dalam variable yang nantinya akan menjadi pembatas loop saat menginputkan nilai resistor

yaitu w(untuk seri) dan z(untuk parallel). Dalam loop diminta untk memasukkan nilai

resistor, loop ini dibatasi oleh variable w atau z. Kemudian dihitung nilai hasil seri atau

parallel dari ke-n resistor yang diinputkan tsb.

Percobaan ketiga adalah program aplikasi game tebak angka. Pada game ini input

hanyalah nama. Program dimulai dengan menginputkan nama. Kemudian masuk ke game.

Niali angka yang ditebak adalah random antara 1-10, sehingga perintahnya ‘rand=$

[($RANDOM %10) +1]’. $RANDOM %10 maka akan angka random yang akan muncul

Page 22: 15 Aplikasi Pemrograman Shell

adalah antara 0-9, karena yang diinginkan adalah 1-10 maka dijumlah dengan satu

($RANDOM %10)+1. Kemudian dilanjutkan dengan loop while a <= 5, loop ini membatasi

tebakan kita hanya boleh 5 kali, lebih dari itu maka akan kalah. Setelah itu dimunculkan

dialog dengan menggunakan zenity tipe entry, dalam dialog tsb diinputkan angka tebakan

kita dan disimpan dalam variable angka. Kemudian dilanjutkan dengan fungsi if dimana jika

$angka –eq $rand (variable angka sama dengan variable random) maka akan ditampilkan

dialog zenity ucapan selamat telah memenangkan game, namun jika tidak maka akan

muncul dialog zenity yang berisi ucapan kalau kita belum beruntung. Kemudian variable a

yang awalnya 1 berubah menjadi 2 dan loop kembali berulang. Jika sampai a = 5 nilai

randomnya masih tidak ditemukan maka akan dicetak kalau kita kalah.

Percobaan keempat adalah program aplikasi pengubah tampilan warna secara acak.

Dalam fungsi back nilai acak diambil dengan perintah ‘acak=$RANDOM’. Kemudian disaring

jika nilai variable acak lebih yang < 7 dijumlahkan dengan variable init yang nilainya 40.

Maka kemungkinan nilainya adalah 40-47. Nilai tersebut dikembalikan ke fungsi huruf yang

menjalankan fungsi acak, yakni kedalam variable i karena dalam fungsi huruf, fungsi back

dijalankan dengan menggunakan variable I (i=`back`). Dalam fungsi huruf dicetak banyak

karakter namun indeks warnanya diambil dari variable i ( yang nilainya dirandom).

Kemudian tiap proses dalam fungsi huruf diikuti perintah sleep 1. Itu artinya pergantian

warna akan berubah tiap 1 detik.

Percobaan kelima adalah program aplikasi pembuat rekapitulasi transaksi.

Transaksi yang digunakan adalah pembayaran menu makanan di restoran. Menu di

restoran tersebut ada 6. Jadi input yang akan dibaca adalah nomor dari menu. Setelah

diinputkan nomor pesanan makanan, input tersebut disaring menggunakan case, di dalam

case sudah terdapat harga dari menu yang kita pilih. Kemudian diinputkan banyak porsi

yang akan kita beli berupa angka. Kemudian angka tsb akan dikalikan dengan harga dari

menu yang kita pilih, hasilnya disimpan dalam variable bayarma. Setelah itu diminta untuk

menginputkan minuman yang akan dipesan, prosesnya sama seperti penginputan makanan

harga totalnya disimpan dalam variable bayarmi. Kemudian untuk menghitung total,

variable bayarma dan bayarmi dijumlahkan.

Page 23: 15 Aplikasi Pemrograman Shell

KESIMPULAN

Dari hasil percobaan untuk dapat mengambil nilai random dengan menjalankan

perintah $RANDOM. Untuk membatasi nilai random yang diambil dapat

ditambahkan perintah %nilai menjadi ($RANDOM %5) 5 adalah batas angka

random yng akan diacak.

Perintah-perintah dalam pemrograman shell dapat saling dikombinasikan untuk

memenuhi suatu kondisi tertentu seperti halnya pada percobaan penghitungan nilai

resistor. Case digunakan untuk menyaring pilihan rangkaian, loop untuk membatasi

jumlah resistor yang diinputkan, juga fungsi yang dapat digunakan untuk

menjalankan proses tertentu tanpa harus mengetik perintahnya dua kali.