Menghitung Ekspresi Matematika dalam Bahasa Skrip Shell - Bagian V


Anda sekalian akan merasa nyaman, memahami Skrip Shell dan menulisnya dengan lancar, sesuai kebutuhan Anda. Ini adalah postingan terakhir dari seri tutorial ini, di mana kita akan melakukan Operasi Matematika yang agak rumit menggunakan bahasa skrip. Empat artikel terakhir dari seri Shell Scripting yang disusun secara kronologis.

  1. Memahami Tips Dasar Bahasa Scripting Linux Shell – Bagian I
  2. 5 Skrip Shell untuk Pemula Linux untuk Mempelajari Pemrograman Shell – Bagian II
  3. Berlayar Melalui Dunia Linux BASH Scripting – Bagian III
  4. Aspek Matematika Pemrograman Linux Shell – Bagian IV

Mari kita mulai dengan Deret Fibonacci

Pola bilangan yang setiap bilangannya merupakan penjumlahan dari dua bilangan sebelumnya. Rangkaiannya adalah 0, 1, 1, 2, 3, 5, 8…… Menurut definisi, dua angka pertama dalam barisan Fibonccai adalah 0 dan 1.

Skrip 1: Fibonacci.sh
#!/bin/bash
echo "How many numbers do you want of Fibonacci series ?" 
  read total 
  x=0 
  y=1 
  i=2 
  echo "Fibonacci Series up to $total terms :: " 
  echo "$x" 
  echo "$y" 
  while [ $i -lt $total ] 
  do 
      i=`expr $i + 1 ` 
      z=`expr $x + $y ` 
      echo "$z" 
      x=$y 
      y=$z 
  done
Contoh Keluaran
[root@tecmint ~]# chmod 755 Fibonacci.sh
[root@tecmint ~]# ./Fibonacci.sh

How many numbers do you want of Fibonacci series ? 
10 
Fibonacci Series up to 10 terms :: 
0 
1 
1 
2 
3 
5 
8 
13 
21 
34

Unduh Fibonacci.sh

Anda mengetahui fakta bahwa komputer hanya memahami Format Biner, yaitu '0' dan '1' dan sebagian besar dari kita senang mempelajari konversi Desimal ke Biner. Bagaimana kalau menulis skrip sederhana untuk operasi rumit ini.

Skrip 2: Desimal2Binary.sh
#!/bin/bash 

for ((i=32;i>=0;i--)); do 
        r=$(( 2**$i)) 
        Probablity+=( $r  ) 
done 

[[ $# -eq 0 ]] &echo -en "Decimal\t\tBinary\n" 
for input_int in $@; do 
s=0 
test ${#input_int} -gt 11 &printf "%-10s\t" "$input_int" 

        for n in ${Probablity[@]}; do 

                if [[ $input_int -lt ${n} ]]; then 
                        [[ $s = 1 ]] && printf "%d" 0 
                else 
                        printf "%d" 1 ; s=1 
                        input_int=$(( $input_int - ${n} )) 
                fi 
        done 
echo -e 
done
Contoh Keluaran
[root@tecmint ~]# chmod 755 Decimal2Binary.sh
[root@tecmint ~]# ./Decimal2Binary.sh 1121

Decimal		Binary 
1121      	10001100001

Catatan: Skrip di atas menerima Input pada waktu proses, yang jelas merupakan bantuan.

Unduh Desimal2Binary.sh

Ya, perintah 'bc' bawaan dapat mengubah desimal menjadi biner dalam skrip satu baris. Jalankan, di terminal Anda.

[root@tecmint ~]# echo "obase=2; NUM" | bc

Ganti 'NUM' dengan angka yang ingin Anda konversi dari Desimal ke Biner. Misalnya,

[root@tecmint ~]# echo "obase=2; 121" | bc 

1111001

Selanjutnya kita akan menulis skrip yang fungsinya berlawanan dengan skrip di atas, Mengonversi Nilai Biner ke Desimal.

Skrip 3: Binary2Decimal.sh
#!/bin/bash 
echo "Enter a number :" 
read Binary 
if [ $Binary -eq 0 ] 
then 
echo "Enter a valid number " 
else 
while [ $Binary -ne 0 ] 
do 
Bnumber=$Binary 
Decimal=0 
power=1 
while [ $Binary -ne 0 ] 
do 
rem=$(expr $Binary % 10 ) 
Decimal=$((Decimal+(rem*power))) 
power=$((power*2)) 
Binary=$(expr $Binary / 10) 
done 
echo  " $Decimal" 
done 
fi
Contoh Keluaran
[root@tecmint ~]# chmod 755 Binary2Decimal.sh
[root@tecmint ~]# ./Binary2Decimal.sh

Enter a number : 
11 
3

Catatan: Fungsi di atas dapat dilakukan di terminal menggunakan perintah 'bc' sebagai.

[root@tecmint ~]# echo "ibase=2; BINARY" | bc

Ganti 'BINARY' dengan bilangan Biner, yaitu,

[root@tecmint ~]# echo "ibase=2; 11010101" | bc 

213

Unduh Binary2Decimal.sh

Demikian pula, Anda dapat menulis sendiri konversi dari oktal, heksadesimal ke desimal dan sebaliknya. Mencapai hasil di atas di terminal menggunakan perintah 'bc' adalah.

Desimal ke Oktal
[root@tecmint ~]# echo "obase=8; Decimal" | bc
Desimal ke Heksadesimal
[root@tecmint ~]# echo "obase=16; Decimal" | bc
Oktal ke Desimal
[root@tecmint ~]# echo "ibase=8; Octal" | bc
Heksadesimal ke Desimal
[root@tecmint ~]# echo "ibase=16; Hexadecimal" | bc
Biner ke Oktal
[root@tecmint ~]# echo "ibase=2;obase=8 Binary" | bc

Beberapa tes Numerik Umum yang digunakan dalam bahasa skrip shell dengan deskripsi adalah.

Test : INTEGER1 -eq INTEGER2
Meaning: INTEGER1 is equal to INTEGER2
Test : INTEGER1 -ge INTEGER2
Meaning: INTEGER1 is greater than or equal to INTEGER2
Test: INTEGER1 -gt INTEGER2
Meaning: INTEGER1 is greater than INTEGER2
Test:INTEGER1 -le INTEGER2
Meaning: INTEGER1 is less than or equal to INTEGER2
Test: INTEGER1 -lt INTEGER2
Meaning: INTEGER1 is less than INTEGER2
Test: INTEGER1 -ne INTEGER2
Meaning: INTEGER1 is not equal to INTEGER2

Sekian untuk artikel ini, dan seri artikelnya. Ini adalah artikel terakhir dari Seri Skrip Shell dan bukan berarti artikel tentang bahasa Scripting tidak akan ada lagi di sini, ini hanya berarti tutorial skrip shell telah selesai dan kapan pun kami menemukan topik menarik yang perlu diketahui atau pertanyaan dari kalian, kami akan dengan senang hati melanjutkan rangkaiannya dari sini.

Tetap sehat, ikuti perkembangannya, dan terhubung dengan Tecmint. Segera saya akan hadir dengan topik menarik lainnya, kalian pasti suka membaca. Bagikan pemikiran berharga Anda di Bagian Komentar.