1. Trước khi bạn bắt đầu
Bạn đã rất nỗ lực để học hỏi kiến thức cơ bản về cách lập trình bằng Kotlin. Giờ đây, bạn đã có thể vận dụng kiến thức đã học vào thực tế.
Các bài tập này kiểm tra mức độ hiểu biết của bạn về những khái niệm mà bạn đã học. Các bài tập này được sắp xếp theo chủ đề, xoay quanh các trường hợp sử dụng thực tế mà có thể bạn đã gặp phải trước đây.
Hãy làm theo hướng dẫn để tìm giải pháp cho từng vấn đề. Nếu bạn gặp khó khăn, một số bài tập sẽ cung cấp gợi ý để trợ giúp bạn. Mã giải pháp sẽ xuất hiện ở phần cuối bài tập. Tuy nhiên, bạn nên giải bài tập trước khi kiểm tra đáp án.
Hãy xem các giải pháp như một cách để giải quyết vấn đề và tuỳ ý thử nghiệm. Bạn có thể giải một số bài tập theo nhiều cách, đồng thời sử dụng các tên khác nhau cho các hàm và biến.
Giải quyết các vấn đề theo tốc độ mà bạn cảm thấy thoải mái. Thời lượng để hoàn thành bài tập sẽ được nêu rõ, nhưng bạn không cần phải tuân thủ vì đó chỉ là thông tin ước tính. Bạn nên tận dụng thời gian cần thiết để giải quyết từng vấn đề một cách cẩn thận.
Bạn nên sử dụng Kotlin Playground để giải các bài tập này.
Điều kiện tiên quyết
- Thông thạo Kotlin Playground
- Có khả năng xác định và gọi hàm
- Có kiến thức về các loại dữ liệu Kotlin cơ bản
- Có kiến thức về biến có thể thay đổi và không thể thay đổi
- Có kiến thức về hàm
println()
- Đã hoàn thành các lớp học lập trình Chương trình đầu tiên của bạn trong Kotlin, Tạo và sử dụng các biến trong Kotlin, Tạo và sử dụng các hàm trong Kotlin
Bạn cần có
- Một chiếc máy tính có kết nối Internet và trình duyệt web
2. In thông báo
Chia sẻ với bạn bè về những kiến thức bạn đã học được trong lộ trình này.
- Bạn có thể viết hàm
main()
in các thông báo này trên 4 dòng riêng biệt không?
Use the val keyword when the value doesn't change. Use the var keyword when the value can change. When you define a function, you define the parameters that can be passed to it. When you call a function, you pass arguments for the parameters.
3. Sửa lỗi biên dịch
Chương trình này in thông báo để báo cho người dùng rằng họ đã nhận được tin nhắn trò chuyện từ một người bạn.
fun main() {
println("New chat message from a friend'}
}
- Bạn có thể tìm ra căn nguyên của các lỗi biên dịch trong chương trình này và khắc phục chúng không?
- Mã này có sử dụng các ký hiệu phù hợp để cho biết phần mở và đóng của đối số chuỗi và hàm không?
Gợi ý: Bạn có thể dùng Kotlin Playground để chạy mã và xem các lỗi biên dịch.
Sau khi bạn sửa lỗi, chương trình sẽ biên dịch mà không bị lỗi và in kết quả này:
New chat message from a friend
4. Mẫu chuỗi
Chương trình này thông báo cho người dùng về chương trình khuyến mãi sắp tới dành cho một mặt hàng cụ thể. Chương trình có một mẫu chuỗi dựa trên biến discountPercentage
để áp dụng chiết khấu theo phần trăm và biến item
cho mặt hàng đang giảm giá. Tuy nhiên, vẫn có lỗi biên dịch trong mã.
fun main() {
val discountPercentage: Int = 0
val offer: String = ""
val item = "Google Chromecast"
discountPercentage = 20
offer = "Sale - Up to $discountPercentage% discount on $item! Hurry up!"
println(offer)
}
- Bạn có thể tìm ra căn nguyên của lỗi và khắc phục chúng không?
- Bạn có thể xác định kết quả của chương trình này trước khi chạy mã trong Kotlin Playground không?
Gợi ý: Bạn có thể gán lại một giá trị cho biến chỉ đọc không?
Sau khi bạn sửa lỗi, chương trình sẽ biên dịch mà không bị lỗi và in kết quả này:
Sale - Up to 20% discount on Google Chromecast! Hurry up!
5. Ghép chuỗi
Chương trình này hiển thị tổng số người tham dự bữa tiệc. Có người lớn và trẻ em tại bữa tiệc. Biến numberOfAdults
chứa số người lớn và biến numberOfKids
chứa số trẻ em tham dự bữa tiệc.
fun main() {
val numberOfAdults = "20"
val numberOfKids = "30"
val total = numberOfAdults + numberOfKids
println("The total party size is: $total")
}
Bước 1
- Bạn có thể xác định kết quả của chương trình này trước khi chạy mã trong Kotlin Playground không?
Sau khi bạn xác định kết quả, hãy chạy mã trong Kotlin Playground rồi kiểm tra xem kết quả của bạn có khớp với kết quả hiển thị hay không.
Gợi ý: Điều gì xảy ra khi bạn sử dụng toán tử +
trên 2 chuỗi?
Bước 2
Mã này hoạt động và in một số kết quả, nhưng kết quả không cho biết tổng số người tham dự bữa tiệc.
- Bạn có tìm thấy vấn đề trong mã và khắc phục vấn đề để in kết quả này không?
The total party size is: 50
6. Định dạng thông báo
Chương trình này hiển thị tổng tiền lương mà một nhân viên nhận được trong tháng này. Tổng tiền lương được chia thành 2 phần: biến baseSalary
là số tiền nhân viên nhận được hằng tháng và biến bonusAmount
là tiền thưởng tặng thêm cho nhân viên.
fun main() {
val baseSalary = 5000
val bonusAmount = 1000
val totalSalary = "$baseSalary + $bonusAmount"
println("Congratulations for your bonus! You will receive a total of $totalSalary (additional bonus).")
}
- Bạn có thể tìm ra kết quả của mã này trước khi chạy mã trong Kotlin Playground không?
- Khi bạn chạy mã trong Kotlin Playground, mã này có in ra kết quả mà bạn mong đợi không?
7. Triển khai các phép toán cơ bản
Trong bài tập này, bạn sẽ viết một chương trình thực hiện các phép toán cơ bản và in kết quả.
Bước 1
Hàm main()
này có một lỗi biên dịch:
fun main() {
val firstNumber = 10
val secondNumber = 5
println("$firstNumber + $secondNumber = $result")
}
- Bạn có thể khắc phục lỗi để chương trình in ra kết quả này không?
10 + 5 = 15
Bước 2
Mã này hoạt động, nhưng logic để thêm 2 số nằm trong biến kết quả, khiến mã của bạn ít linh hoạt hơn để sử dụng lại. Thay vào đó, bạn có thể trích xuất phép cộng vào hàm add()
để có thể sử dụng lại mã. Để thực hiện việc này, hãy cập nhật mã bên dưới cho mã của bạn. Lưu ý rằng mã này hiện có val
mới tên là thirdNumber
và in kết quả của biến mới này bằng firstNumber
.
fun main() {
val firstNumber = 10
val secondNumber = 5
val thirdNumber = 8
val result = add(firstNumber, secondNumber)
val anotherResult = add(firstNumber, thirdNumber)
println("$firstNumber + $secondNumber = $result")
println("$firstNumber + $thirdNumber = $anotherResult")
}
// Define add() function below this line
- Bạn có thể xác định hàm
add()
để chương trình in ra kết quả này không?
10 + 5 = 15 10 + 8 = 18
Bước 3
Bây giờ, bạn đã có một hàm có thể sử dụng lại để cộng 2 số.
- Bạn có thể triển khai hàm
subtract()
giống như cách bạn triển khai hàmadd()
không? Ngoài ra hãy sửa đổi hàmmain()
để sử dụng hàmsubtract()
, nhờ đó bạn có thể xác minh việc hàm này có hoạt động như mong đợi không.
Gợi ý: Hãy nghĩ về sự khác biệt giữa phép cộng, phép trừ và các phép toán khác. Hãy bắt đầu xử lý mã giải pháp từ đó.
8. Tham số mặc định
Gmail có tính năng gửi thông báo cho người dùng bất cứ khi nào họ cố gắng đăng nhập trên một thiết bị mới.
Trong bài tập này, bạn sẽ viết một chương trình hiển thị thông báo cho người dùng bằng mẫu thông báo sau:
There's a new sign-in request on operatingSystem for your Google Account emailId.
Bạn cần triển khai một hàm chấp nhận tham số operatingSystem
và tham số emailId
, tạo một thông báo theo định dạng cho sẵn, đồng thời trả về thông báo đó.
Ví dụ: nếu hàm được gọi bằng "Chrome OS
" đối với operatingSystem
và "sample@gmail.com
" đối với emailId
, thì hàm phải trả về chuỗi sau:
There's a new sign-in request on Chrome OS for your Google Account sample@gmail.com.
Bước 1
- Bạn có thể triển khai hàm
displayAlertMessage()
() trong chương trình này để in ra kết quả hiển thị không?
fun main() {
val operatingSystem = "Chrome OS"
val emailId = "sample@gmail.com"
println(displayAlertMessage(operatingSystem, emailId))
}
// Define your displayAlertMessage() below this line.
- Chương trình của bạn có in ra kết quả này không?
There's a new sign-in request on Chrome OS for your Google Account sample@gmail.com.
Bước 2
Xuất sắc! Bạn đã hiển thị thông báo. Tuy nhiên, trong một số trường hợp, bạn sẽ thấy rằng mình không thể xác định hệ điều hành của người dùng. Trong những trường hợp như vậy, bạn cần chỉ định tên hệ điều hành là Unknown OS
. Bạn có thể tối ưu hoá mã nhiều hơn nữa để không cần phải truyền đối số Unknown OS
mỗi khi hàm được gọi.
- Bạn có thể tìm cách tối ưu hoá mã bằng thông tin này để in ra kết quả này không?
There's a new sign-in request on Unknown OS for your Google Account user_one@gmail.com. There's a new sign-in request on Windows for your Google Account user_two@gmail.com. There's a new sign-in request on Mac OS for your Google Account user_three@gmail.com.
- Để in thông báo ở trên, hãy thay thế cách triển khai hàm
main()
bằng thông báo sau:
fun main() {
val firstUserEmailId = "user_one@gmail.com"
// The following line of code assumes that you named your parameter as emailId.
// If you named it differently, feel free to update the name.
println(displayAlertMessage(emailId = firstUserEmailId))
println()
val secondUserOperatingSystem = "Windows"
val secondUserEmailId = "user_two@gmail.com"
println(displayAlertMessage(secondUserOperatingSystem, secondUserEmailId))
println()
val thirdUserOperatingSystem = "Mac OS"
val thirdUserEmailId = "user_three@gmail.com"
println(displayAlertMessage(thirdUserOperatingSystem, thirdUserEmailId))
println()
}
9. Máy đếm bước
Máy đếm bước là thiết bị điện tử đếm số bước đã thực hiện. Ngày nay, hầu hết các loại điện thoại di động, đồng hồ thông minh và thiết bị tập thể dục đều tích hợp sẵn máy đếm bước. Ứng dụng sức khoẻ và thể dục dùng máy đếm bước tích hợp sẵn để tính số bước đã thực hiện. Hàm này tính lượng calo mà người dùng đốt cháy dựa trên số bước của người dùng.
- Dựa trên các phương pháp hay nhất, bạn có thể đổi tên các hàm, tham số hàm và biến trong chương trình này không?
fun main() {
val Steps = 4000
val caloriesBurned = PEDOMETERstepsTOcalories(Steps);
println("Walking $Steps steps burns $caloriesBurned calories")
}
fun PEDOMETERstepsTOcalories(NumberOFStepS: Int): Double {
val CaloriesBURNEDforEachStep = 0.04
val TotalCALORIESburned = NumberOFStepS * CaloriesBURNEDforEachStep
return TotalCALORIESburned
}
10. So sánh 2 số
Các loại điện thoại di động hiện đại có tích hợp sẵn tính năng theo dõi thời gian sử dụng thiết bị hoặc thời gian bạn sử dụng điện thoại mỗi ngày.
Trong bài tập này, bạn sẽ triển khai một hàm so sánh thời gian (tính bằng phút) mà bạn đã sử dụng điện thoại trong hôm nay với thời gian sử dụng vào ngày hôm qua. Hàm này chấp nhận 2 tham số số nguyên và trả về một giá trị boolean.
Tham số đầu tiên chứa số phút bạn đã sử dụng điện thoại trong hôm nay và tham số thứ hai chứa số phút bạn đã sử dụng điện thoại vào hôm qua. Hàm sẽ trả về giá trị true
nếu thời gian bạn sử dụng điện thoại hôm nay nhiều hơn so với hôm qua. Nếu không, hàm này sẽ trả về giá trị false
.
Ví dụ: nếu bạn đã gọi hàm chứa các đối số có tên như sau:
timeSpentToday = 300
vàtimeSpentYesterday = 250
, hàm sẽ trả về giá trịtrue
.timeSpentToday = 300
vàtimeSpentYesterday = 300
, hàm sẽ trả về giá trịfalse
.timeSpentToday = 200
vàtimeSpentYesterday = 220
, hàm sẽ trả về giá trịfalse
.
Gợi ý: Toán tử so sánh >
sẽ trả về giá trị true
nếu giá trị trước toán tử lớn hơn giá trị sau toán tử. Nếu không, toán tử này sẽ trả về giá trị false
.
11. Di chuyển mã trùng lặp vào một hàm
Chương trình này hiển thị thông tin thời tiết của nhiều thành phố. Thông tin này bao gồm tên thành phố, nhiệt độ cao và thấp trong ngày, khả năng có mưa.
fun main() {
println("City: Ankara")
println("Low temperature: 27, High temperature: 31")
println("Chance of rain: 82%")
println()
println("City: Tokyo")
println("Low temperature: 32, High temperature: 36")
println("Chance of rain: 10%")
println()
println("City: Cape Town")
println("Low temperature: 59, High temperature: 64")
println("Chance of rain: 2%")
println()
println("City: Guatemala City")
println("Low temperature: 50, High temperature: 55")
println("Chance of rain: 7%")
println()
}
Có nhiều mục tương tự nhau trong mã này in thông tin thời tiết của từng thành phố. Ví dụ: có những cụm từ lặp lại nhiều lần, chẳng hạn như "City:"
và "Low temperature:"
. Việc lặp lại mã tương tự sẽ gây ra rủi ro về lỗi trong chương trình của bạn. Bạn có thể mắc lỗi chính tả hoặc quên thông tin thời tiết của một thành phố trong số đó.
- Bạn có thể tạo một hàm in thông tin thời tiết của một thành phố để giảm tình trạng lặp lại trong hàm
main()
rồi làm tương tự cho các thành phố còn lại không? - Bạn có thể cập nhật hàm
main()
để gọi hàm bạn đã tạo cho mỗi thành phố và truyền vào thông tin thời tiết thích hợp làm đối số không?
12. Mã giải pháp
In thông báo
Giải pháp này dùng hàm println()
để in thông báo trên mỗi dòng.
fun main() {
println("Use the val keyword when the value doesn't change.")
println("Use the var keyword when the value can change.")
println("When you define a function, you define the parameters that can be passed to it.")
println("When you call a function, you pass arguments for the parameters.")
}
Sửa lỗi biên dịch
Mã này có 2 lỗi biên dịch:
- Chuỗi phải kết thúc bằng một dấu ngoặc kép thay vì một dấu ngoặc đơn.
- Đối số hàm phải kết thúc bằng dấu ngoặc đơn thay vì dấu ngoặc nhọn.
fun main() {
println("New chat message from a friend")
}
Mẫu chuỗi
Lỗi biên dịch là kết quả của việc chỉ định biến discountPercentage
và offer
chỉ đọc cho các giá trị mới; bài tập này không được phép.
fun main() {
val discountPercentage = 20
val item = "Google Chromecast"
val offer = "Sale - Up to $discountPercentage% discount off $item! Hurry Up!"
println(offer)
}
Thay vào đó, bạn có thể khai báo số nguyên discountPercentage
và chuỗi offer
bằng từ khoá var
. Tuy nhiên, giá trị của những biến này không thể thay đổi được trong ngữ cảnh của chương trình, vì vậy, bạn có thể dùng từ khoá val
.
Ghép chuỗi
Bước 1
Chương trình in kết quả này:
The total party size is: 2030
Đây là một câu hỏi mẹo. Khi sử dụng toán tử +
trên String
, giá trị này sẽ tạo ra một chuỗi nối. Số nguyên được đặt trong dấu ngoặc kép nên được coi là chuỗi chứ không phải là số nguyên, do đó, kết quả là 2030
.
Bước 2
Bạn có thể xoá dấu ngoặc kép xung quanh biến numberOfAdults
và numberOfKids
để chuyển đổi chúng thành biến Int
.
fun main() {
val numberOfAdults = 20
val numberOfKids = 30
val total = numberOfAdults + numberOfKids
println("The total party size is: $total")
}
Như bạn đã biết, trình biên dịch Kotlin có thể dự đoán loại biến dựa trên giá trị được gán cho chúng. Trong trường hợp này, trình biên dịch suy luận rằng biến numberOfAdults
và numberOfKids
thuộc loại Int
.
Định dạng thông báo
Chương trình in kết quả này:
Congratulations for your bonus! You will receive a total of 5000 + 1000 (additional bonus).
"$baseSalary + $bonusAmount"
sử dụng cú pháp biểu thức mẫu. Trong biểu thức mẫu, mã được đánh giá trước tiên, sau đó kết quả được nối với nhau trong một chuỗi.
Trong câu hỏi, biến $baseSalary
được đánh giá theo giá trị 5000
và biến $bonusAmount
được đánh giá theo giá trị 1000
. Sau đó, kết quả này được nối với nhau để tạo ra "5000 + 1000"
và gán cho biến result
.
Triển khai các phép toán cơ bản
Bước 1
Xác định biến result
không thể thay đổi bằng từ khoá val
, sau đó chỉ định kết quả của thao tác bổ sung cho biến đó:
fun main() {
val firstNumber = 10
val secondNumber = 5
val result = firstNumber + secondNumber
println("$firstNumber + $secondNumber = $result")
}
Bước 2
- Tạo một hàm
add()
chấp nhận tham sốfirstNumber
và tham sốsecondNumber
, cả hai đều thuộc loạiInt
và trả về một giá trịInt
. - Nhập mã cho phép cộng trong nội dung hàm
add()
rồi dùng từ khoáreturn
để trả về kết quả của phép tính.
fun add(firstNumber: Int, secondNumber: Int): Int {
return firstNumber + secondNumber
}
Bước 3
- Xác định hàm
subtract()
chấp nhận tham sốfirstNumber
vàsecondNumber
, cả hai đều thuộc loạiInt
và trả về một giá trịInt
. - Nhập mã cho phép trừ trong nội dung hàm
subtract()
rồi dùng từ khoáreturn
để trả về kết quả của phép tính.
fun subtract(firstNumber: Int, secondNumber: Int): Int {
return firstNumber - secondNumber
}
- Sửa đổi hàm
main()
để sử dụng hàmsubtract()
mới. Một giải pháp ví dụ có thể trông như bên dưới:
fun main() {
val firstNumber = 10
val secondNumber = 5
val thirdNumber = 8
val result = add(firstNumber, secondNumber)
val anotherResult = subtract(firstNumber, thirdNumber)
println("$firstNumber + $secondNumber = $result")
println("$firstNumber - $thirdNumber = $anotherResult")
}
fun add(firstNumber: Int, secondNumber: Int): Int {
return firstNumber + secondNumber
}
fun subtract(firstNumber: Int, secondNumber: Int): Int {
return firstNumber - secondNumber
}
Tham số mặc định
Bước 1
- Tạo một hàm
displayAlertMessage()
chấp nhận tham sốoperatingSystem
và tham sốemailId
, cả hai đều thuộc loạiString
và trả về một giá trịString
. - Trong nội dung hàm, hãy dùng một biểu thức mẫu để cập nhật và trả về thông báo.
fun displayAlertMessage(operatingSystem: String, emailId: String): String {
return "There is a new sign-in request on $operatingSystem for your Google Account $emailId."
}
Bước 2
- Chỉ định giá trị
"Unknown OS"
cho thông sốoperatingSystem
.
fun displayAlertMessage(
operatingSystem: String = "Unknown OS",
emailId: String
): String {
return "There is a new sign-in request on $operatingSystem for your Google Account $emailId."
}
Máy đếm bước
Tên hàm và tên biến phải tuân theo quy ước viết hoa Camel.
Nếu tên chứa nhiều từ thì viết thường chữ cái đầu tiên của từ đầu tiên, viết hoa chữ cái đầu tiên của từ tiếp theo và xoá mọi dấu cách giữa các từ.
Ví dụ về tên hàm:
calculateTip
displayMessage
takePhoto
Ví dụ về tên biến:
numberOfEmails
cityName
bookPublicationDate
Để tìm hiểu thêm về tên, hãy xem Quy tắc đặt tên.
Tránh dùng từ khoá Kotlin làm tên hàm vì các từ đó đã được gán nghĩa cụ thể trong ngôn ngữ Kotlin.
Mã giải pháp của bạn sẽ trông giống như đoạn mã sau:
fun main() {
val steps = 4000
val caloriesBurned = pedometerStepsToCalories(steps);
println("Walking $steps steps burns $caloriesBurned calories")
}
fun pedometerStepsToCalories(numberOfSteps: Int): Double {
val caloriesBurnedForEachStep = 0.04
val totalCaloriesBurned = numberOfSteps * caloriesBurnedForEachStep
return totalCaloriesBurned
}
So sánh 2 số
- Tạo một hàm
compareTime()
chấp nhận tham sốtimeSpentToday
và tham sốtimeSpentYesterday
, cả hai đều thuộc loạiInt
và trả về một giá trịBoolean
.
Giải pháp này dựa vào toán tử so sánh >
. Toán tử đánh giá cho một giá trị Boolean
, do đó, hàm compareTime()
chỉ trả về kết quả là timeSpentToday > timeSpentYesterday
.
Ví dụ: nếu bạn truyền một đối số 300
tới tham số timeSpentToday
và đối số 250
tới tham số timeSpentYesterday
, nội dung hàm sẽ đánh giá theo 300 > 250
và trả về một giá trị true
vì 300 lớn hơn 250.
fun main() {
println("Have I spent more time using my phone today: ${compareTime(300, 250)}")
println("Have I spent more time using my phone today: ${compareTime(300, 300)}")
println("Have I spent more time using my phone today: ${compareTime(200, 220)}")
}
fun compareTime(timeSpentToday: Int, timeSpentYesterday: Int): Boolean {
return timeSpentToday > timeSpentYesterday
}
Have I spent more time using my phone today: true Have I spent more time using my phone today: false Have I spent more time using my phone today: false
Di chuyển mã trùng lặp vào một hàm
- Tạo một hàm in thông tin thời tiết của thành phố Ankara sau hàm
main()
.
Đối với tên hàm, bạn có thể sử dụng printWeatherForCity()
hoặc tên tương tự.
- Gọi hàm này từ hàm
main()
.
Chương trình sẽ in thông tin thời tiết của Ankara.
fun main() {
printWeatherForCity()
}
fun printWeatherForCity() {
println("City: Ankara")
println("Low temperature: 27, High temperature: 31")
println("Chance of rain: 82%")
println()
}
Bây giờ, bạn có thể tạo một hàm khác linh hoạt hơn để có thể in thông tin thời tiết của các thành phố khác.
- Thay thế các phần dành riêng cho Ankara trong câu lệnh
println()
bằng các biến.
Hãy nhớ quy ước viết hoa Camel cho tên biến và ký tự $
trước biến để giá trị của biến được sử dụng thay cho tên biến. Đây là các mẫu chuỗi mà bạn đã tìm hiểu trong một lớp học lập trình trước.
fun printWeatherForCity() {
println("City: $cityName")
println("Low temperature: $lowTemp, High temperature: $highTemp")
println("Chance of rain: $chanceOfRain%")
println()
}
- Hãy thay đổi định nghĩa hàm để các biến đó là các tham số phải được truyền vào hàm khi hàm được gọi và chỉ định loại dữ liệu cho mỗi tham số.
Tham số cityName
thuộc loại String
, còn tham số lowTemp
, highTemp
và chanceOfRain
thuộc loại Int
.
Không cần có giá trị return
trong định nghĩa hàm vì các thông báo được in ra trong kết quả.
fun printWeatherForCity(cityName: String, lowTemp: Int, highTemp: Int, chanceOfRain: Int) {
println("City: $cityName")
println("Low temperature: $lowTemp, High temperature: $highTemp")
println("Chance of rain: $chanceOfRain%")
println()
}
- Cập nhật hàm
main()
để gọi hàmprintWeatherForCity()
và truyền vào thông tin thời tiết của Ankara.
Tên thành phố là "Ankara"
, nhiệt độ thấp là 27
, nhiệt độ cao là 31
và khả năng có mưa là 82
.
fun main() {
printWeatherForCity("Ankara", 27, 31, 82)
}
fun printWeatherForCity(cityName: String, lowTemp: Int, highTemp: Int, chanceOfRain: Int) {
println("City: $cityName")
println("Low temperature: $lowTemp, High temperature: $highTemp")
println("Chance of rain: $chanceOfRain%")
println()
}
- Chạy chương trình để xác minh rằng kết quả cho biết thông tin thời tiết của Ankara.
- Gọi hàm
printWeatherForCity()
bằng thông tin thời tiết của các thành phố khác.
fun main() {
printWeatherForCity("Ankara", 27, 31, 82)
printWeatherForCity("Tokyo", 32, 36, 10)
printWeatherForCity("Cape Town", 59, 64, 2)
printWeatherForCity("Guatemala City", 50, 55, 7)
}
fun printWeatherForCity(cityName: String, lowTemp: Int, highTemp: Int, chanceOfRain: Int) {
println("City: $cityName")
println("Low temperature: $lowTemp, High temperature: $highTemp")
println("Chance of rain: $chanceOfRain%")
println()
}
- Chạy chương trình.
Chương trình sẽ in cùng kết quả như chương trình gốc, nhưng giờ đây mã của bạn ngắn gọn hơn và không chứa các mục lặp lại không cần thiết! Tất cả mã để in thông tin thời tiết của một thành phố đều được tập trung ở một nơi duy nhất: hàm printWeatherForCity()
. Nếu muốn thay đổi cách hiển thị thông tin thời tiết, bạn có thể thay đổi các thông tin này ở một nơi duy nhất áp dụng cho tất cả các thành phố.
13. Thực hành bổ sung
Để thực hành thêm về ngôn ngữ Kotlin, hãy xem kênh Kotlin Basics (Kiến thức cơ bản về Kotlin) tại JetBrains Academy. Để tìm chính xác một chủ đề cụ thể, hãy chuyển đến bản đồ tri thức để xem danh sách các chủ đề được đề cập trong kênh.