پروژه: ماشین‌حساب

پروژه عملی: ساخت ماشین‌حساب کامل با توابع، struct، خطاها و switch.

پروژه ۱: ماشین‌حساب

در این پروژه همه آموخته‌هایمان را کنار هم می‌گذاریم: توابع، مدیریت خطا، switch، struct و حلقه‌ها.

نیازمندی‌ها

  1. چهار عمل اصلی: جمع، تفریق، ضرب، تقسیم
  2. مدیریت خطای تقسیم بر صفر
  3. عملگر توان و باقیمانده
  4. تابع calculate با الگوی (result, error)

طراحی

calculate(a float64, op string, b float64) (float64, error)

مثال:
calculate(10, "+", 5)   ← 15, nil
calculate(10, "/", 0)   ← 0, error!

پیاده‌سازی گام‌به‌گام

گام ۱: تابع اصلی با مدیریت خطا

func calculate(a float64, op string, b float64) (float64, error) {
    switch op {
    case "+":
        return a + b, nil
    case "-":
        return a - b, nil
    case "*":
        return a * b, nil
    case "/":
        if b == 0 {
            return 0, fmt.Errorf("تقسیم بر صفر!")
        }
        return a / b, nil
    case "%":
        return math.Mod(a, b), nil
    case "^":
        return math.Pow(a, b), nil
    default:
        return 0, fmt.Errorf("عملگر ناشناخته: %s", op)
    }
}

گام ۲: تاریخچه با Slice

type History struct {
    Expression string
    Result     float64
}

var history []History

history = append(history, History{
    Expression: "10 + 5",
    Result:     15,
})

گام ۳: نمایش خروجی قالب‌بندی‌شده

fmt.Printf("%g %s %g = %g\n", a, op, b, result)

نکات آموزشی این پروژه

پیشنهاد توسعه: عملگرهای بیشتر (جذر، لگاریتم)، تاریخچه با Map، پشتیبانی از پرانتز!

این مبحث بخشی از دوره آموزش کامل گو است.

ابزارهای مرتبط