Skip to main content

Misol: Bash-da Matematik Amallar va Kalkulyator

Ushbu skript Linux tizimida matematik hisob-kitoblarni qanday bajarishni ko'rsatib beradi. Nusxa olish uchun kod blokining o'ng yuqori burchagidagi tugmani bosing.

#!/bin/bash

# =====================================
# BASIC ARITHMETIC OPERATIONS
# =====================================
basic_arithmetic_demo() {
echo "=== Asosiy Matematik Amallar ==="
local num1=25
local num2=7

echo "Raqamlar: num1=$num1, num2=$num2"
echo

# $(( )) - Butun sonlar uchun eng samarali usul
echo "$(( )) usuli:"
echo " Qo'shish: $num1 + $num2 = $((num1 + num2))"
echo " Ayirish: $num1 - $num2 = $((num1 - num2))"
echo " Ko'paytirish: $num1 * $num2 = $((num1 * num2))"
echo " Bo'lish: $num1 / $num2 = $((num1 / num2))"
echo " Qoldiq: $num1 % $num2 = $((num1 % num2))"
echo " Daraja: $num1 ** 2 = $((num1 ** 2))"
echo

# expr usuli
echo "expr usuli:"
echo " Qo'shish: $(expr $num1 + $num2)"
echo " Ko'paytirish: $(expr $num1 \* $num2)"
echo " Bo'lish: $(expr $num1 / $num2)"
echo
}

# =====================================
# INCREMENT AND DECREMENT
# =====================================
increment_decrement_demo() {
echo "=== Increment va Decrement ==="
local counter=10
echo "Dastlabki qiymat: $counter"

echo "Pre-increment: $((++counter))" # Oshiradi, keyin natijani beradi
echo "Post-increment: $((counter++))" # Natijani beradi, keyin oshiradi
echo "Hozirgi qiymat: $counter"
echo
}

# =====================================
# FLOATING POINT ARITHMETIC (bc & awk)
# =====================================
floating_point_demo() {
echo "=== Floating Point (Haqiqiy sonlar) ==="
local n1=15.75
local n2=4.25

# bc (Basic Calculator) orqali hisoblash
echo "bc bilan bo'lish: $(echo "scale=2; $n1 / $n2" | bc)"

# awk orqali hisoblash
echo "awk bilan ko'paytirish: $(awk "BEGIN {print $n1 * $n2}")"
echo
}

# =====================================
# CALCULATOR IMPLEMENTATION
# =====================================
calculator_demo() {
while true; do
echo -e "\n--- ODDY KALKULYATOR ---"
echo "1. Qo'shish 2. Ayirish 3. Ko'paytirish"
echo "4. Bo'lish 5. Daraja 6. Chiqish"

read -p "Tanlov (1-6): " opt
[[ $opt == 6 ]] && { echo "Dastur tugadi."; break; }

read -p "1-son: " num1
read -p "2-son: " num2

# Raqam ekanligini tekshirish
if ! [[ $num1 =~ ^-?[0-9.]+$ ]] || ! [[ $num2 =~ ^-?[0-9.]+$ ]]; then
echo "❌ Xato: Faqat raqam kiriting!"; continue
fi

case $opt in
1) res=$(echo "$num1 + $num2" | bc -l) ;;
2) res=$(echo "$num1 - $num2" | bc -l) ;;
3) res=$(echo "$num1 * $num2" | bc -l) ;;
4)
if (( $(echo "$num2 == 0" | bc -l) )); then
res="Xato (Nolga bo'lish!)"
else
res=$(echo "scale=4; $num1 / $num2" | bc -l)
fi
;;
5) res=$(echo "$num1 ^ $num2" | bc -l) ;;
*) echo "Noto'g'ri tanlov!"; continue ;;
esac

echo -e "✅ Natija: $res"
done
}

# Funksiyalarni ishga tushirish
basic_arithmetic_demo
increment_decrement_demo
floating_point_demo
# calculator_demo # Kalkulyatorni ishlatish uchun ushbu qatorni oching