محاسبات پیشرفته در اسکریپت‌های Shell – بخش پنجم پرینت


## 📚 محاسبات پیشرفته در اسکریپت‌های Shell – بخش پنجم

### 🔢 محاسبه دنباله فیبوناچی (Fibonacci)

این اسکریپت به‌صورت پویا **عدد nام** از دنباله فیبوناچی را محاسبه و نمایش می‌دهد:

```bash
x=0; y=1
echo "$x"
echo "$y"
i=2
while [ $i -lt $total ]; do
z=$((x + y))
echo "$z"
x=$y; y=$z
i=$((i + 1))
done
```

این روش، جمع دو عدد قبلی را تا n‌م محاسبه می‌کند ([tecmint.com][1]).

---

### 🔄 تبدیل بین مبناهای عددی

#### ✅ تبدیل دودویی → ده‌دهی

```bash
while [ $Binary -ne 0 ]; do
digit=$((Binary % 10))
Decimal=$((Decimal + digit * power))
power=$((power * 2))
Binary=$((Binary / 10))
done
echo "Decimal Value: $Decimal"
```

یا به‌سادگی:

```bash
echo "ibase=2; 11010101" | bc
```

ابزار `bc` به‌صورت مستقیم و ساده تبدیل مبنا را انجام می‌دهد ([tecmint.com][1]).

---

### 🛠 تبدیل بین مبناهای دیگر با `bc`

چند نمونه:

```
echo "obase=8; 123" | bc # ده‌دهی → هشت‌دهی
echo "obase=16; 123" | bc # ده‌دهی → شانزده‌دهی
echo "ibase=8; 173" | bc # هشت‌دهی → ده‌دهی
echo "ibase=16; 7B" | bc # شانزده‌دهی → ده‌دهی
echo "ibase=2; obase=8; 101101" | bc # دودویی → هشت‌دهی
```

این ابزار توانایی تبدیل بین مبناهای مختلف را با ترکیب `ibase` و `obase` فراهم می‌نماید ([appservgrid.com][2]).

---

### 🔍 مقایسه‌ی عددی (`Numeric Tests`)

برای مقایسه اعداد در شرایط شرطی Bash از دستورات زیر استفاده کنید:

| فرمان | توضیح |
| ----- | -------------------- |
| `-eq` | برابر است |
| `-ne` | نابرابر است |
| `-gt` | بزرگ‌تر است |
| `-lt` | کوچک‌تر است |
| `-ge` | بزرگ‌تر یا مساوی است |
| `-le` | کوچک‌تر یا مساوی است |

مثال:

```bash
if [ "$a" -gt "$b" ]; then
echo "a بزرگ‌تر از b است."
fi
```

([linkedin.com][3], [tecmint.com][1])

---

## 🧭 نتیجه‌گیری

در این بخش با سه موضوع مهم آشنا شدیم:

1. **محاسبه دنباله فیبوناچی** با حلقه و عملیات جبری در Bash
2. **تبدیل مبناهای عددی** (دودویی، هشت‌دهی، ده‌دهی، شانزده‌دهی) با استفاده از `while` و `bc`
3. **استفاده از تست‌های شرطی برای مقایسه عددی**

این مباحث، پایه‌ای جهت برداشتن گام‌های بزرگ‌تر در برنامه‌نویسی شل محسوب می‌شوند. دانستن آن‌ها، به شما قدرت ایجاد **اسکریپت‌های ریاضی و الگوریتمی** را می‌دهد.

 


آیا این پاسخ به شما کمک کرد؟

  • 0
« برگشت