ഷെൽ സ്ക്രിപ്റ്റിംഗ് ഭാഷയിലെ ഗണിതശാസ്ത്ര പദപ്രയോഗങ്ങൾ കണക്കാക്കുന്നു - ഭാഗം V


നിങ്ങളുടെ ആവശ്യാനുസരണം ഷെൽ സ്uക്രിപ്റ്റുകൾ മനസ്സിലാക്കുകയും അവ ഒഴുക്കോടെ എഴുതുകയും ചെയ്യുന്നതിൽ നിങ്ങൾക്ക് സുഖം തോന്നും. ഈ ട്യൂട്ടോറിയൽ സീരീസിന്റെ അവസാന പോസ്റ്റാണിത്, ഇവിടെ ഞങ്ങൾ സ്ക്രിപ്റ്റിംഗ് ഭാഷ ഉപയോഗിച്ച് കുറച്ച് സങ്കീർണ്ണമായ ഗണിത പ്രവർത്തനങ്ങൾ നടത്തും. ഷെൽ സ്uക്രിപ്റ്റിംഗ് സീരീസിന്റെ അവസാന നാല് ലേഖനങ്ങൾ കാലക്രമത്തിൽ ആണ്.

  1. അടിസ്ഥാന ലിനക്സ് ഷെൽ സ്ക്രിപ്റ്റിംഗ് ഭാഷാ നുറുങ്ങുകൾ മനസ്സിലാക്കുക - ഭാഗം I
  2. ഷെൽ പ്രോഗ്രാമിംഗ് പഠിക്കാൻ Linux നുള്ള 5 ഷെൽ സ്ക്രിപ്റ്റുകൾ - ഭാഗം II
  3. ലിനക്സ് ബാഷ് സ്ക്രിപ്റ്റിംഗിന്റെ ലോകത്തിലൂടെയുള്ള യാത്ര - ഭാഗം III
  4. ലിനക്സ് ഷെൽ പ്രോഗ്രാമിംഗിന്റെ ഗണിതശാസ്ത്ര വശം - ഭാഗം IV

ഫിബൊനാച്ചി സീരീസിൽ നിന്ന് തുടങ്ങാം

ഓരോ സംഖ്യയും മുമ്പുള്ള രണ്ട് സംഖ്യകളുടെ ആകെത്തുകയായ സംഖ്യകളുടെ ഒരു പാറ്റേൺ. പരമ്പര 0, 1, 1, 2, 3, 5, 8 ആണ്...... നിർവചനം അനുസരിച്ച്, ഫിബോൺകായ് ശ്രേണിയിലെ ആദ്യത്തെ രണ്ട് സംഖ്യകൾ 0 ഉം 1 ഉം ആണ്.

#!/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
 chmod 755 Fibonacci.sh
 ./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

കമ്പ്യൂട്ടറിന് ബൈനറി ഫോർമാറ്റിൽ മാത്രമേ മനസ്സിലാകൂ എന്ന വസ്തുത നിങ്ങൾക്ക് പരിചിതമാണ്, അതായത്, '0', '1', ഡെസിമലിനെ ബൈനറിയിലേക്ക് മാറ്റുന്നത് പഠിക്കുന്നത് ഞങ്ങളിൽ ഭൂരിഭാഗവും ആസ്വദിച്ചു. ഈ സങ്കീർണ്ണമായ പ്രവർത്തനത്തിന് ലളിതമായ ഒരു സ്ക്രിപ്റ്റ് എങ്ങനെ എഴുതാം.

#!/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 [email ; 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
 chmod 755 Decimal2Binary.sh
 ./Decimal2Binary.sh 1121

Decimal		Binary 
1121      	10001100001

ശ്രദ്ധിക്കുക: മുകളിലെ സ്ക്രിപ്റ്റ് റൺ ടൈമിൽ ഇൻപുട്ട് സ്വീകരിക്കുന്നു, ഇത് വ്യക്തമായും ഒരു സഹായമാണ്.

ഇൻബിൽറ്റ് 'bc' കമാൻഡിന് സിംഗിൾ ലൈനിന്റെ ഒരു സ്ക്രിപ്റ്റിൽ ഒരു ദശാംശത്തെ ബൈനറിയിലേക്ക് പരിവർത്തനം ചെയ്യാൻ കഴിയും. നിങ്ങളുടെ ടെർമിനലിൽ ഓടുക.

 echo "obase=2; NUM" | bc

