مسیرها
/
Go
Go
/
تمرین‌ها
/
خرید خودرو
خرید خودرو

خرید خودرو

تمرین یادگیری

مقدمه

مقایسه

در Go می‌توان اعداد را با عملگرهای رابطه‌ای و برابری زیر مقایسه کرد.

Comparison Operator
برابر ==
نابرابر !=
کوچک‌تر <
کوچک‌تر یا برابر <=
بزرگ‌تر >
بزرگ‌تر یا برابر >=

نتیجه‌ی مقایسه همیشه یک مقدار منطقی است، یعنی یا true یا false.

a := 3

a != 4 // true
a > 5  // false

عملگرهای مقایسه‌ی بالا را می‌توان برای مقایسه‌ی رشته‌ها هم به کار برد. در این حالت یک ترتیب واژه‌نامه‌ای (مانند فرهنگ لغت) اعمال می‌شود. برای مثال:

	"apple" < "banana"  // true
	"apple" > "banana"  // false

دستورهای شرطی

دستورهای شرطی در Go مانند دستورهای شرطی در زبان‌های دیگر هستند. نوع زیرین هر عملیات شرطی، نوع bool است که می‌تواند مقدار true یا false داشته باشد. دستورهای شرطی اغلب به عنوان سازوکارهای کنترل جریان برای بررسی شرط‌های مختلف به کار می‌روند.

برای بررسی یک حالت خاص می‌توان از دستور if استفاده کرد که اگر شرط زیرین true باشد، کدش را اجرا می‌کند، به این شکل:

var value string

if value == "val" {
    return "was val"
}

در موقعیت‌هایی که بیش از یک حالت درگیر است، می‌توان چندین دستور if را با استفاده از دستورهای else if و else به هم زنجیره کرد.

var number int
result := "This number is "

if number > 0 {
    result += "positive"
} else if number < 0 {
    result += "negative"
} else {
    result += "zero"
}

دستورهای شرطی می‌توانند یک دستور مقداردهی اولیه‌ی کوتاه هم داشته باشند که با آن می‌توان یک یا چند متغیر را برای دستور if مقداردهی اولیه کرد. برای مثال:

num := 7
if v := 2 * num; v > 10 {
    fmt.Println(v)
} else {
    fmt.Println(num)
}
// Output: 14

نکته: هر متغیری که در دستور مقداردهی اولیه ساخته شود، پس از پایان دستور if از حوزه‌ی دسترس خارج می‌شود.

دستورالعمل‌ها

در این تمرین قرار است کدی بنویسید که به شما در آماده‌شدن برای خرید یک وسیله‌ی نقلیه کمک کند.

سه کار پیش رو دارید: یکی تعیین اینکه به گواهینامه نیاز دارید یا نه، یکی کمک به انتخاب بین دو وسیله‌ی نقلیه و یکی تخمین زدن قیمت قابل‌قبولی که برای یک وسیله‌ی نقلیه‌ی دست‌دوم منصفانه است.

1. تعیین کنید که به گواهینامه‌ی رانندگی نیاز خواهید داشت یا نه

رانندگی با برخی از انواع وسیله‌ی نقلیه به گواهینامه‌ی رانندگی نیاز دارد. فرض کنید فقط انواع "car" و "truck" به گواهینامه نیاز دارند و از بقیه می‌توان بدون گواهینامه استفاده کرد.

تابع NeedsLicense(kind) را پیاده‌سازی کنید که نوع وسیله‌ی نقلیه را می‌گیرد و یک مقدار «منطقی» برمی‌گرداند که نشان می‌دهد آیا برای همان نوع وسیله به گواهینامه نیاز دارید یا نه.

needLicense := NeedsLicense("car")
// => true

needLicense = NeedsLicense("bike")
// => false

needLicense = NeedsLicense("truck")
// => true

2. انتخاب بین دو وسیله‌ی نقلیه‌ی بالقوه برای خرید

شما گزینه‌های وسیله‌های نقلیه‌ی موجود را بررسی می‌کنید. موفق می‌شوید آن‌ها را به دو گزینه محدود کنید، اما برای گرفتن تصمیم نهایی به کمک نیاز دارید. برای این کار، تابع ChooseVehicle(option1, option2) را پیاده‌سازی کنید که دو وسیله‌ی نقلیه را به عنوان آرگومان می‌گیرد و تصمیمی برمی‌گرداند که شامل گزینه‌ای است که در ترتیب واژه‌نامه‌ای اول می‌آید.

vehicle := ChooseVehicle("Wuling Hongguang", "Toyota Corolla")
// => "Toyota Corolla is clearly the better choice."

ChooseVehicle("Volkswagen Beetle", "Volkswagen Golf")
// => "Volkswagen Beetle is clearly the better choice."

3. محاسبه‌ی تخمینی برای قیمت یک وسیله‌ی نقلیه‌ی دست‌دوم

حالا که تصمیم‌تان را گرفته‌اید، می‌خواهید مطمئن شوید که در نمایندگی قیمت منصفانه‌ای می‌پردازید. چون می‌خواهید یک وسیله‌ی نقلیه‌ی دست‌دوم بخرید، قیمت به عمر وسیله بستگی دارد. برای یک تخمین تقریبی، فرض کنید اگر عمر وسیله کمتر از ۳ سال باشد، ۸۰٪ قیمت اصلی‌اش را دارد، یعنی همان قیمتی که وقتی کاملاً نو بود. اگر حداقل ۱۰ سال عمر داشته باشد، ۵۰٪ قیمت اصلی را دارد. اگر عمر وسیله حداقل ۳ سال ولی کمتر از ۱۰ سال باشد، ۷۰٪ قیمت اصلی را دارد.

تابع CalculateResellPrice(originalPrice, age) را پیاده‌سازی کنید که این منطق را با استفاده از if، else if و else اعمال می‌کند (اگر می‌خواهید تمرین کنید، راه‌های دیگری هم هست). این تابع قیمت اصلی و عمر وسیله‌ی نقلیه را به عنوان آرگومان می‌گیرد و قیمت تخمینی در نمایندگی را برمی‌گرداند.

CalculateResellPrice(1000, 1)
// => 800

CalculateResellPrice(1000, 5)
// => 700

CalculateResellPrice(1000, 15)
// => 500

توجه مقدار بازگشتی یک float64 است.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Go Exercism

آماده‌اید خرید خودرو را شروع کنید؟

در Exercism ثبت‌نام کنید تا Go را همراه با 34 مفهوم165 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.