ການຄິດໄລ່ການສະແດງອອກທາງຄະນິດສາດໃນພາສາສະຄິບ Shell - ພາກ V


ທ່ານປະຊາຊົນຈະຮູ້ສຶກສະບາຍໃຈ, ເຂົ້າໃຈ Shell Scripts ແລະຂຽນໃຫ້ຄ່ອງແຄ້ວ, ຕາມຄວາມຕ້ອງການຂອງທ່ານ. ນີ້ແມ່ນບົດຂຽນສຸດທ້າຍຂອງຊຸດການສອນນີ້, ເຊິ່ງພວກເຮົາຈະໄດ້ປະຕິບັດການປະຕິບັດງານທາງຄະນິດສາດທີ່ສັບສົນເລັກນ້ອຍໂດຍໃຊ້ພາສາຂຽນ. ສີ່ບົດຂຽນສຸດທ້າຍຂອງຊຸດ Shell Scripting ເຊິ່ງເປັນແບບເກົ່າ ໆ .

<

  • ເຂົ້າໃຈ ຄຳ ແນະ ນຳ ກ່ຽວກັບການຂຽນພາສາ Linux Shell ຂັ້ນພື້ນຖານ - ສ່ວນທີ I
  • 5 ສະຄິບ Shell ສຳ ລັບ Linux ໃໝ່ ທີ່ຢາກຮຽນຮູ້ການຂຽນໂປແກຼມ Shell - ພາກທີ II
  • ການທ່ອງທ່ຽວທົ່ວໂລກຂອງ Linux BASH Scripting - ພາກທີ III
  • ລັກສະນະຄະນິດສາດຂອງການຂຽນໂປແກມ Linux Shell - ພາກທີ IV
  • ໃຫ້ເລີ່ມຕົ້ນດ້ວຍ Fibonacci Series

    ຮູບແບບຂອງຕົວເລກທີ່ແຕ່ລະຕົວເລກແມ່ນຜົນລວມຂອງສອງຕົວເລກກ່ອນ ໜ້າ. ຊຸດແມ່ນ 0, 1, 1, 2, 3, 5, 8 ……ຕາມ ຄຳ ນິຍາມ, ສອງໂຕ ທຳ ອິດໃນ ລຳ ດັບ Fibonccai ແມ່ນ 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 0 ແລະ '1' ແລະພວກເຮົາສ່ວນຫຼາຍມັກຮຽນຮູ້ການປ່ຽນແປງຂອງ Decimal ເປັນ Binary. ແນວໃດກ່ຽວກັບການຂຽນບົດຂຽນງ່າຍໆ ສຳ ລັບການປະຕິບັດງານທີ່ສັບສົນນີ້.

    #!/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

    ໝາຍ ເຫດ: ບົດຂຽນຂ້າງເທິງຍອມຮັບເອົາການປ້ອນຂໍ້ມູນເຂົ້າໃນເວລາແລ່ນເຊິ່ງແນ່ນອນວ່າມັນເປັນການຊ່ວຍເຫຼືອ.

    ດີ ຄຳ ສັ່ງທີ່ບໍ່ມີຕົວຕົນສາມາດປ່ຽນເປັນທົດສະນິຍົມເປັນຖານສອງໃນບົດຂຽນຂອງເສັ້ນດຽວ. ດໍາເນີນການ, ຢູ່ປາຍຂອງທ່ານ.

     echo "obase=2; NUM" | bc

    ທົດແທນ ‘NUM’ ດ້ວຍ ຈຳ ນວນ, ທີ່ທ່ານຕ້ອງການປ່ຽນຈາກ Decimal ເປັນ Binary. ຍົກຕົວຢ່າງ,

     echo "obase=2; 121" | bc 
    
    1111001

    ຕໍ່ໄປພວກເຮົາຈະຂຽນຄິບທີ່ເຮັດ ໜ້າ ທີ່ກົງກັນຂ້າມກັບອັກສອນຂ້າງເທິງ, ການປ່ຽນຄຸນຄ່າຖານສອງເປັນທະສະນິຍົມ.

    #!/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

    ເຊັ່ນດຽວກັນທ່ານສາມາດຂຽນການປ່ຽນໃຈເຫລື້ອມໃສຈາກ octal, hexadecimal ກັບອັດຕານິຍົມແລະກົງກັນຂ້າມກັບຕົວທ່ານເອງ. ການເຮັດໃຫ້ຜົນ ສຳ ເລັດຂອງຜົນໄດ້ຮັບຂ້າງເທິງນີ້ຢູ່ປາຍທາງໂດຍໃຊ້ ຄຳ ສັ່ງ '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

    ນັ້ນແມ່ນທັງ ໝົດ ສຳ ລັບບົດຂຽນນີ້, ແລະຊຸດຂອງບົດຂຽນ. ນີ້ແມ່ນບົດຂຽນສຸດທ້າຍຂອງ Shell Script Series ແລະມັນບໍ່ໄດ້ ໝາຍ ຄວາມວ່າຈະບໍ່ມີບົດຄວາມໃດກ່ຽວກັບພາສາ Scripting ອີກຕໍ່ໄປ, ມັນພຽງແຕ່ ໝາຍ ຄວາມວ່າການສອນແບບແກະສະຫຼັກຂອງຫອຍແມ່ນສິ້ນສຸດລົງແລະທຸກຄັ້ງທີ່ພວກເຮົາພົບຫົວຂໍ້ທີ່ ໜ້າ ສົນໃຈທີ່ຄວນຮູ້ຫລື ຄຳ ຖາມຈາກທ່ານ, ພວກເຮົາຍິນດີທີ່ຈະສືບຕໍ່ຊຸດຈາກນີ້.

    ມີສຸຂະພາບແຂງແຮງ, ຕິດຕາມແລະເຊື່ອມຕໍ່ກັບ Tecmint. ໄວໆນີ້ຂ້າພະເຈົ້າຈະມາພ້ອມກັບຫົວຂໍ້ທີ່ ໜ້າ ສົນໃຈອີກຢ່າງ ໜຶ່ງ, ພວກເຈົ້າຈະມັກອ່ານ. ແບ່ງປັນຄວາມຄິດທີ່ມີຄຸນຄ່າຂອງທ່ານໃນພາກຄໍາເຫັນ.