Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة - آلة حاسبة بسيطة

جزء من قسم البرمجة كائنية التوجه في رحلة GO على Coddy. الدرس 11 من 107.

challenge icon

التحدي

صعب

أنشئ Calculator كاملًا باستخدام كل ما تعلمته:

  • البنية (Exported fields): عرّف Calculator باستخدام Name (string) وLastResult (float64) وHistory (int)
  • الدالة المنشئة: تُرجع NewCalculator(name string) القيمة *Calculator. إذا كان name فارغًا، فالقيمة الافتراضية هي "Unnamed"
  • مستقبِل القيمة: تُرجع GetInfo() اسم الحاسبة كسلسلة منسّقة
  • مستقبلات المؤشر: تخزّن كل من Add وSubtract وMultiply النتيجة في LastResult وتزيد History
  • Divide: مستقبِل مؤشر يُرجع (float64, string). عند القسمة على الصفر، أرجِع 0 و"Error: division by zero" دون تحديث History أو LastResult

جرّب بنفسك

package main

import "fmt"

func main() {
    var name string
    var a, b float64
    fmt.Scan(&name, &a, &b)

    calc := NewCalculator(name)

    fmt.Println(calc.GetInfo())
    fmt.Printf("History: %d\n", calc.History)

    fmt.Printf("%.0f + %.0f = %.2f\n", a, b, calc.Add(a, b))
    fmt.Printf("%.0f - %.0f = %.2f\n", a, b, calc.Subtract(a, b))
    fmt.Printf("%.0f * %.0f = %.2f\n", a, b, calc.Multiply(a, b))

    result, err := calc.Divide(a, b)
    if err != "" {
        fmt.Println(err)
    } else {
        fmt.Printf("%.0f / %.0f = %.2f\n", a, b, result)
    }

    fmt.Printf("History: %d\n", calc.History)
    fmt.Printf("Last Result: %.2f\n", calc.LastResult)
}

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم Go عبر الإنترنت