Upload
teddy-ernanto
View
155
Download
20
Embed Size (px)
DESCRIPTION
abc
Citation preview
Nama : Raka Dian PratamaKelas : 2D3 Telekomunikasi
BNRP 7211030055
PROJECT AKHIR SHELL PROGRAMMING “CONVERTING BILANGAN”
i. JUDUL
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
Converting Bilangan.
ii. TUJUAN
Program ini dibuat untuk mempermudah dalam mengkonversi bilangan. Dengan
adanya program ini diharapkan dapat mempermudah dalam mengkonversikan bilangan
dalam bentuk Biner, Desimal, Hexadesimal maupun Oktal.
iii. TEORI
Input/Output
Sebuah proses memerlukan Input dan Output.
Instruksi (command) yang diberikan pada Linux melalui Shell disebut sebagai eksekusi program yang selanjutnya disebut proses. Setiap kali instruksi diberikan, maka Linux kernel akan menciptakan sebuah proses dengan memberikan nomor PID (Process Identity). Proses dalam Linux selalu membutuhkan Input dan menghasilkan suatu Output.
Simple I/O
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.
1. Output dengan echo
Perintah yang digunakan adalah : echo.
Syntak :
echo “teks yang ingin ditampilkan”
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.
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.
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
INPUT PROSES OUTPUT
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
Pemakaian Variabel
Variabel
Secara sederhana variabel adalah pengenal (identifier) berupa satuan dasar penyimpanan yang isi atau nilainya sewaktu-waktu dapat berubah baik oleh eksekusi program (runtime program) ataupun proses lain yang dilakukan sistem operasi. Variabel dibagi menjadi 3 kategori:
Environment Variabel
Environment Variabel atau variabel lingkungan adalah variabel yang digunakan khusus oleh shell atau system linux untuk proses kerja system seperti variabel PS1, PS2, HOME, PATH, USER, SHELL, dan sebagainya. Jika variabel ini digunakan akan berdampak pada system, misalkan variabel PS1 yang digunakan untuk mengeset prompt shell pertama yaitu prompt tempat anda mengetikkan perintah - perintah shell (defaultnya "\s-\v\$"), PS2 untuk prompt pelengkap perintah, prompt ini akan ditampilkan jika perintah yang dimasukkan dianggap belum lengkap oleh shell (defaultnya ">").
Jika ingin mengkonfigurasi prompt shell, bash telah menyediakan beberapa backslash karakter diantaranya adalah:
\a ASCII bell character (07)
\d date dengan format "Weekday Month Date" (misalnya "Tue May 26")
\e ASCII escape character (033)
\H hostname (namahost)
\n newline (karakter baru)
\w Direktory aktif
\t time dalam 24 jam dengan format HH:MM:SS
dll man bash:-)
Positional Parameter
Positional Parameter / parameter posisi yaitu variabel yang digunakan shell untuk menampung argumen yang diberikan terhadap shell baik berupa argumen waktu sebuah file dijalankan atau argumen yang dikirim ke subrutin. variabel yang dimaksud adalah 1,2,3,dan seterusnya. Variabel spesial lain yang dapat digunakan yaitu 0, #, dan *.
User Defined Variable
User Defined Variable atau variabel yang didefinisikan sendiri oleh pembuat script sesuai dengan kebutuhannya, beberapa hal yang perlu diperhatikan dalam mendefenisikan variabel adalah:
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
dimulai dengan huruf atau underscore
hindari pemakaian spesial karakter seperti *,$,#,dan lain-lain.
bash bersifat case sensitive, maksudnya membedakan huruf besar dan kecil, a berbeda dengan A, nama berbeda dengan Nama, NaMa, dan sebagainya.
untuk mengeset nilai variabel dengan menggunakan operator assignment (pemberi nilai) "=".
Ada 3 tanda kutip yang digunakan untuk memberikan nilai string ke
suatu variabel, adapun perbedaannya adalah:
dengan kutip ganda (double-quoted), bash mengizinkan kita untuk
menyisipkan variabel di dalamnya.
dengan kutip tunggal (single-quoted), akan ditampilkan apa adanya.
dengan kutip terbalik, bash menerjemahkan sebagai perintah yang akan dieksekusi.
Expresi dan Test
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 :
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
Operator yang berhubungan dengan matematika :
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
Syntak :
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 $?.
1. Operator untuk integer
Operator Keterangan
bil1 -eq bil2
Mengembalikan Benar jika bil1 sama dengan bil2
bil1 -ne Benar jika bil1 tidak sama dengan bil2
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
== 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
Perkalian *
Pembagian /
Penjumlahan +
Pengurangan -
Modulo (sisa hasil bagi) %
test ekspresi atau [ expression ]
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
bil2
bil1 -lt bil2 Benar jika bil1 lebih kecil dari bil2
bil1 -le bil2 Benar jika bil1 lebih kecil atau sama dengan bil2
bil1 -gt bil2 Benar jika bil1 lebih besar dari bil2
bil1 -ge bil2
Benar jika bil1 lebih besar atau sama dengan bil2
2. Operasi string
Operator Keterangan
-z STRING Mengembalikan Benar jika panjang STRING adalah zero
-n STRING Mengembalikan Benar jika panjang STRING adalah non zero
STRING1 == STRING2
Benar jika STRING1 sama dengan STRING2
3. Operator file
Operator
Keterangan
-f FILE Mengembalikan Benar jika FILE ada dan merupakan file biasa
-d FILE Benar jika FILE ada dan merupakan direktory
4. Operator logika
ekspr1 -o ekspr2
Benar jika jika salah satu ekspresi benar (or,||)
ekspr1 -a ekspr2
Benar jika ekspresi1 dan ekspresi2 benar (and,&&)
! ekspresi Mengembalikan Benar jika ekspresi tidak benar (not!)
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
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
Syntak :
1. if [ kondisi ] then
statementsfi
2. if [ kondisi ]then
statementselse
statements fi
Perbedaan antara kedua bentuk adalah bentuk pertama mempunyai perintah tunggal jika ekspresi/kondisi yang diuji benar, sedangkan bentuk kedua mempunyai banyak perintah yang akan dijalankan jika ekspresi yang diuji benar.
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), contoh sintaknya adalah sebagai berikut:
3. if [ kondisi ];then
perintah1;elif [ kondisi2 ];
thenperintah2;
elsealternatif_perintah;
fi
klausa else akan dieksekusi jika if tidak terpenuhi, sebaliknya jika if terpenuhi maka else tidak akan dieksekusi.
KONSTRUKSI case
Case digunakan untuk menyederhanakan pemakaian if yang berantai, sehingga dengan case, kondisi dapat dikelompokkan secara logis dengan lebih jelas dan mudah untuk ditulis.
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
Statement case juga digunakan untuk menyeleksi kondisi majemuk, dibanding if, pemakaian case lebih efisien.
Syntak :
case string inpilihan)
commands;;
pilihan)commands;;
*)default commands;;
esac
Case diakhiri dengan esac dan pada setiap kelompok instruksi diakhiri dengan ;;. Pada akhir pilihan yaitu *) yang berarti adalah “default”, bila kondisi tidak memenuhi pola sebelumnya.
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 sub-shell 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:
Syntak :
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
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.
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.
Cakupan Variabel
Secara default variabel - variabel yang digunakan dalam script adalah variabel bersifat global, maksud global adalah bahwa variabel tersebut dikenal dan dapat diakses oleh semua fungsi dalam script, tetapi bash menyediakan keyword local yang berfungsi membatasi cakupan (scope) suatu variabel agar dikenal hanya oleh fungsi yang mendeklarasikannya. Jadi variabel dapat didefinisikan dalam fungsi sebagai variable local atau global. Hal yang perlu diperhatikan, nama variable yang digunakan dalam sebuah fungsi, jangan sampai bentrok dengan nama variable yang sama di luar fungsi, sehingga tidak terjadi isi variable berubah.
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.
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
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.
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
Metacharacter
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:
Syntak :
awk -f {awk program file} filename
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
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.
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:
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 :
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
--entry : meminta input dari keyboard--info : menampilkan text yang dimana berfungsi
sebagai sebuah info--list : membuat list berdasarkan column dan row secara
tertabel dan lain-lain.
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
Kalender Dialog
Dengan menggunakan option –-calendar dapat dibuat sebuah kalender dialog. Pada kalender dialog ini user diijinkan untuk memilih inisial yang khusus pada perintah date yaitu dengan menggunakan option :
--text=text
Spesikasi “text” digunakan untuk menampilkan teks pada kalender dialog.
--day=day
Spesifikasi “day” digunakan untuk memilih tanggal di dalam kalender dialog. Day harus diberi nilai angka untuk tanggal dari 1 sampai 31.
--month=month
Spesifikasi “month” digunakan untuk memilih bulan di dalam kalender dialog. Month harus diberi nilai untuk bulan dari 1 sampai 12.
--year=year
Spesifikasi “year” digunakan untuk memilih tahun di dalam kalender dialog.
--date-format=format
Menentukan kembali format dari dialog kalender setelah seleksi tanggal (date). Format standar tergantung pada system lokal dan format yang dapat diterima oleh fungsi strftime misalnya %A %d/%m/%y.
File Selection Dialog
Untuk membuat file selection dialog digunakan opsi --file-selection. Zenity akan melakukan seleksi file atau direktori ke output standard. Mode default file selection dialog adalah buka file. File selection dialog memiliki beberapa opsi:
--filename=filename
Menentukan file atau direktori yang dipilih pada dialog pemilihan file ketika dialog yang pertama ditampilkan.
--multiple
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
Menentukan pemilihan beberapa nama file dalam dialog pemilihan file.
--directory
Menentukan pilihan direktori pada dialog pemilihan file.
--save
Set dialog pemilihan file ke mode save.
--separator=separator
Menentukan string yang digunakan untuk membagi kembali daftar nama file.
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 meurut 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.
--editable
Memungkinkan ditampilkan item yang akan diedit.
--separator=separator
Menentukan string apa yang digunakan ketika dialog mengembalikan daftar entry yang dipilih.
--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.
iv. PROGRAM
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
Script :
#!/bin/bashload(){( echo "10"; sleep 1 echo "#Loading. ."; echo "60"; sleep 1 echo "#Loading. ."; echo "100"; sleep 1 echo "#Finish. ."; sleep 1) | zenity --progress \ --title="Progress" \ --text="Loading . ." \ --percentage=10 --timeout=3}
input2(){desimal=$(zenity --title "Desimal-Biner" --entry --text "Masukkan angka Desimal ") load;biner=`echo "obase=2; $desimal" | bc` ;zenity --info --text "angka biner dari $desimal adalah $biner" }
input1(){biner=$(zenity --title "Biner-Desimal" --entry --text "Masukkan angka Biner ") load;desimal=`echo "ibase=2; $biner" | bc` ;zenity --info --text "angka desimal dari $biner adalah $desimal" }
input3(){hexa=$(zenity --title "Hexa-Desimal" --entry --text "Masukkan angka Hexa ") load;desimal=`echo "ibase=16; $hexa" | bc` ;zenity --info --text "angka desimal dari $hexa adalah $desimal" }
input4(){dexa=$(zenity --title "Desimal-Hexa" --entry --text "Masukkan angka Desimal ") load;hexa=`echo "obase=16; $dexa" | bc` ;zenity --info --text "angka hexa dari $dexa adalah $hexa" }
input5(){bixa=$(zenity --title "Biner-Hexa" --entry --text "Masukkan angka Biner ") load;hexa=`echo "ibase=2;obase=16; $bixa" | bc` ;zenity --info --text "angka hexa dari $bixa adalah $hexa" }
input6(){hebi=$(zenity --title "Hexa-Biner" --entry --text "Masukkan angka Hexa ")
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
load;hexa=`echo "ibase=16;obase=2; $hebi" | bc` ;zenity --info --text "angka biner dari $hebi adalah $hexa" }
input7(){okt=$(zenity --title "Desimal-Oktal" --entry --text "Masukkan angka Desimal ") load;exa=`echo "obase=8; $okt" | bc` ;zenity --info --text "angka desimal dari $okt adalah $exa" }
input8(){okd=$(zenity --title "Oktal-Desimal" --entry --text "Masukkan angka Oktal ") load;he=`echo "ibase=8; $okd" | bc` ;zenity --info --text "angka oktal dari $okd adalah $he" }
input9(){bio=$(zenity --title "Biner-Oktal" --entry --text "Masukkan angka Biner ") load;xa=`echo "ibase=2;obase=8; $bio" | bc` ;zenity --info --text "angka hexa dari $bio adalah $xa" }
input10(){obi=$(zenity --title "Oktal-Biner" --entry --text "Masukkan angka Oktal ") load;ex=`echo "ibase=8;obase=2; $obi" | bc` ;zenity --info --text "angka oktal dari $obi adalah $ex" }
input11(){ho=$(zenity --title "Hexa-Oktal" --entry --text "Masukkan angka Hexa ") load;xaa=`echo "ibase=16;obase=8; $ho" | bc` ;zenity --info --text "angka oktal dari $ho adalah $xaa" }
input12(){oh=$(zenity --title "Oktal-Hexa" --entry --text "Masukkan angka Oktal ") load;exe=`echo "ibase=8;obase=16; $oh" | bc` ;zenity --info --text "angka hexa dari $oh adalah $exe" }
satu(){zenity --info --text "Konversi Bilangan Desimal, Biner, Oktal dan Heksadesimal
Pada momen yang berbahagia ini, saya ingin coba menjabarkan tahap2 sederhana proses konversi bilangan desimal, biner, oktal dan heksadesimal.
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
Bilangan desimal adalah bilangan yang menggunakan 10 angka mulai 0 sampai 9 berturut2. Setelah angka 9, maka angka berikutnya adalah 10, 11, 12 dan seterusnya. Bilangan desimal disebut juga bilangan berbasis 10. Contoh penulisan bilangan desimal : 1710. Ingat, desimal berbasis 10, maka angka 10-lah yang menjadi subscript pada penulisan bilangan desimal.
Bilangan biner adalah bilangan yang hanya menggunakan 2 angka, yaitu 0 dan 1. Bilangan biner juga disebut bilangan berbasis 2. Setiap bilangan pada bilangan biner disebut bit, dimana 1 byte = 8 bit. Contoh penulisan : 1101112.
Bilangan oktal adalah bilangan berbasis 8, yang menggunakan angka 0 sampai 7. Contoh penulisan : 17,8.
Bilangan heksadesimal, atau bilangan heksa, atau bilangan basis 16, menggunakan 16 buah simbol, mulai dari 0 sampai 9, kemudian dilanjut dari A sampai F. Jadi, angka A sampai F merupakan simbol untuk 10 sampai 15. Contoh penulisan : C5,16."}
dua(){b=$(zenity --title "CONVERTING" --entry --text "MENU :---------------- .:: Menu ::. ------------------ 1. Konversi Biner ke Desimal 2. Konversi Desimal ke Biner 3. Konversi Hexa ke Desimal 4. Konversi Desimal ke Hexa 5. Konversi Biner ke Hexa 6. Konversi Hexa ke Biner 7. Konversi Desimal ke Oktal 8. Konversi Oktal ke Desimal 9. Konversi Biner ke Oktal 10. Konversi Oktal ke Biner 11. Konversi Hexa ke Oktal 12. Konversi Oktal ke Hexa------------------------------------------pilihan anda :")
if [ "$b" == "1" ]; then input1;elif [ "$b" == "2" ]; theninput2;elif [ "$b" == "3" ]; theninput3;elif [ "$b" == "4" ]; theninput4;elif [ "$b" == "5" ]; theninput5;elif [ "$b" == "6" ]; theninput6;elif [ "$b" == "7" ]; theninput7;elif [ "$b" == "8" ]; theninput8;elif [ "$b" == "9" ]; theninput9;elif [ "$b" == "10" ]; theninput10;elif [ "$b" == "11" ]; theninput11;elif [ "$b" == "12" ]; theninput12;elseexit 0
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
fi}awal(){loop=ywhile [ $loop != n ]docleara=$(zenity --title "Konverting Bilanagan" --width 600 --entry --text "menu :\n 1. Sekilas tentang pengkonversian bilangan 2. Konverting Bilangan \nMasukkan pilihan anda : ")case $a in1) satu ; ;;2) dua ; ;;*) bb=$(zenity --title "pilihan" --entry --text "Masukkan salahcoba lagi? y / n?")if [ $bb == y ]; thenawal;elif [ $bb == n ]; thenzenity --info --text "THANKS"exit 0;fi;;esacloop=$(zenity --title "what else" --entry --text "lanjut ke pilihan lain (y/n)")donezenity --title "END" --info --text "Terima kasih, GOODLUCK"}awal;
Output :
Apabila diklik cancel akan tampil pilihan dan pilih “n” maka akan tampil :
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
Apabila diinputkan pilihan ke “1” akan tampil :
Saat dipilih “OK” maka akan tampil pilihan what else , dimana saat kondisi memilih “n” maka akan keluar dari program dengan tampilan :
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
Kemudian langsung keluar program saat di klik “OK”. Jika saat kondisi what else tadi dipilih “y” maka akan kembali ke tampilan awal.Pada tampilan awal ketika pilihan 2 diplih maka akan tampil menu konverting :
Pada tapilan menu converting terdapat beberapa piliha pengkonversian bilangan, misalnya apabila memilih pilihan 1 adalah “Konversi Biner ke Desimal” :
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
Pada plihan 4 adalah “Konversi Desimal ke Hexadesimal” :
Pada plihan 7 adalah “Konversi Desimal ke Oktal” :
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
Pada plihan 12 adalah “Konversi Okta ke Hexa” :
Ketika diklik “OK” maka akan tampil piliha what else , apabila dipilih “y” maka akan kembali ke tampilan awal dan apabila diplih “n” maka akan tampil :
Dan akan keluar dari program.
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
v. ANALISA Pada proyek workshop shell programming dengan judul “CONVERTING BILANGAN”
secara garis besar program didalamnya adalah perintah - perintah dasar dari shell yang dipadukan dengan GUI. Perintah dasar shell yang dipakai adalah "obase=2; $desimal" digunakan untuk merubah angka desimal menjadi biner secara langsung karena "obase" merupakan fungsi yang sudah di sediakan oleh fungsi "bc". sedangkan "ibase" digunakan untuk merubah angka biner menjadi desimal secara langsung. Perintah obase sendiri terdiri dari beberapa macan perintah, antara lain untuk decimal, biner, hexadecimal dan octal. Dalam program tersebut dipadukan agar dapat mengkonversi bilangan dari biner ke decimal , decimal ke octal , hexa ke biner dan sebagainya.
Pada program menu utamanya adalah sebagai berikut :awal(){loop=ywhile [ $loop != n ]docleara=$(zenity --title "Konverting Bilanagan" --width 600 --entry --text "menu :\n 1. Pengertian tentang pengkonvertan bilangan 2. Konverting Bilangan \nMasukkan pilihan anda : ")case $a in1) satu ; ;;2) dua ; ;;
terdapat beberapa fungsi dan perintah, variabel loop=y digunakan untuk menyatakan kondisi jika pilihan adalah “y” maka akan tampil tampilan awal dari program. Case didalam program digunakkan untuk membuat beberapa kondisi keadaan dimana ada kondisi satu dan kondisi dua , saat pilihan satu dipilh maka akan muncul tampilan satu :
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
satu(){zenity --info --text "Konversi Bilangan Desimal, Biner, Oktal dan Heksadesimal . . . dan seterusnya
akan masuk dalam case pilihan satu. Apabila dienter maka akan tampil pilihan kondisi “y” dan “n” dimana saat dipilah “n” maka akan keluar dari program dengan adanya tampilan :
Tapi jika kondisi “y” dipilih maka akan kembali melooping ke awal program atau tampilan awal.
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
Pada tampilan awal ini apabila case satu dan dua tidak terpenuhi atau bukan pilihan 1 dan 2 maka jalannya program akan masuk pada kondisi :bb=$(zenity --title "pilihan" --entry --text "Masukkan salahcoba lagi? y / n?")if [ $bb == y ]; thenawal;elif [ $bb == n ]; thenzenity --info --text "THANKS"exit 0;fi;;esacloop=$(zenity --title "what else" --entry --text "lanjut ke pilihan lain (y/n)")donezenity --title "END" --info --text "Terima kasih, GOODLUCK"}awal;
dimana fungsi kondisi if elif yang menyatakn jika diinputkan “y” maka akan kembali ke awal program dan jika tidak maka akan masuk pada kondisi “n” dan akan tampil prompt GUI “masukan salah” dan menyatakan kondisi coba lagi “y” dan “n”, jika “n” maka keluar dari program dan tampil :
Jika “y” maka akan kembali ke tampilan awal tampilan. Dan saat pilihan case dua terpenuhi maka akan tampil menu “converting bilangan” :
dua(){b=$(zenity --title "CONVERTING" --entry --text "MENU :-----------------------------Menu------------------------------ 1. Konversi Biner ke Desimal 2. Konversi Desimal ke Biner 3. Konversi Hexa ke Desimal 4. Konversi Desimal ke Hexa 5. Konversi Biner ke Hexa 6. Konversi Hexa ke Biner 7. Konversi Desimal ke Oktal 8. Konversi Oktal ke Desimal 9. Konversi Biner ke Oktal 10. Konversi Oktal ke Biner 11. Konversi Hexa ke Oktal 12. Konversi Oktal ke Hexa------------------------------------------------------------------pilihan anda :")
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
Dengan berbagai pilihan konversi bilangan. Program untuk mengkonversi bilamhan sebagai berikut :
input2(){desimal=$(zenity --title "Desimal-Biner" --entry --text "Masukkan angka Desimal ") load;biner=`echo "obase=2; $desimal" | bc` ;zenity --info --text "angka biner dari $desimal adalah $biner" }
input1(){biner=$(zenity --title "Biner-Desimal" --entry --text "Masukkan angka Biner ") load;desimal=`echo "ibase=2; $biner" | bc` ;zenity --info --text "angka desimal dari $biner adalah $desimal" }
input3(){hexa=$(zenity --title "Hexa-Desimal" --entry --text "Masukkan angka Hexa ") load;desimal=`echo "ibase=16; $hexa" | bc` ;zenity --info --text "angka desimal dari $hexa adalah $desimal" }. . . .dstinput12(){oh=$(zenity --title "Oktal-Hexa" --entry --text "Masukkan angka Oktal ") load;exe=`echo "ibase=8;obase=16; $oh" | bc` ;zenity --info --text "angka hexa dari $oh adalah $exe" }
Didalam program terdapat berbagai macam kondisi printah-printah dasar pengkonversian bilangan dari printah dasar shell dimana telah diatur supaya memenuhi printah konversi yang diinginkan. Missalnya dalam mengkonversi octal ke hexa maka printah yang digunakan adalah :
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a
Raka DP 2D3 Telekomunikasi B 7211030055 Converting Bilangan
exe=`echo "ibase=8;obase=16; $oh" | bc` ;
dimana "ibase=8;obase=16; adalah printah untuk mengubah bilangan dari octal ke hexa , oh adalah nilai yang diinputkan keyboard dan $exe adalah hasil dari konversi.Program untuk tampilan GUI proses dituliskan sebagai berikut :#!/bin/bashload(){( echo "10"; sleep 1 echo "#Loading. ."; echo "60"; sleep 1 echo "#Loading. ."; echo "100"; sleep 1 echo "#Finish. ."; sleep 1) | zenity --progress \ --title="Progress" \ --text="Loading . ." \ --percentage=10 --timeout=3}
Program ini dibuat untuk memunculkan zenity proses dengan lama tampil selama tiga detik. echo "10"; sleep 1 … adalah untuk perintah tampilan dengan sleep 1 menyatakan printah timing text 1 detik sampai finish dan menampilkan GUI opsi --progess, --text menampilkan teks loading selama tiga detik selesai.
vi. KESIMPULAN
Dari program “CORVERTING BILANGAN” dapat disimpulkan bahwa : Printah-printah dasar shell dapat dimanfaatkan untuk mempermudah pengkonversian
bilangan. GUI menggunakan zenity dapat digunakan untuk menampilkan kotak dialog yang dapat
mempermudah kita dalam menjalankan program, tampilan interface dari GUI juga membuat program lebih interaktif.
EEPIS
E l e c t r o n i c E n g i n e e r i n g P o l y t e c h n i c I n s t i t u t e o f S u r a b a y a