Praktikum
8
ARRAY
A. T U J U A N 1. Menggunakan Array untuk menampilkan kumpulan data yang sejenis. 2. Menggunakan statement declare dengan opsi –a untuk mendeklarasikan array secara eksplisit. 3. Menggunakan perintah perulangan untuk mengisi element array.
B. DASAR TEORI ARRAY Array adalah kumpulan variabel dengan tipe sejenis, dimana array ini merupakan feature Bash yang cukup menarik. Array juga merupakan salah satu hal yang cukup penting dalam bahasa pemrograman, bahwa bisa dibayangkan array ini sebagai tumpukan buku - buku dimeja belajar. Inisialisasi array sebagai berikut: Array=(element1 element2 … elementN) Contoh buah=(Melon,Apel,Durian); echo ${buah[*]}; Dari contoh diatas bisa dilihat bahwa membuat tipe array di Bash begitu mudah, secara otomatis array buah diciptakan dan string Melon menempati index pertama dari array buah, perlu diketahui bahwa array di Bash dimulai dari index 0, jadi array buah mempunyai struktur seperti berikut: buah[0] berisi Melon
71
buah[1] berisi Apel buah[2] berisi Durian 0,1,2 adalah index array, berarti ada 3 elemen pada array buah, untuk menampilkan isi semua elemen array digunakan perintah subtitusi seperti pada contoh diatas, dengan index berisi "*" atau "@". dengan adanya index array tentunya user dapat mengisi array perindexnya dan menampilkan isi array sesuai dengan index yang diinginkan. Lihat contoh berikut: bulan[0]=31 bulan[1]=28 bulan[2]=31 bulan[3]=30 echo "Banyak hari bulan pebruari= ${bulan[2]} hari" cara lain yaitu dengan mendeklarasikan array secara eksplisit menggunakan statement declare. Contohnya: declare -a myarray mendeklarasikan variabel myarray sebagai array dengan opsi -a, kemudian dapat memberinya nilai baik untuk semua elemen atau hanya elemen tertentu saja dengan perintah perulangan pengisian elemen array dapat lebih dipermudah, lihat contoh : declare -a angka i=0; while [ $i -le 4 ]; do let isi=$i*2; angka[$i]=$isi; let i=$i+1; done #tampilkan semua elemen array #dengan indexnya berisi "*" atau "@" echo ${angka[*]}; Dari kedua contoh array diatas, dapat dijelaskan bahwa array dapat digunakan untuk operasi string (string operations) dan perintah subtitusi (command substitution).
72
C. PROSEDUR 1. Masuk ke sistem operasi Linux. 2. Login sebagai stD3XXYYY. 3. Gunakan variabel array dan perintah perulangan pada pemrograman shell. 4. Catatlah hasil dari setiap program pada prosedur no.3 sebagai laporan sementara.
D. PERCOBAAN 1. Penggunaan array untuk data string (jenis buah) $ vi arr1.sh #!/bin/bash buah=(Melon,Apel,Durian); echo ${buah[*]}; 2. Penggunaan array untuk data string 6 element dengan indeks 0-5 $ vi arr2.sh #!/bin/bash array=( zero one two three four five ) # Element 0 1 2 3 4 5 echo ${array[0]} echo ${array:0} echo ${array:1} echo "--------------" echo ${#array[0]} echo ${#array} echo ${#array[1]} echo ${#array[*]} echo ${#array[@]} echo "--------------" array2=( [0]="first element" [1]="second element" [3]="fourth element" ) echo echo echo echo exit
${array2[0]} ${array2[1]} ${array2[2]} ${array2[3]} 0
3. Penggunaan array untuk data string 1 element $ vi arr3.sh #!/bin/bash string=abcABC123ABCabc
73
echo echo echo echo echo echo
${string[@]} ${string[*]} ${string[0]} ${string[1]} "-----------------------" ${#string[@]}
4. Pembacaan panjang data string 1 element $ vi arr4.sh #!/bin/bash stringZ=abcABC123ABCabc echo ${#stringZ} echo `expr length $stringZ` echo `expr "$stringZ" : '.*'` 5. Pembacaan data array sub-string dan regular expression $ vi arr5.sh #!/bin/bash arrayZ=( one two three four five five ) echo "=======================" echo ${arrayZ[@]:0} echo ${arrayZ[@]:1} echo ${arrayZ[@]:1:2} echo "-----------------------" echo ${arrayZ[@]#f*r} echo ${arrayZ[@]##t*e} echo "-----------------------" echo ${arrayZ[@]%h*e} echo "-----------------------" echo ${arrayZ[@]%%t*e} 6. Pembacaan, penggantian dan penghapusan data array (Substring) $ vi arr6.sh #!/bin/bash arrayZ=( one two three four five five ) echo "=======================" echo ${arrayZ[@]/fiv/XYZ} echo ${arrayZ[@]//iv/YY} echo ${arrayZ[@]//fi/} echo ${arrayZ[@]/#fi/XY} echo ${arrayZ[@]/%ve/ZZ} echo ${arrayZ[@]/%o/XX} echo "-----------------------" 7. Pengisian array perindeks dan menampilkan isinya $ vi arr7.sh #!/bin/bash bulan[0]=31
74
bulan[1]=28 bulan[2]=31 bulan[3]=30 bulan[4]=31 bulan[5]=30 bulan[6]=31 bulan[7]=31 bulan[8]=30 bulan[9]=31 bulan[10]=30 bulan[11]=31 echo "Jml hari bulan November = ${bulan[10]} hari" 8. Mendeklarasikan array dan penggunaan perintah perulangan while $ vi arr8.sh #!/bin/bash declare -a angka i=0; while [ $i -le 4 ]; do let isi=$i*2; angka[$i]=$isi; let i=$i+1; done echo ${angka[*]}; unset angka 9. Array dan penggunaan perintah perulangan while $ vi arr9.sh #!/bin/bash MINLEN=45 while read line do echo "$line" len=${#line} if [ "$len" -lt "$MINLEN" ] then echo fi done exit 0 10. Menggunakan Expresi indeks untuk menentukan posisi data karakter $ vi arrA.sh #!/bin/bash stringZ=abcABC123ABCabc echo `expr index "$stringZ" C12` echo `expr index "$stringZ" 1c`
75
11. Perintah subtitusi $( ... ) untuk pembacaan data array $ vi arrB.sh #!/bin/bash arrayZ=( one two three four five five ) echo "=======================" newstr() { echo -n "!!!" } echo ${arrayZ[@]/%e/$(newstr)} echo "-----------------------" echo ${arrayZ[@]//*/$(newstr optional_arguments)} 12. Array kosong dan elemen kosong (tidak ada nilai elemen) $ vi arrC.sh #!/bin/bash array0=( first second third ) array1=( '' ) array2=( ) array3=( ) echo "=======================" ListArray() { echo echo "Elements in array0: ${array0[@]}" echo "Elements in array1: ${array1[@]}" echo "Elements in array2: ${array2[@]}" echo "Elements in array3: ${array3[@]}" echo "=======================" echo "Length of first element in array0 = ${#array0}" echo "Length of first element in array1 = ${#array1}" echo "Length of first element in array2 = ${#array2}" echo "Length of first element in array3 = ${#array3}" echo "=======================" echo "Number of elements in array0 = ${#array0[*]}" echo "Number of elements in array1 = ${#array1[*]}" echo "Number of elements in array2 = ${#array2[*]}" echo "Number of elements in array3 = ${#array3[*]}" }
E. Latihan 1. Buatlah program bash script untuk mencopy data pada array1 ke array2 dimana data array1 indeks 0 isinya 0, dan data array1 indeks 2 isinya adalah 2. Gunakan format array Array=(...) untuk mencopy data array. 2. Sebuah file dengan nama sample_file berisi teks di baris pertama 1 a b c dan baris keduanya 2 d e fg. Buatlah program bash scriptnya untuk
76
menghitung jumlah elemen pada array1, jika elemen arraynya adalah file tersebut (sample_file). 3. Dengan menggunakan variabel array, buatlah bash script dari running program dengan tampilan sebagai berikut: 1 1 2 12 12 23 23 32 32 44 43
3 3 4 12 16 24 24 40 33 43 46
5 5 6 14 14 24 24 31 38 44 45
6 6 8 16 16 24 32 35 33 47 47
8 8 10 9 16 16 20 24 25 30 39 40 37 46 48 48
10 17 28 38 48
11 17 26 40 48
11 20 30 39 48
12 21 30 40 48
19 28 39 64
20 32 42 41
22 30 40 52
21 32 41 54
22 32 43 56
77