നിങ്ങൾ ദശാംശത്തിൽ നിന്ന് ബൈനറിയിലേക്ക് പരിവർത്തനം ചെയ്യാൻ ആഗ്രഹിക്കുന്ന നമ്പർ ഉപയോഗിച്ച് 'NUM' മാറ്റിസ്ഥാപിക്കുക. ഉദാഹരണത്തിന്,

 echo "obase=2; 121" | bc 

1111001

ബൈനറി മൂല്യങ്ങളെ ദശാംശത്തിലേക്ക് പരിവർത്തനം ചെയ്യുന്ന, മുകളിലുള്ള സ്uക്രിപ്uറ്റിന് നേരെ വിപരീതമായി പ്രവർത്തിക്കുന്ന ഒരു സ്uക്രിപ്റ്റ് ഞങ്ങൾ അടുത്തതായി എഴുതുന്നു.

#!/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
 chmod 755 Binary2Decimal.sh
 ./Binary2Decimal.sh

Enter a number : 
11 
3

കുറിപ്പ്: മുകളിലുള്ള പ്രവർത്തനം ടെർമിനലിൽ 'bc' കമാൻഡ് ഉപയോഗിച്ച് നടപ്പിലാക്കാൻ കഴിയും.

 echo "ibase=2; BINARY" | bc

ബൈനറി നമ്പർ ഉപയോഗിച്ച് 'BINARY' മാറ്റിസ്ഥാപിക്കുക, അതായത്.

 echo "ibase=2; 11010101" | bc 

213

അതുപോലെ നിങ്ങൾക്ക് ഒക്ടൽ, ഹെക്സാഡെസിമലിൽ നിന്ന് ദശാംശത്തിലേക്കും തിരിച്ചും നിങ്ങൾക്ക് പരിവർത്തനം എഴുതാം. 'bc' കമാൻഡ് ഉപയോഗിച്ച് ടെർമിനലിൽ മുകളിലുള്ള ഫലം കൈവരിക്കുന്നത്.

 echo "obase=8; Decimal" | bc
 echo "obase=16; Decimal" | bc
 echo "ibase=8; Octal" | bc
 echo "ibase=16; Hexadecimal" | bc
 echo "ibase=2;obase=8 Binary" | bc

വിവരണത്തോടുകൂടിയ ഷെൽ സ്ക്രിപ്റ്റിംഗ് ഭാഷയിൽ ഉപയോഗിക്കുന്ന ചില സാധാരണ സംഖ്യാ പരിശോധനകൾ.

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

ഈ ലേഖനത്തിനും ലേഖന പരമ്പരയ്ക്കും അത്രയേയുള്ളൂ. ഇത് ഷെൽ സ്uക്രിപ്റ്റ് സീരീസിന്റെ അവസാന ലേഖനമാണ്, സ്uക്രിപ്റ്റിംഗ് ഭാഷയെക്കുറിച്ചുള്ള ഒരു ലേഖനവും ഇവിടെ ഉണ്ടാകില്ല എന്നല്ല ഇതിനർത്ഥം, ഷെൽ സ്uക്രിപ്റ്റിംഗ് ട്യൂട്ടോറിയൽ അവസാനിച്ചു എന്നതിനർത്ഥം, ഞങ്ങൾ അറിയാൻ യോഗ്യമായ ഒരു രസകരമായ വിഷയം കണ്ടെത്തുമ്പോഴോ നിങ്ങളിൽ നിന്ന് ഒരു ചോദ്യം കണ്ടെത്തുമ്പോഴോ, ഇവിടെ നിന്ന് പരമ്പര തുടരുന്നതിൽ ഞങ്ങൾക്ക് സന്തോഷമുണ്ട്.

ആരോഗ്യവാനായിരിക്കുക, ട്യൂൺ ചെയ്യുക, Tecmint-ലേക്ക് കണക്റ്റ് ചെയ്യുക. താമസിയാതെ ഞാൻ മറ്റൊരു രസകരമായ വിഷയവുമായി വരും, നിങ്ങൾ വായിക്കാൻ ഇഷ്ടപ്പെടുന്നു. നിങ്ങളുടെ വിലയേറിയ ചിന്തകൾ കമന്റ് സെക്ഷനിൽ പങ്കുവെക്കുക.