APLIKASI UJI KATAK (KETANGKASAN OTAK)
Zuyina Ayuning Saputri 1203 141 057 2 D3 Teknik Telekomunikasi B Politeknik Elektronika Negeri Surabaya 2016
KATA PENGANTAR
Dengan memanjatkan puji syukur ke-Hadirat Tuhan Yang Maha Esa, karena dengan karunia-Nya saya dapat menyelesaikan laporan final project aplikasi untuk Linux yang berjudul Uji Katak dengan tepat waktu. Tidak lupa juga saya mengucapkan terima kasih atas dukungan dari: 1. Bu Reni S. sebagai dosen pembimbing mata kuliah Shell Programming
Semester III. 2. Orang tua dan teman-teman 2 D3 Telkom B yang telah membantu dalam
penyelesaian laporan final project ini. 3. Semua pihak yang telah membantu.
Dengan menyadari segala keterbatasan yang ada maka saya sangat berterima kasih apabila ada pihak–pihak yang berkenan memberikan kritik dan saran untuk laporan final project ini.
Surabaya, 10 Januari 2016
Penulis
DAFTAR ISI
Halaman Judul Kata pengantar Daftar Isi BAB I Pendahuluan 1.1
Tujuan
BAB II Landsan Teori 2.1 Pemrograman Input/Output 2.2 Ekspresi dan Test 2.3 Pengkondisian (Konstruksi if) 2.4 Subrutin atau Fungsi 2.5 Pemrograman Filter (awk) 2.6 Graphical User Interface BAB III Analisis Data Pengujian 3.1
Source Code Data
3.2
Analisa Data
BAB IV Penutup 4.1 Kesmipulan Daftar Pustaka
BAB I PENDAHULUAN
1.1 Tujuan 1.1.1
Mengaplikasikan pemrograman shell dalam aplikasi Uji Katak dengan tampilan GUI.
1.1.2
Melatih keseimbangan otak melalui aplikasi Uji Katak.
1.1.3
Sarana hiburan di Linux.
BAB II LANDASAN TEORI
2.1 Pemrograman Input/Output
I/O merupakan hal yang mendasar dari kerja komputer karena kapasitas inilah yang membuat komputer begitu berdayaguna. I/O yang dimaksud adalah device yang menangani masukan dan keluaran, baik itu berupa keyboard, floppy, layar monitor,dan sebagainya. Penggunaan proses I/O ini pada contoh sebelumnya seperti statement echo yang digunakan untuk menampilkan teks atau informasi ke layar, atau operasi redirect ke file. selain echo, bash menyediakan perintah builtin printf untuk mengalihkan keluaran ke output standard, baik ke layar ataupun ke file dengan format tertentu, mirip statement printf kepunyaan bahasa C atau perl. berikut contohnya: Output dengan echo Perintah yang digunakan adalah : echo.
Kalimat yang mengikuti echo akan ditampilkan di layar, kemudian kursor pindah baris berikutnya tanda (opsi) –n antara echo dengan kalimat digunakan agar kursor tidak pindah ke baris berikutnya, Contoh : #!/bin/bash #myinfo #membersihkan tampilan layar clear #menampilkan informasi echo -n "Waktu system :"; date echo -n "Anda
:"; whoami
echo -n "Banyak pemakai :"; who | wc –l tentunya layout diatas akan disesuaikan dengan system yang digunakan statement echo dengan opsi -n akan membuat posisi kursor untuk tidak berpindah ke baris baru karena secara default statement echo akan mengakhiri proses pencetakan ke standar output dengan karakter baris baru (newline), dapat juga dicoba tanpa menggunakan opsi -n, dan lihat perbedaannya. opsi lain yang dapat digunakan adalah
-e (enable),
memungkinkan penggunaan backslash karakter atau karakter sekuen seperti pada bahasa C atau perl, misalkan : echo -e "\abunyikan bell" jika dijalankan akan mengeluarkan bunyi bell, informasi opsi pada statement echo dan backslash karakter selengkapnya dapat dilihat via man di prompt shell.
$man echo
Output dengan printf #!/bin/bash #pr1 url="pemula.linux.or.id";
angka=32; printf "Hi, Pake printf ala C\n\t\a di bash\n"; printf "My url %s\n %d decimal = %o octal\n" $url $angka $angka; printf "%d decimal dalam float = %.2f\n" $angka $angka untuk menggunakan format kontrol disertakan simbol %, bash akan mensubtitusikan format tsb dengan isi variabel yang berada di posisi kanan sesuai dengan urutannya jika lebih dari satu variabel, \n \t \a adalah karakter sekuen lepas newline,tab, dan bell, seperti terlihat pada tabel berikut: Tabel 1. Format Control Format control
keterangan
%d
untuk format data integer
%o
octal
%f
float atau decimal
%x
Hexadecimal
pada script diatas %.2f akan mencetak 2 angka dibelakang koma, defaultnya 6 angka, informasi lebih lanjut dapat dilihat via man printf Output dengan Konstanta ANSI 1. Pengaturan Warna
Untuk pewarnaan tampilan dilayar dapat menggunakan konstanta ANSI (salah satu badan nasional amerika yang mengurus standarisasi). syntaxnya:
\033[warnam
Dimana: m menandakan setting color contohnya: $echo -e "\033[31m HELLO\033[0m" HELLO konstanta 31m adalah warna merah, 0m untuk kembali ke warna normal (none),
untuk
mengatur
tampilan
prompt
$PS1="\033[34m" Daftar warna yang digunakan : foreground None
0m
Black
0;30
Dark Gray
1;30
Red
0;31
Light Red
1;31
Green
0;32
Light Green
1;32
Brown
0;33
Yellow
1;33
Blue
0;34
Light Blue
1;34
Purple
0;35
Light Purple
1;35
Cyan
0;36
Light Cyan
1;36
Light Gray
0;37
White
1;37
background dimulai dengan 40 untuk BLACK,41 RED,dst lain-lain 4 underscore,5 blink, 7 inverse 2. Pengaturan posisi kursor
shell,
contohnya:
Sedangkan untuk penempatan posisi kursor, dapat digunakan salah satu cara dibawah.
Menentukan posisi baris dan kolom kursor: \033[baris;kolomH
Pindahkan kursor keatas N baris: \033[NA
Pindahkan kursor kebawah N baris: \033[NB
Pindahkan kursor kedepan N kolom: \033[NC
Pindahkan kursor kebelakang N kolom: \033[ND
Contohnya: #!/bin/bash SETMYCOLOR="\033[42;1;37m" GOTOYX="\033[6;35H" clear echo -e "\033[3;20H INI DIBARIS 3, KOLOM 20" echo -e "\033[44;1;33;5m\033[5;35H HELLO\033[0m"; echo -e "$SETMYCOLOR$GOTOYX ANDA LIHAT INI\033[0m" 2.2 Ekspresi dan Test
2.2.1
Ekspresi Ekspresi pada bahasa-bahasa tingkat tinggi terbagi atas dua macam yaitu ekspresi kondisi dan ekspresi aritmatika. Kedua macam ekspresi ini menggunakan operator. Operator Kondisi ||
atau (OR)
&&
dan
(AND)
!
tidak(NOT)
Konstanta kondisi ada dua: 0 untuk kondisi salah (FALSE) dan 1 untuk kondisi benar (TRUE).
Sedangkan untuk operator relasi yang
menghasilkan TRUE atau FALSE sebagai berikut: Operator Relasi ==
sama dengan
!=
tidak sama dengan
=~
sama dengan untuk string
!~
tidak sama dengan untuk string
<=
lebih kecil atau sama dengan
>=
lebih besar atau sama dengan
>
lebih besar
<
lebih kecil
Operator yang berhubungan dengan aritmatika adalah:
2.2.2
Perkalian
*
Pembagian
/
Penjumlahan
+
Pengurangan
-
Modulo (sisa hasil bagi)
%
Test Test adalah utility sh shell yang berguna untuk memeriksa informasi tentang suatu file dan berguna untuk melakukan perbandingan suatu nilai baik string ataupun numerik.
Proses kerja test yaitu dengan mengembalikan sebuah informasi status yang dapat bernilai 0 (benar) atau 1 (salah) dimana nilai status ini dapat dibaca pada variabel spesial $?. Operasi String Operator
Keterangan Mengembalikan Benar jika panjang STRING
-z STRING
adalah zero Mengembalikan Benar jika panjang STRING
-n STRING
adalah non zero
STRING1 == STRING2 Benar jika STRING1 sama dengan STRING2
2.3 Pengkondisian (Konstruksi if)
Statement builtin if berfungsi untuk melakukan seleksi berdasarkan suatu kondisi tertentu. Secara umum ada dua bentuk umum sintak perintah if , seperti ditunjukkan dibawah ini Sintak :
Perbedaan antara kedua bentuk adalah bentuk pertama mempunyai perintah tunggal jika ekspresi/kondisi yang diuji benar, sedangkan bentuk kedua 1. if [ kondisi ]
then statements fi
mempuny ai banyak perintah yang akan
2. if [ kondisi ] then else statements fi
statements
dijalankan jika ekspresi yang diuji benar. Contoh bentuk pertama: let hasil = "$b * $c" if [ "$hasil" = 10 ] then echo "Hasil perkalian kedua bilangan = $hasil" fi Contoh bentuk kedua: let hasil = "$b * $c" if [ "$hasil" = 10 ] then echo "Hasil perkalian kedua bilangan = $hasil" else echo "selesai" fi Kalau diperhatikan, perintah if
ini hampir sama dengan perintah if pada
bahasa-bahasa tingkat tinggi, seperti Pascal, C, dan juga hampir sama dengan perintah if pada batch file-nya DOS. Pada bentuk pertama maupun bentuk kedua dari sintak diatas adalah statement dalam blok if...fi akan dieksekusi apabila kondisi if
terpenuhi. Dari kedua bentuk
diatas dapat pula
ditambahkan perintah untuk pengecekan kondisi dengan elif (else if). klausa else akan dieksekusi jika if
tidak terpenuhi, sebaliknya jika if
terpenuhi maka else tidak akan dieksekusi. Contoh bentuk ketiga: if winter
then snowremoval
3. if [ kondisi ];
weatherstrip
then
elif spring
perintah1;
elif [ kondisi2 ];
then
then
perintah2;
startgarden mowlawn
else alternatif_perintah;
else echo Something is wrong
fi
fi
2.4 Subrutin atau Fungsi
Merupakan bagian script atau program yang berisi kumpulan beberapa statement yang melaksanakan tugas tertentu. Dengan subrutin kode script tentunya akan lebih sederhana dan terstruktur, karena sekali fungsi telah dibuat dan berhasil maka akan dapat digunakan kapan saja bila diinginkan. Beberapa hal mengenai fungsi ini adalah:
Memungkinkan penyusunan kode script ke dalam bentuk modul-modul kecil yang lebih efisien dengan tugasnya masing-masing.
Mencegah penulisan kode yang berulang - ulang.
Di dalam shell fungsi juga bisa didefinisikan interaktif maupun secara script program, dan meskipun didefinisikan secara interaktif, sebuah fungsi juga bisa dipanggil melalui script yang dibuat dalam sebuah file dengan catatan fungsi tersebut sudah di export. Setelah melalui mekanisme export ini subshell juga bisa memanggil fungsi tersebut. Jadi fungsi adalah program yang dapat dipanggil oleh program lainnya dengan menggunakan notasi NamaFungsi(). Fungsi memberikan exit status ($?) yang dinyatakan dengan
return nr, atau nilai 0 sebagai default. Untuk membuat subrutin shell telah menyediakan keyword function seperti pada bahasa C, akan tetapi ini bersifat optional (artinya boleh digunakan boleh tidak). Bentuk umum dalam mendefinisikan fungsi dalam bash shell adalah sebagai berikut: Sintak: Nama_fungsi () { command; command; } Function nama_fungsi { command; command; } Function nama_fungsi () { command; command; } nama_fungsi adalah pengenal (identifier) yang aturan penamaannya sama seperti pemberian nama variabel, setelah fungsi dideklarasikan atau dibuat dapat dipanggil dengan menyebutkan nama fungsinya. lebih jelasnya lihat contoh script berikut: #!/bin/bash function hai_hello() { echo "Hello, apa kbabar" } #panggil fungsi hai_hello; jika keyword function disertakan maka boleh tidak menggunakan tanda kurung (), tetapi jika keyword function tidak disertakan maka tanda kurung harus digunakan, lihat contoh berikut: function hai_hello{ echo "Hello,apa khabar" } balas(){ echo "Baik-baik saja"; echo "Bagaimana dengan anda ?"; }
Mengirim argumen sebagai parameter ke fungsi Tentunya suatu fungsi lebih berdaya guna apabila dapat menerima argumen yang dikirim oleh pemanggilnya dan memproses argumen tersebut didalam fungsinya, fungsi yang telah dibuat pada bash shell tentunya harus dapat melakukan hal tersebut, apabila pada pemanggilan fungsi disertakan argumen untuk diproses fungsi tersebut, maka bash akan menyimpan argumen - argumen tersebut pada parameter posisi 1,2,3,dan seterusnya..., dengan memanfaatkan parameter posisi tersebut tentunya dapat diambil nilai yang telah dikirim. lebih jelasnya lihat contoh berikut: #!/bin/bash function hello{ if [ -z $1 ]; then echo "Hello, apa khabar anda" else echo "Hello $1, apa khabar"; fi } #masukkan nama anda disini echo -n "Nama anda :"; read nama #panggil fungsi dan kirim isi variabel nama ke fungsi untuk dicetak hello $nama; perhatikan fungsi hello, sebelum mencetak pesan terlebih dahulu melakukan pemeriksaan dengan if terhadap parameter posisi $1 apabila kosong maka pesan "Hello, apa khabar anda" yang akan ditampilkan, tetapi jika ada string yang di inputkan maka string tersebut akan dicetak di dalam blok else pada fungsi. argumen pertama diteruskan ke variabel 1, argumen kedua pada variabel 2, dan seterusnya ... jika argumen yang dikirim lebih dari satu. 2.5 Pemrograman Filter (awk)
Filter File Teks awk Awk adalah sebuah perograman filter untuk teks, seperti halnya perintah "grep". Awk dapat digunakan untuk mencari bentuk/model dalam sebuah file teks. Awk juga dapat mengganti bentuk satu teks ke dalam bentuk teks lain. Awk dapat juga digunakan untuk melakukan proses aritmatika seperti yang dilakukan oleh perintah "expr". Awk adalah sebuah pemrograman seperti pada shell atau C yang memiliki karakteristik yaitu sebagai tool yang cocok untuk jobs juga sebagai pelengkap (complicated) untuk filter standard. Jika kecepatan merupakan hal yang pokok, awk adalah sesuatu produk bahasa yang sangat sesuai. Tetapi hanya untuk even jobs dimana kecepatan menjadi sesuatu hal yang esensial/pokok atau utama, maka awk dapat digunakan sebagai bentuk prototipe-nya. Meskipun awk dan shell keduanya adalah bahasa pemrograman, keduanya adalah spesialis untuk aplikasi yang berbeda. Awk sangat baik untuk manipulasi file teks, sedangkan shell sangat baik untuk pelaksana perintah UNIX. Awk sangat cocok untuk menyelesaikan tugas sederhana, seperti halnya penyuntingan sebuah kata untuk dicetak oleh perintah date atau tugas komplek lainnya seperti pelayanan pengolahan sebuah data base sederhana atau paket statistik. Adapun contoh awk untuk aplikasi sederhana yaitu sebuah program untuk menampilkan hari dan bulan, untuk lebih jelasnya perhatikan printah-perintah berikut. $ cat daymonth date | awk '{print $3}' $ date $ daymonth Simple Script Sebuah awk script terdiri dari 2 bagian; yaitu "pattern dan action". Pattern adalah serupa dengan regular expressions, dan action sama seperti bahasa C yaitu aksi dari hasil sebuah perintah. Pattern dengan regular ekspresi diperlihatkan pada tabel dibawah ini.
Tabel 1. Pattern awk Metacharacte r
Meaning
. (Dot)
Match any character
*
Match zero or more character
^
Match beginning of line
$
Match end of line
\
Escape character following
[]
List
{}
Match range of instance
+
Match one more preceding
?
Match zero or one preceding
|
Separate choices to match
Sedangkan sintak umum dari script awk adalah sebagai berikut: Sintak:
awk -f {awk program file} filename
Pernyataan didalam program awk: Pattern { action 1 action 2 action N } Didalam program awk, pattern diikuti oleh action, dengan tanda kurung kurawal { } yang mengelilingi setiap action. Sebuah action adalah pelaksana
jika pattern sesuai dengan sesuatu yang ada didalam baris input. Jika bagian pattern tidak ada, action akan melakukan aksi untuk tiap-tiap baris dalam file. Jika action absen/tidak ada, maka default action yaitu mencetak baris dilaksanakan. Bentuk pattern "paris" didalam standard input diperlihatkan pada contoh berikut: $ cat findparis awk /paris/ $ echo an american in Georgia | findparis $ echo an american in paris | findparis Diperlihatkan pada contoh program diatas, terdiri dari sebuah pattern |paris| dan tidak ada action. Ekuivalen program dengan menggunakan default action (print) seperti contoh dibawah ini. $ cat findparis awk '/paris/ {print}' $ echo an american in Georgia | findparis $ echo an american in paris | findparis Tanda kutip didaerah sekitar awk script merupakan suatu kebutuhan, sebab script akan bernilai kosong jika tanpa tanda kutip. Salah satu tanda kutip tunggal atau ganda sudah mencukupi untuk contoh diatas. Perintah print didalam program "findparis" untuk mencetak seluruh baris mungkin juga bisa untuk mencetak konstanta, karakter dari baris input, dan juga mencetak argument, disamping itu pada program ini tidak memiliki parameter. Sebuah contoh print dengan argument dalam awk yang menggunakan parameter $3 adalah: $ date | awk '{print $3}' Program awk untuk mengambil argumen dari sebuah file seperti berikut ini: $ cat prarg.awk { print $3 } $ date | awk –f prarg.awk
Pada argumen flag –f dan menyertakan nama file yang berisi awk digunakan untuk menampilkan isi file program awk. { print $3 } membuat awk membaca input dari nama file atau dari input standard (keyboard). 2.6 Graphical User Interface (GUI)
Zenity Zenity mempunyai peran sebagai pembuat GUI pada shell programing atau yang disebut Grafik User Interface dimana mempunyai fungsi mempermudah user untuk mengoperasikan programnya melalui grafis secara interaktif. Zenity mempunyai banyak opsi seperti: --entry
: meminta input dari keyboard
--info
: menampilkan text yang dimana berfungsi sebagai sebuah info
--list
: membuat list berdasarkan column dan row secara tertabel dll
Dengan opsi seperti diatas zenity dapat digunakan untuk membuat sebuah question dialog box. Disamping itu zenity juga dapat digunakan untuk aplikasi yang lain seperti calendar, entry, error, info, file selection, list, notification, progress, warning, scale dan text info. Pada bab ini akan di ilustrasikan bagaimana membuat aplikasi zenity dialog. Contoh sintak zenity :
List Dialog Menggunakan opsi --list
Untuk membuat list dialog. Zenity akan
mengembalikan entry dalam kolom pertama baris teks yang dipilih ke output standar.
Data untuk dialog kolom harus ditentukan menurut kolom, baris
demi baris. Data dapat disediakan untuk dialog melalui input standar. Setiap entri harus dipisahkan oleh karakter baris baru. Jika menggunakan opsi -checklist atau --radiolist, setiap baris harus dimulai dengan ‟TRUE‟ atau ‟FALSE‟. List dialog memiliki opsi berikut: --column=column Menentukan header kolom yang ditampilkan dalam list dialog. Harus ditentukan opsi –colomn untuk setiap kolom yang ingin ditampilkan dalam dialog. --checklist Menentukan bahwa kolom pertama pada list dialog berisi kotak cek. --radiolist Menentukan bahwa kolom pertama pada list dialog berisi kotak radio. --print-column=column Menentukan apakah kolom harus dicetak pada seleksi. Default kolom adalah '1 '. „ALL‟ yang dapat digunakan untuk encetak semua kolom dalam list. Untuk melihat penjelasan lebih detail tentang penggunaan zenity, dapat dilihat di terminal dengan mengetik man zenity, maka akan muncul petunjuk penggunaan zenity.
BAB III ANALISIS DATA PENGUJIAN
3.1 Source Code Data zuyina.sh #!/bin/bash main(){ m=`zenity --list --width 350 --height 230 --title "UJI KATAK(Ketangkasan Otak)" --text "\t\t\t\t\tMenu Utama" --column "UJI KATAK" "Permainan" "Keluar"` if [ "$m" == "Permainan" ]; then na elif [ "$m" == "Keluar" ] || [ "$?" == "1" ]; then clear; zenity --title "UJI KATAK" --info --text "Terima kasih telah bermain UJI KATAK :)" --timeout 10 Keluar 0; fi }
loading(){ ( echo "20"; sleep 1 echo "#Loading . . ."; echo "50"; sleep 1 echo "#Loading . . ."; echo "100"; echo "#Loading . . ."; ) | zenity --progress \
--title="UJI KATAK" \ --text="Loading . . ." \ --percentage=10 --timeout=2 if [ "$?" == 1 ]; then clear; zenity --title "UJI KATAK" --info --text "Terima kasih telah bermain UJI KATAK :)" --timeout 10 Keluar 0; else zenity --title "UJI KATAK" --info --text="Selamat datang di program UJI KATAK dengan Linux !" fi }
na(){ nama=`zenity --entry --title "UJI KATAK" --text="Enter your name, please"` if (test -z $nama); then wname main else greet fi }
wname(){ zenity --warning \ --text="No name entered or make sure to click ok button" }
greet(){ (
echo "70" ; sleep 1 echo "100" ; sleep 1 echo "#Click ok" ; sleep 1 ) |zenity --progress \ --title="UJI KATAK" \ --text="Please wait ..." \ --percentage=0 if [ "$?" == 1 ]; then main else zenity --title "UJI KATAK" --info --text "Hello $nama. Silahkan bermain UJI KATAK :)" --timeout 10 game fi }
game(){ g=`zenity --list --width 350 --height 230 --title "UJI KATAK" --text "\t\t\t\t\tChallenge" --column "UJI KATAK" "Aritmatika" "Angka" "TTS" "Alfabet" "Warna"` if [ "$g" == "Aritmatika" ]; then zenity --title "UJI KATAK" --question --text="Are you ready ?" if [ "$?" == 1 ]; then game else aritmatika fi elif [ "$g" == "Angka" ]; then
zenity --title "UJI KATAK" --question --text="Are you ready ?" if [ "$?" == 1 ]; then game else Numbers fi elif [ "$g" == "TTS" ]; then zenity --title "UJI KATAK" --question --text="Are you ready ?" if [ "$?" == 1 ]; then game else TTS fi elif [ "$g" == "Alfabet" ]; then zenity --title "UJI KATAK" --question --text="Are you ready ?" if [ "$?" == 1 ]; then game else alphabets fi elif [ "$g" == "Warna" ]; then zenity --title "UJI KATAK" --question --text="Are you ready ?" if [ "$?" == 1 ]; then game
else color fi elif [ "$g" == "Exit" ] || [ "$?" == "1" ]; then main fi }
aritmatika(){ ansar1=$(zenity --title "UJI KATAK" --list --text "157 + 143 = ?" --radiolist -column "Choose" --column "Answer" TRUE 300 FALSE 200 FALSE 400 -timeout=4) if [ "$?" == "1" ]; then let totar1=0; game elif [ "$?" == "0" ]||[ "$ansar1" == "300" ]; then let totar1=10; elif [ "$?" == "0" ]||[ "$ansar1" != "300" ]; then let totar1=0; fi
ansar2=$(zenity --title "UJI KATAK" --list --text "22 x 24 = ?" --radiolist -column "Choose" --column "Answer" TRUE 628 FALSE 528 FALSE 428 -timeout=4) if [ "$?" == "1" ]; then let totar2=0; game elif [ "$?" == "0" ]||[ "$ansar2" == "528" ]; then let totar2=10; elif [ "$?" == "0" ]||[ "$ansar2" != "528" ]; then let totar2=0;
fi
ansar3=$(zenity --title "UJI KATAK" --list --text "157 - 63 = ?" --radiolist -column "Choose" --column "Answer" TRUE 94 FALSE 104 FALSE 84 --timeout=4) if [ "$?" == "1" ]; then let totar3=0; game elif [ "$?" == "0" ]||[ "$ansar3" == "94" ]; then let totar3=10; elif [ "$?" == "0" ]||[ "$ansar3" != "94" ]; then let totar3=0; fi
ansar4=$(zenity --title "UJI KATAK" --list --text "1575 / 35 = ?" --radiolist -column "Choose" --column "Answer" TRUE 35 FALSE 45 FALSE 25 --timeout=4) if [ "$?" == "1" ]; then let totar4=0; game elif [ "$?" == "0" ]||[ "$ansar4" == "45" ]; then let totar4=10; elif [ "$?" == "0" ]||[ "$ansar4" != "45" ]; then let totar4=0; fi
ansar5=$(zenity --title "UJI KATAK" --list --text "22-12*10/5+58 = ?" --radiolist --column "Choose" --column "Answer" TRUE 60 FALSE 62 FALSE 70 --timeout=4) if [ "$?" == "1" ]; then let totar5=0; game elif [ "$?" == "0" ]||[ "$ansar5" == "60" ]; then let totar5=10; elif [ "$?" == "0" ]||[ "$ansar5" != "60" ]; then
let totar5=0; fi
let totar=$totar1+$totar2+$totar3+$totar4+$totar5 zenity --title "UJI KATAK" --info --text "Hey $nama, Skor anda adalah $totar" -timeout 10 game } Numbers(){ zenity --title "UJI KATAK" --info --text "Name : Susan\nPhone : 3337" -timeout=2 ansnu1=`zenity --entry --title "UJI KATAK" --text="What is Susan's Number ?"` if [ "$?" == "1" ]; then game elif [ "$?" == "0" ]||[ "$ansnu1" == "3337" ]; then let totnu1=10; elif [ "$?" == "0" ]||[ "$ansnu1" != "3337" ]; then let totnu1=0; elif (test -z $ansnu1); then let totnu1=0; fi
zenity --title "UJI KATAK" --info --text "Name : Zuyina\nPhone : 1996" -timeout=2 ansnu2=`zenity --entry --title "UJI KATAK" --text="What is Zuyina's Number ?"` if [ "$?" == "1" ]; then game elif [ "$?" == "0" ]||[ "$ansnu2" == "1996" ]; then let totnu2=10; elif [ "$?" == "0" ]||[ "$ansnu2" != "1996" ]; then let totnu2=0;
elif (test -z $ansnu2); then let totnu2=0; fi
zenity --title "UJI KATAK" --info --text "Name : Linda son\nPhone : 7789\n\nName : James Delon\nPhone : 9989" --timeout=3 ansnu3=`zenity --entry --title "UJI KATAK" --text="What is James Delon's Number ?"` if [ "$?" == "1" ]; then game elif [ "$?" == "0" ]||[ "$ansnu3" == "9989" ]; then let totnu3=10; elif [ "$?" == "0" ]||[ "$ansnu3" != "9989" ]; then let totnu3=0; elif (test -z $ansnu3); then let totnu3=0; fi
zenity --title "UJI KATAK" --info --text "Name : Justin Bieber\nPhone : 83644\n\nName : Selena Gomez\nPhone : 64483" --timeout=3 ansnu4=`zenity --entry --title "UJI KATAK" --text="What is Justin Biebe's Number ?"` if [ "$?" == "1" ]; then game elif [ "$?" == "0" ]||[ "$ansnu4" == "83644" ]; then let totnu4=10; elif [ "$?" == "0" ]||[ "$ansnu4" != "83644" ]; then let totnu4=0; elif (test -z $ansnu4); then let totnu4=0; fi
zenity --title "UJI KATAK" --info --text "Name : John Smith\nPhone : 7789768\n\nName : Selena Gomeze\nPhone : 64483\n\nName : James Robinson\nPhone : 8254" --timeout=4 ansnu5=`zenity --entry --title "UJI KATAK" --text="What is John Smith's Number ?"` if [ "$?" == "1" ]; then game elif [ "$?" == "0" ]||[ "$ansnu5" == "7789768" ]; then let totnu5=10; elif [ "$?" == "0" ]||[ "$ansnu5" != "7789768" ]; then let totnu5=0; elif (test -z $ansnu5); then let totnu5=0; fi
let totnu=$totnu1+$totnu2+$totnu3+$totnu4+$totnu5 zenity --title "UJI KATAK" --info --text "Hey $nama, Skor anda adalah $totnu" -timeout 10 game }
TTS(){ zenity --title "UJI KATAK" --info --text "Berbaris bukan tentara, Meletus bukan balon." --timeout=2 asu1=`zenity --entry --title "UJI KATAK" --text="Jawabannya adalah"` if [ "$?" == "1" ]; then game elif [ "$?" == "0" ]||[ "$asu1" == "jagung bakar" ]; then let tota1=10; elif [ "$?" == "0" ]||[ "$asu1" != "jagung bakar" ]; then let tota1=0; elif (test -z $asu1); then let tota1=0;
fi
zenity --title "UJI KATAK" --info --text "Diucapkan 1 kali Jauh, diucapkan 2 kali jadi deket." --timeout=2 asu2=`zenity --entry --title "UJI KATAK" --text="Jawabannya adalah"` if [ "$?" == "1" ]; then game elif [ "$?" == "0" ]||[ "$asu2" == "langit langit" ]; then let tota2=10; elif [ "$?" == "0" ]||[ "$asu2" != "langit langit" ]; then let tota2=0; elif (test -z $asu2); then let tota2=0; fi
zenity --title "UJI KATAK" --info --text "Jatuhnya ke bawah lihatnya ke atas." -timeout=3 asu3=`zenity --entry --title "UJI KATAK" --text="Jawabannya adalah"` if [ "$?" == "1" ]; then game elif [ "$?" == "0" ]||[ "$asu3" == "genting bocor" ]; then let tota3=10; elif [ "$?" == "0" ]||[ "$asu3" != "genting bocor" ]; then let tota3=0; elif (test -z $asu3); then let tota3=0; fi
zenity --title "UJI KATAK" --info --text "Ujung satu basah, ujung yang lain terbakar." --timeout=3 asu4=`zenity --entry --title "UJI KATAK" --text="Jawabannya adalah"` if [ "$?" == "1" ]; then
game elif [ "$?" == "0" ]||[ "$asu4" == "sumbu kompor" ]; then let tota4=10; elif [ "$?" == "0" ]||[ "$asu4" != "sumbu kompor" ]; then let tota4=0; elif (test -z $asu4); then let tota4=0; fi
zenity --title "UJI KATAK" --info --text "Dipotong semakin panjang." -timeout=4 asu5=`zenity --entry --title "UJI KATAK" --text="Jawabannya adalah"` if [ "$?" == "1" ]; then game elif [ "$?" == "0" ]||[ "$asu5" == "gelang karet" ]; then let tota5=10; elif [ "$?" == "0" ]||[ "$asu5" != "gelang karet" ]; then let tota5=0; elif (test -z $asu5); then let tota5=0; fi
let tota=$tota1+$tota2+$tota3+$tota4+$tota5 zenity --title "UJI KATAK" --info --text "Hey $nama, Skor anda adalah $tota" -timeout 10 game }
alphabets(){ ansal1=$(zenity --title "UJI KATAK" --list --text "GHKIUYTRE" --radiolist -column "Choose" --column "Answer" TRUE 10 FALSE 8 FALSE 9 --timeout=5) if [ "$?" == "1" ]; then
game elif [ "$?" == "0" ]||[ "$ansal1" == "9" ]; then let total1=10; elif [ "$?" == "0" ]||[ "$ansal1" != "9" ]; then let total1=0; fi
ansal2=$(zenity --title "UJI KATAK" --list --text "UOPLKMNJUYTRGT" --radiolist --column "Choose" --column "Answer" TRUE 14 FALSE 12 FALSE 13 --timeout=5) if [ "$?" == "1" ]; then game elif [ "$?" == "0" ]||[ "$ansal2" == "14" ]; then let total2=10; elif [ "$?" == "0" ]||[ "$ansal2" != "14" ]; then let total2=0; fi
ansal3=$(zenity --title "UJI KATAK" --list --text "GHUOKLPKMYTREWQA" -radiolist --column "Choose" --column "Answer" TRUE 17 FALSE 15 FALSE 9 -timeout=4) if [ "$?" == "1" ]; then game elif [ "$?" == "0" ]||[ "$ansal3" == "15" ]; then let total3=10; elif [ "$?" == "0" ]||[ "$ansal3" != "15" ]; then let total3=0; fi
ansal4=$(zenity --title "UJI KATAK" --list --text "HHUUKKMMMFFTTTTR" -radiolist --column "Choose" --column "Answer" TRUE 17 FALSE 16 FALSE 15 -timeout=4) if [ "$?" == "1" ]; then game
elif [ "$?" == "0" ]||[ "$ansal4" == "16" ]; then let total4=10; elif [ "$?" == "0" ]||[ "$ansal4" != "16" ]; then let total4=0; fi
ansal5=$(zenity --title "UJI KATAK" --list --text "AAAAAADDDDFFFFTTTT" -radiolist --column "Choose" --column "Answer" TRUE 16 FALSE 15 FALSE 18 -timeout=5) if [ "$?" == "1" ]; then game elif [ "$?" == "0" ]||[ "$ansal5" == "18" ]; then let total5=10; elif [ "$?" == "0" ]||[ "$ansal5" != "18" ]; then let total5=0; fi
let total=$total1+$total2+$total3+$total4+$total5 zenity --title "UJI KATAK" --info --text "Hey $nama, Skor anda adalah $total" -timeout 10 game }
color(){ #!bin/bash hitam="\033[40m \033[0m" merah="\033[41m \033[0m" hijau="\033[42m \033[0m" kuning="\033[43m \033[0m" biru="\033[44m \033[0m" magenta="\033[45m \033[0m" cyan="\033[46m \033[0m"
echo "" echo "Number 1" echo "" for z in 1 2 3 4 5 6 do echo -ne "$hitam" done echo -n " = " for z in 1 2 3 4 5 6 do echo -ne "$merah" done echo -n "
"
for z in 1 2 3 4 5 6 do echo -ne "$hijau" done echo -n " = " for z in 1 2 3 4 5 6 do echo -ne "$kuning" done echo "" echo "----------------------------------" printf "\t " for z in 1 2 3 4 5 6 7 8 9 do echo -ne "$kuning" done echo -n " = ?"
echo "" echo "" echo "Choose the answer number 1" echo "" echo -n "a. " for z in 1 2 3 4 5 6 do echo -ne "$merah" done echo "" echo "" echo -n "b. " for z in 1 2 3 4 5 6 do echo -ne "$hijau" done echo "" echo "" echo -n "c. " for z in 1 2 3 4 5 6 do echo -ne "$hitam" done echo "" echo "" ansco1=$(zenity --title "UJI KATAK" --list --text "Number 1" --radiolist -column "Choose" --column "Answer" TRUE a FALSE b FALSE c --timeout=10) if [ "$?" == "1" ]; then clear; game elif [ "$?" == "0" ]||[ "$ansco1" == "b" ]; then
let totco1=10; elif [ "$?" == "0" ]||[ "$ansco1" != "b" ]; then let totco1=0; fi
clear; #!bin/bash
#b echo -e "\033[42m \033[2;1H \033[0m" echo -e "\033[42m \033[3;1H \033[0m" echo -e "\033[42m \033[4;1H \033[0m" echo -e "\033[42m \033[5;1H \033[0m" echo -e "\033[42m \033[6;1H \033[0m"
echo -e "\033[42m \033[4;2H \033[0m" echo -e "\033[42m \033[4;3H \033[0m" echo -e "\033[42m \033[4;4H \033[0m" echo -e "\033[42m \033[4;5H \033[0m" echo -e "\033[42m \033[4;6H \033[0m" echo -e "\033[42m \033[4;7H \033[0m"
echo -e "\033[42m \033[5;7H \033[0m"
echo -e "\033[42m \033[6;2H \033[0m" echo -e "\033[42m \033[6;3H \033[0m" echo -e "\033[42m \033[6;4H \033[0m" echo -e "\033[42m \033[6;5H \033[0m" echo -e "\033[42m \033[6;6H \033[0m" echo -e "\033[42m \033[6;7H \033[0m"
#i echo -e "\033[42m \033[2;9H \033[0m"
echo -e "\033[42m \033[4;9H \033[0m" echo -e "\033[42m \033[5;9H \033[0m" echo -e "\033[42m \033[6;9H \033[0m"
#r echo -e "\033[42m \033[3;11H \033[0m" echo -e "\033[42m \033[3;12H \033[0m" echo -e "\033[42m \033[3;13H \033[0m" echo -e "\033[42m \033[3;14H \033[0m" echo -e "\033[42m \033[3;15H \033[0m" echo -e "\033[42m \033[3;16H \033[0m" echo -e "\033[42m \033[3;17H \033[0m"
echo -e "\033[42m \033[3;11H \033[0m" echo -e "\033[42m \033[4;11H \033[0m" echo -e "\033[42m \033[5;11H \033[0m" echo -e "\033[42m \033[6;11H \033[0m"
#u echo -e "\033[42m \033[3;19H \033[0m" echo -e "\033[42m \033[4;19H \033[0m" echo -e "\033[42m \033[5;19H \033[0m" echo -e "\033[42m \033[6;19H \033[0m"
echo -e "\033[42m \033[6;20H \033[0m"
echo -e "\033[42m \033[6;21H \033[0m" echo -e "\033[42m \033[6;22H \033[0m" echo -e "\033[42m \033[6;23H \033[0m"
echo -e "\033[42m \033[3;24H \033[0m" echo -e "\033[42m \033[4;24H \033[0m" echo -e "\033[42m \033[5;24H \033[0m" echo -e "\033[42m \033[6;24H \033[0m"
ansco2=$(zenity --title "UJI KATAK" --list --text "Number 2: Read the Color" -radiolist --column "Choose" --column "Answer" TRUE Merah FALSE Biru FALSE Hijau --timeout=10) if [ "$?" == "1" ]; then clear; game elif [ "$?" == "0" ]||[ "$ansco2" == "Hijau" ]; then let totco2=10; elif [ "$?" == "0" ]||[ "$ansco2" != "Hijau" ]; then let totco2=0; fi
clear; #!bin/bash hitam="\033[40m \033[0m" merah="\033[41m \033[0m" hijau="\033[42m \033[0m" kuning="\033[43m \033[0m" biru="\033[44m \033[0m" magenta="\033[45m \033[0m" cyan="\033[46m \033[0m"
echo ""
echo "Number 3" echo "" for z in 1 2 3 4 5 6 do echo -ne "$merah" done echo -n " = " for z in 1 2 3 4 5 6 do echo -ne "$hijau" done echo -n "
"
for z in 1 2 3 4 5 6 do echo -ne "$kuning" done echo -n " = " for z in 1 2 3 4 5 6 do echo -ne "$biru" done echo "" echo "----------------------------------" printf "\t " for z in 1 2 3 4 5 6 7 8 9 do echo -ne "$merah" done echo -n " = ?" echo "" echo ""
echo "Choose the answer number 3" echo "" echo -n "a. " for z in 1 2 3 4 5 6 do echo -ne "$hijau" done echo "" echo "" echo -n "b. " for z in 1 2 3 4 5 6 do echo -ne "$biru" done echo "" echo "" echo -n "c. " for z in 1 2 3 4 5 6 do echo -ne "$kuning" done echo "" echo "" ansco3=$(zenity --title "UJI KATAK" --list --text "Number 3" --radiolist -column "Choose" --column "Answer" TRUE a FALSE b FALSE c --timeout=8) if [ "$?" == "1" ]; then clear; game elif [ "$?" == "0" ]||[ "$ansco3" == "a" ]; then let totco3=10; elif [ "$?" == "0" ]||[ "$ansco3" != "a" ]; then
let totco3=0; fi
clear; #!bin/bash
#m echo -e "\033[44m \033[2;1H \033[0m" echo -e "\033[44m \033[2;2H \033[0m" echo -e "\033[44m \033[2;3H \033[0m" echo -e "\033[44m \033[2;4H \033[0m" echo -e "\033[44m \033[2;5H \033[0m" echo -e "\033[44m \033[2;6H \033[0m" echo -e "\033[44m \033[2;7H \033[0m" echo -e "\033[44m \033[2;8H \033[0m" echo -e "\033[44m \033[2;9H \033[0m" echo -e "\033[44m \033[2;10H \033[0m" echo -e "\033[44m \033[2;11H \033[0m" echo -e "\033[44m \033[2;12H \033[0m" echo -e "\033[44m \033[2;13H \033[0m" echo -e "\033[44m \033[2;14H \033[0m"
echo -e "\033[44m \033[3;1H \033[0m" echo -e "\033[44m \033[4;1H \033[0m" echo -e "\033[44m \033[5;1H \033[0m" echo -e "\033[44m \033[6;1H \033[0m"
echo -e "\033[44m \033[2;7H \033[0m" echo -e "\033[44m \033[3;7H \033[0m" echo -e "\033[44m \033[4;7H \033[0m" echo -e "\033[44m \033[5;7H \033[0m"
echo -e "\033[44m \033[6;7H \033[0m"
echo -e "\033[44m \033[2;14H \033[0m" echo -e "\033[44m \033[3;14H \033[0m" echo -e "\033[44m \033[4;14H \033[0m" echo -e "\033[44m \033[5;14H \033[0m" echo -e "\033[44m \033[6;14H \033[0m"
#e echo -e "\033[44m \033[2;16H \033[0m" echo -e "\033[44m \033[2;17H \033[0m" echo -e "\033[44m \033[2;18H \033[0m" echo -e "\033[44m \033[2;19H \033[0m" echo -e "\033[44m \033[2;20H \033[0m" echo -e "\033[44m \033[2;21H \033[0m" echo -e "\033[44m \033[2;22H \033[0m"
echo -e "\033[44m \033[3;22H \033[0m"
echo -e "\033[44m \033[4;16H \033[0m" echo -e "\033[44m \033[4;17H \033[0m" echo -e "\033[44m \033[4;18H \033[0m" echo -e "\033[44m \033[4;19H \033[0m" echo -e "\033[44m \033[4;20H \033[0m" echo -e "\033[44m \033[4;21H \033[0m" echo -e "\033[44m \033[4;22H \033[0m"
echo -e "\033[44m \033[6;16H \033[0m" echo -e "\033[44m \033[6;17H \033[0m"
echo -e "\033[44m \033[6;18H \033[0m" echo -e "\033[44m \033[6;19H \033[0m" echo -e "\033[44m \033[6;20H \033[0m" echo -e "\033[44m \033[6;21H \033[0m" echo -e "\033[44m \033[6;22H \033[0m"
echo -e "\033[44m \033[3;16H \033[0m" echo -e "\033[44m \033[4;16H \033[0m" echo -e "\033[44m \033[5;16H \033[0m" echo -e "\033[44m \033[6;16H \033[0m"
#r echo -e "\033[44m \033[2;24H \033[0m" echo -e "\033[44m \033[2;25H \033[0m" echo -e "\033[44m \033[2;26H \033[0m" echo -e "\033[44m \033[2;27H \033[0m" echo -e "\033[44m \033[2;28H \033[0m" echo -e "\033[44m \033[2;29H \033[0m" echo -e "\033[44m \033[2;30H \033[0m"
echo -e "\033[44m \033[3;24H \033[0m" echo -e "\033[44m \033[4;24H \033[0m" echo -e "\033[44m \033[5;24H \033[0m" echo -e "\033[44m \033[6;24H \033[0m"
#a echo -e "\033[44m \033[2;32H \033[0m" echo -e "\033[44m \033[2;33H \033[0m" echo -e "\033[44m \033[2;34H \033[0m"
echo -e "\033[44m \033[2;35H \033[0m" echo -e "\033[44m \033[2;36H \033[0m" echo -e "\033[44m \033[2;37H \033[0m" echo -e "\033[44m \033[2;38H \033[0m" echo -e "\033[44m \033[3;38H \033[0m"
echo -e "\033[44m \033[4;32H \033[0m" echo -e "\033[44m \033[4;33H \033[0m" echo -e "\033[44m \033[4;34H \033[0m" echo -e "\033[44m \033[4;35H \033[0m" echo -e "\033[44m \033[4;36H \033[0m" echo -e "\033[44m \033[4;37H \033[0m" echo -e "\033[44m \033[4;38H \033[0m"
echo -e "\033[44m \033[5;32H \033[0m" echo -e "\033[44m \033[5;38H \033[0m"
echo -e "\033[44m \033[6;32H \033[0m" echo -e "\033[44m \033[6;33H \033[0m" echo -e "\033[44m \033[6;34H \033[0m" echo -e "\033[44m \033[6;35H \033[0m" echo -e "\033[44m \033[6;36H \033[0m" echo -e "\033[44m \033[6;37H \033[0m" echo -e "\033[44m \033[6;38H \033[0m"
#h echo -e "\033[44m \033[4;40H \033[0m" echo -e "\033[44m \033[4;41H \033[0m" echo -e "\033[44m \033[4;42H \033[0m" echo -e "\033[44m \033[4;43H \033[0m" echo -e "\033[44m \033[4;44H \033[0m"
echo -e "\033[44m \033[4;45H \033[0m" echo -e "\033[44m \033[4;46H \033[0m"
echo -e "\033[44m \033[2;40H \033[0m" echo -e "\033[44m \033[3;40H \033[0m" echo -e "\033[44m \033[4;40H \033[0m" echo -e "\033[44m \033[5;40H \033[0m" echo -e "\033[44m \033[6;40H \033[0m"
echo -e "\033[44m \033[2;46H \033[0m" echo -e "\033[44m \033[3;46H \033[0m" echo -e "\033[44m \033[4;46H \033[0m" echo -e "\033[44m \033[5;46H \033[0m" echo -e "\033[44m \033[6;46H \033[0m" ansco4=$(zenity --title "UJI KATAK" --list --text "Number 4: Read the Color" -radiolist --column "Choose" --column "Answer" TRUE Merah FALSE Biru FALSE Ungu --timeout=8) if [ "$?" == "1" ]; then clear; game elif [ "$?" == "0" ]||[ "$ansco4" == "Biru" ]; then let totco4=10; elif [ "$?" == "0" ]||[ "$ansco4" != "Biru" ]; then let totco4=0; fi
clear; #!bin/bash hitam="\033[40m \033[0m" merah="\033[41m \033[0m" hijau="\033[42m \033[0m" kuning="\033[43m \033[0m"
biru="\033[44m \033[0m" magenta="\033[45m \033[0m" cyan="\033[46m \033[0m"
echo "" echo "Number 5" echo "" for z in 1 2 3 4 5 6 do echo -ne "$kuning" done echo -n " = " for z in 1 2 3 4 5 6 do echo -ne "$biru" done echo -n "
"
for z in 1 2 3 4 5 6 do echo -ne "$magenta" done echo -n " = " for z in 1 2 3 4 5 6 do echo -ne "$cyan" done echo "" echo "----------------------------------" printf "\t " for z in 1 2 3 4 5 6 7 8 9 do
echo -ne "$biru" done echo -n " = ?" echo "" echo "" echo "Choose the answer number 2" echo "" echo -n "a. " for z in 1 2 3 4 5 6 do echo -ne "$magenta" done echo "" echo "" echo -n "b. " for z in 1 2 3 4 5 6 do echo -ne "$cyan" done echo "" echo "" echo -n "c. " for z in 1 2 3 4 5 6 do echo -ne "$kuning" done echo "" echo "" ansco5=$(zenity --title "UJI KATAK" --list --text "Number 5" --radiolist -column "Choose" --column "Answer" TRUE a FALSE b FALSE c --timeout=8) if [ "$?" == "1" ]; then
clear; game elif [ "$?" == "0" ]||[ "$ansco5" == "c" ]; then let totco5=10; elif [ "$?" == "0" ]||[ "$ansco5" != "c" ]; then let totco5=0; fi
let totco=$totco1+$totco2+$totco3+$totco4+$totco5 clear; zenity --title "UJI KATAK" --info --text "Hey $nama, Skor anda adalah $totco" -timeout 10 game }
loading main
3.2 Analisa Data Pada final project yang dibuat ini, yaitu Uji Katak, terdapat beberapa soal yang dapat melatih otak. Pada program ini juga dapat melihat masing-masing score dari setiap tipe soal latihan dan melihat total keseluruhan nilai. Untuk menjalankan program ini, perlu mengubah direktori terlebih dahulu karena file program yang akan dipanggil berada pada direktori Project. Setelah melakukan change directory, program Uji Katak sudah bisa dijalankan dengan memanggil nama file yang ingin dijalankan, yaitu zuyina.sh. Fungsi pertama yang dipanggil adalah loading.
Apabila di click cancel, program akan menampilkan text info seperti tampilan berikut.
Program akan keluar apabila di click ok karena berlanjut di sintak exit 0;. Namun apabila pada saat loading tidak di cancel, progress loading akan terus berjalan dan program akan menampilkan text info seperti tampilan berikut.
Setelah dari fungsi loading, program akan berlanjut menuju Menu utama dengan memanggil fungsi main.
Untuk menampilkan tampilan seperti Menu utama di atas menggunakan zenity –-list. Sedangkan setiap pilihan Menu-nya ditampilkan menggunakan – column. Apabila di click cancel, program akan menampilkan text info seperti tampilan berikut.
Apabila pada dialog info di click ok, program akan keluar. Pada saat memilih menu “Permainan” program akan memanggil fungsi na.
Fungsi na tersebut menampilkan dialog entry menggunakan zenity –-entry.
Apabila tidak ada masukan data lalu di click ok atau sudah memasukkan data tetapi tombol yang di click adalah tombol cancel bukan tombol ok, maka program akan memanggil fungsi wname yang menampilkan dialog warning menggunakan zenity –-
warning.
Setelah dialog warning di click ok, program akan kembali ke fungsi main dengan tampilan Menu Utama.
Tetapi, apabila data sudah dimasukkan lalu di click ok, program akan melanjutkan ke fungsi greet untuk menampilkan zenity –-progress.
Apabila di cancel, program akan kembali ke fungsi main dengan tampilan Menu Utama. Namun, apabila tetap ditunggu lalu di click ok maka program akan memunculkan dialog zenity –-info dengan timeout 10. Jadi, saat sudah 10 detik dialog info tersebut belum di click ok, maka program akan berlanjut sendiri.
Masukkan data nama yang sudah disimpan
dalam
variabel
nama,
dipanggil menggunakan $nama.
Selanjutnya, program memanggil fungsi game. Dalam fungsi game tersebut terdapat pemilihan challenge menggunakan zenity –-list dengan tampilan setiap soal challenge-nya menggunakan –-column.
Apabila di click cancel, program akan kembali tampilan
ke
fungsi
main
dengan
Menu
Utama.
Apabila memilih list Aritmatika lalu di click ok, program akan memanggil fungsi aritmatika.
Apabila memilih list Angka lalu di click ok, program akan memanggil fungsi Numbers.
Apabila memilih list TTS lalu di click ok, program akan memanggil fungsi TTS.
Apabila memilih list Alfabet lalu di click ok, program akan memanggil fungsi alphabets.
Apabila memilih list Color lalu di click ok, program akan memanggil fungsi Color.
Namun sebelum berlanjut ke fungsi masing-masing challenge program akan menampilkan zenity --question terlebih dahulu. Apabila di click No, program akan memanggil fungsi game (kembali ke tampilan Challenge).
Apabila di click Yes, program akan memanggil sesuai fungsi masing-masing challenge yang di pilih.
Pada saat memilih challenge Aritmatika, terdapat lima latihan soal arithmetic dengan tampilan menggunakan zenity –-radiolist dimana option dari jawabannya menggunakan –-column dengan tambahan TRUE untuk pilihan pertama dan FALSE untuk pilihan kedua dan seterusnya.
Apabila di click cancel, program akan kembali ke fungsi game dengan tampilan Challenge.
Apabila ingin menjawab, hanya perlu memilih jawaban yang tepat lalu di click ok. Apabila tidak segera di click ok, program akan berlanjut dengan sendirinya ke soal selanjutnya karena terdapat timeout pada masing-masing soal. Setiap jawaban benar bernilai 10 dan setiap jawaban salah bernilai 0. Setelah menjawab ke lima soal, akan ada dialog info yang memberitahukan score yang didapat dengan menjumlah setiap score yang didapat dari masingmasing soal dan menyimpannya dalam variabel totar.
Apabila dialog info score tersebut di click ok, program akan berlanjut ke fungsi game (kembali ke tampilan Challenge). Namun, apabila dialog info score tersebut tidak segera di click ok, program akan tetap kembali ke tampilan Challenge dalam waktu sepuluh detik karena sudah diatur --timeout 10.
Pada saat memilih challenge Angka, terdapat lima latihan soal mengingat dengan tampilan soal menggunakan zenity –-info dan tampilan dari lembar jawaban menggunakan zenity –entry. Apabila pada dialog jawaban di click cancel, program akan memanggil fungsi game (kembali ke tampilan Challenge).
Apabila pada dialog jawaban di click cancel, program akan memanggil fungsi game (kembali ke tampilan Challenge). Namun, apabila di click ok program akan melanjutkan ke soal berikutnya dan apabila program tidak segera di click ok, program akan berlanjut dengan sendirinya karena terdapat –timeout pada masing-masing dialog jawaban. Setiap jawaban benar bernilai 10 dan setiap jawaban salah bernilai 0. Setelah menjawab ke lima soal, akan ada dialog info yang memberitahukan score yang didapat dengan menjumlah setiap score yang didapat dari masingmasing soal dan menyimpannya dalam variabel totnu.
Apabila dialog info score tersebut di click ok, program akan berlanjut ke fungsi
game
(kembali
ke
tampilan
Challenge). Namun, apabila dialog info score tersebut tidak segera di click ok, program akan tetap kembali ke tampilan Challenge dalam waktu sepuluh detik karena sudah diatur --timeout 10.
Pada saat memilih challenge TTS, terdapat lima latihan soal mengingat dengan tampilan soal menggunakan zenity –-info dan tampilan dari lembar jawaban menggunakan zenity –entry.
Apabila pada dialog jawaban di click cancel, program akan memanggil fungsi game (kembali ke tampilan Challenge).
Apabila pada dialog jawaban di click cancel, program akan memanggil fungsi game (kembali ke tampilan Challenge). Namun, apabila di click ok program akan melanjutkan ke soal berikutnya dan apabila program tidak segera di click ok, program akan berlanjut dengan sendirinya karena terdapat –timeout pada masing-masing dialog jawaban.
Setiap jawaban benar bernilai 10 dan setiap jawaban salah bernilai 0. Setelah menjawab ke lima soal, akan ada dialog info yang memberitahukan score yang didapat dengan menjumlah setiap score yang didapat dari masingmasing soal dan menyimpannya dalam variabel totnu.
Apabila dialog info score tersebut di click ok, program akan berlanjut ke fungsi game (kembali ke tampilan Challenge). Namun, apabila dialog info score tersebut tidak segera di click ok, program
akan
tetap
kembali
ke
tampilan
Challenge dalam waktu sepuluh detik karena sudah diatur --timeout 10.
Pada saat memilih challenge Alphabets, terdapat lima latihan soal alphabets dengan tampilan menggunakan zenity –-radiolist dimana option dari jawabannya menggunakan –-column dengan tambahan TRUE untuk pilihan pertama dan FALSE untuk pilihan kedua dan seterusnya. Apabila di click cancel, program akan kembali ke fungsi game dengan tampilan challenge.
Apabila ingin menjawab, hanya perlu memilih jawaban yang tepat lalu di click ok. Apabila tidak segera di click ok, program akan berlanjut dengan sendirinya ke soal selanjutnya karena terdapat timeout pada masing-masing soal.
Setiap jawaban benar bernilai 10 dan setiap jawaban salah bernilai 0. Setelah menjawab ke lima soal, akan ada dialog info yang memberitahukan score yang didapat dengan menjumlah setiap score yang didapat dari masingmasing soal dan menyimpannya dalam variabel total.
Apabila dialog info score tersebut di click ok, program
akan
berlanjut
ke
fungsi
game
(kembali ke tampilan challenge). Namun, apabila dialog info score tersebut tidak segera di click ok, program akan tetap kembali ke tampilan challenge dalam waktu sepuluh detik karena sudah diatur --timeout 10.
Pada saat memilih challenge color, terdapat lima latihan soal color pada terminal dan tampilan
lembar
jawaban
menggunakan
zenity –-radiolist dimana option dari jawabannya menggunakan –-column dengan tambahan TRUE untuk pilihan pertama dan FALSE untuk pilihan kedua dan seterusnya. Setiap soal yang di tampilkan pada terminal akan dipanggil menggunakan bash sesuai dengan nama file soal yang ingin dipanggil.
Apabila di click cancel, program akan kembali ke fungsi game dengan tampilan challenge.
Apabila ingin menjawab, hanya perlu memilih jawaban yang tepat lalu di click ok. Apabila tidak segera di click ok, program akan berlanjut dengan sendirinya ke soal selanjutnya karena terdapat timeout pada masing-masing soal. Setiap jawaban benar bernilai 10 dan setiap jawaban salah bernilai 0. Setelah menjawab ke lima soal, akan ada dialog info yang memberitahukan score yang didapat dengan menjumlah setiap score yang didapat dari masingmasing soal dan menyimpannya dalam variabel totco.
Apabila dialog info score tersebut di click ok, program
akan
berlanjut
ke
fungsi
game
(kembali ke tampilan challenge). Namun, apabila dialog info score tersebut tidak segera di click ok, program akan tetap kembali ke tampilan challenge dalam waktu sepuluh detik karena sudah diatur --timeout 10.
Apabila di click cancel, program akan memanggil fungsi main (kembali ke tampilan Menu utama).
Apabila memilih menu Keluar, program akan menampilkan zenity –-info seperti tampilan di atas. Lalu, apabila dialog info tersebut di click ok, program akan keluar.
BAB IV PENUTUP
4.1 Kesimpulan Dari hasil final project yang telah dikerjakan dapat disimpulkan bahwa aplikasi sederhana seperti Uji Katak ini bisa dibuat menggunakan shell programming dengan tampilan yang tidak kalah dengan pemrograman lainnya karena pada shell programming linux ini bisa menggunakan GUI zenity untuk membuat tampilan lebih menarik dan juga terdapat pengaturan warna foreground maupun background untuk memperindah tampilan. Selain itu, pada shell programming ini terdapat sintak untuk pengkondisian (Konstruksi if), operasi aritmatik, dan membuat database yang mana sangat membantu dalam pembuatan aplikasi. Sehingga terbentuklah aplikasi Uji Katak ini, yang dapat membantu untuk melatih kemampuan otak kita, juga untuk sarana hiburan di linux.
DAFTAR PUSTAKA
Reni, S. 2015. “Ekspresi dan Test”. Dalam Modul Praktikum Shell Programming Semester III. Surabaya. Reni, S. 2015. “Graphical User Interface (GUI)”. Dalam Modul Praktikum Shell Programming Semester III. Surabaya. Reni, S. 2015. “Pemrograman Filter (awk)”. Dalam Modul Praktikum Shell Programming Semester III. Surabaya. Reni, S. 2015. “Pemrograman Input/Output”. Dalam Modul Praktikum Shell Programming Semester III. Surabaya. Reni, S. 2015. “Pengkondisian”. Dalam Modul Praktikum Shell Programming Semester III. Surabaya. Reni, S. 2015. “Subrutin atau Fungsi”. Dalam Programming Semester III. Surabaya.
Modul Praktikum Shell