Chương trình đầu tiên của bạn trên Kotlin

1. Trước khi bắt đầu

Android với biểu trưng Kotlin

Trong khóa học này, bạn sẽ xây dựng ứng dụng bằng cách viết mã bằng ngôn ngữ lập trình Kotlin, ngôn ngữ được Google đề xuất để tạo ứng dụng Android mới.

Kotlin là ngôn ngữ lập trình hiện đại, giúp các nhà phát triển làm việc hiệu quả hơn. Ví dụ: Kotlin cho phép bạn súc tích hơn và viết ít dòng mã hơn cho cùng một chức năng so với ngôn ngữ lập trình khác. Các ứng dụng được xây dựng bằng ngôn ngữ Kotlin cũng ít bị sự cố hơn, từ đó tạo ra ứng dụng ổn định và mạnh mẽ hơn cho người dùng. Về cơ bản, với Kotlin, bạn có thể viết ứng dụng Android tốt hơn trong khoảng thời gian ngắn hơn. Do đó, Kotlin đang phát triển trong ngành và là ngôn ngữ mà phần lớn các nhà phát triển Android chuyên nghiệp sử dụng.

Để bắt đầu xây dựng ứng dụng Android trong Kotlin, trước tiên bạn cần có được nền tảng vững chắc về các khái niệm lập trình trong Kotlin. Với các lớp học lập trình trong lộ trình này, bạn sẽ được tìm hiểu những kiến thức cơ bản về lập trình Kotlin trước khi chuyển sang phần tạo ứng dụng.

Sản phẩm bạn sẽ tạo ra

  • Các chương trình ngắn bằng Kotlin hiển thị thông báo khi bạn chạy chúng.

Kiến thức bạn sẽ học được

  • Cách viết và chạy chương trình Kotlin đơn giản.
  • Cách sửa đổi một chương trình đơn giản để thay đổi dữ liệu đầu ra.

Bạn cần có

  • Máy tính có kết nối Internet và trình duyệt web

2. Bắt đầu

Trong lớp học lập trình này, bạn sẽ tìm hiểu và sửa đổi các chương trình đơn giản bằng ngôn ngữ Kotlin. Bạn có thể xem chương trình là một loạt các hướng dẫn dành cho máy tính hoặc thiết bị di động để thực hiện một số hành động chẳng hạn như hiển thị thông báo cho người dùng hoặc tính toán chi phí các mặt hàng trong giỏ hàng. Hướng dẫn từng bước để máy tính biết nên làm gì được gọi là . Khi sửa đổi mã trong một chương trình, dữ liệu đầu ra có thể thay đổi.

Bạn sử dụng công cụ có tên trình soạn thảo mã để viết và chỉnh sửa mã. Tương tự như trình chỉnh sửa văn bản, bạn có thể viết và chỉnh sửa văn bản, nhưng trình soạn thảo mã cũng cung cấp chức năng giúp bạn viết mã chính xác hơn. Ví dụ: trình soạn thảo mã sẽ hiển thị các đề xuất tự động hoàn thành trong khi bạn nhập và hiển thị thông báo lỗi khi mã không chính xác.

Để thực hành những khái niệm cơ bản về ngôn ngữ Kotlin, bạn sẽ dùng trình soạn thảo mã tương tác có tên Kotlin Playground. Bạn có thể truy cập trình này từ trình duyệt web, do đó bạn không cần phải cài đặt phần mềm nào trên máy tính. Bạn có thể chỉnh sửa và chạy mã Kotlin trực tiếp trong Kotlin Playground và xem kết quả.

Lưu ý , bạn không thể tạo ứng dụng Android trong Kotlin Playground. Trong các lộ trình sau, bạn phải cài đặt và sử dụng công cụ có tên Android Studio để viết và chỉnh sửa mã ứng dụng Android của bạn.

Giờ bạn đã biết đôi chút về ngữ cảnh trên Kotlin, hãy tìm hiểu chương trình đầu tiên của bạn!

3. Mở Kotlin Playground

Trong trình duyệt web trên máy tính, mở Playground.

Bạn sẽ thấy một trang web tương tự như hình ảnh này:

Hình ảnh này hiển thị ảnh chụp màn hình của Kotlin Playground. Trình soạn thảo mã hiển thị một chương trình đơn giản để in "Xin chào thế giới!" ở đầu ra.

Đã có một số mã mặc định được điền trong trình chỉnh sửa mã. Ba dòng mã này tạo thành một chương trình đơn giản:

fun main() {
    println("Hello, world!")
}

Ngay cả khi chưa từng lập trình trước đây, bạn có đoán được chương trình làm gì không?

Chuyển sang phần tiếp theo để xem phỏng đoán của bạn có chính xác hay không nhé!

4. Chạy chương trình đầu tiên của bạn

Nhấp vào Nút Run (Chạy) để chạy chương trình.

Khi bạn nhấp vào nút Run (Chạy), có nhiều điều sẽ xảy ra. Mã trong ngôn ngữ lập trình Kotlin là để con người hiểu được, để họ có thể đọc, viết và cộng tác dễ dàng trên các chương trình Kotlin. Tuy nhiên, máy tính của bạn không hiểu được ngôn ngữ này ngay lập tức.

Bạn cần đến trình biên dịch Kotlin. Trình này có thể lấy mã Kotlin bạn đã viết, xem từng dòng mã và dịch nội dung đó sang nội dung máy tính có thể hiểu. Quá trình này được gọi là biên dịch mã.

Nếu mã của bạn biên dịch thành công, chương trình của bạn sẽ chạy (hay thực thi). Khi thực thi chương trình của bạn, máy tính sẽ thực hiện từng hướng dẫn của bạn. Nếu bạn đã từng làm theo một công thức nấu ăn, việc thực hiện từng bước trong công thức đó được coi là thực thi từng hướng dẫn.

Dưới đây là ảnh chụp màn hình về nội dung bạn sẽ thấy khi chạy chương trình.

Ảnh chụp màn hình này hiển thị một phần trang web của Kotlin Playground. Trình soạn thảo mã sẽ hiển thị mã cho chương trình Xin chào thế giới. Bên dưới trình soạn thảo mã là ngăn đầu ra hiển thị cụm từ "Xin chào thế giới!".

Ở cuối trình soạn thảo mã, bạn sẽ thấy một ngăn hiển thị đầu ra hoặc kết quả của chương trình:

Hello, world!

Tuyệt! Mục đích của chương trình này là in hoặc hiển thị thông báo cho biết Hello, world!.

Cơ chế này hoạt động như thế nào? Chương trình Kotlin phải có hàm chính, đây là vị trí cụ thể trong mã mà trình biên dịch Kotlin khởi chạy. Chức năng chính là điểm truy cập, hay điểm bắt đầu, của chương trình.

Có một mũi tên chỉ vào dòng đầu tiên trong hàm chính của một chương trình đơn giản với nhãn "Bắt đầu tại đây".

Có thể bạn đang thắc mắc hàm là gì?

5. Các thành phần của hàm

Hàm là phân đoạn của chương trình thực hiện một thao tác cụ thể. Bạn có thể sử dụng nhiều hàm hoặc chỉ một hàm trong chương trình của mình.

Xác định và gọi hàm

Trong mã của mình, bạn xác định một hàm trước tiên. Điều đó có nghĩa là bạn chỉ định tất cả các hướng dẫn cần thiết để thực hiện nhiệm vụ đó.

Sau khi hàm được xác định, bạn có thể gọi hàm để các hướng dẫn trong hàm đó được thực hiện hoặc thực thi.

Một ví dụ tương tự khác. Bạn viết hướng dẫn từng bước về cách nướng bánh sô-cô-la. Bạn có thể đặt tên cho tập hợp các hướng dẫn này là: bakeChocolateCake. Mỗi khi muốn nướng bánh, bạn đều có thể thực thi hướng dẫn trong bakeChocolateCake. Nếu muốn mua 3 chiếc bánh, bạn cần thực thi hướng dẫn bakeChocolateCake 3 lần. Bước đầu tiên là xác định các bước và đặt tên cho bước đó. Bước này được xem là xác định hàm. Sau đó, bạn có thể tham khảo các bước bất cứ khi nào bạn muốn thực thi chúng. Quá trình này được coi là gọi hàm.

Xác định hàm

Sau đây là các phần quan trọng cần thiết để xác định một hàm:

  • Hàm này cần được đặt tên để bạn có thể gọi sau này.
  • Hàm này cũng có thể đòi hỏi một số giá trị đầu vào hoặc thông tin cần thiết khi hàm được gọi. Hàm sử dụng các giá trị đầu vào này để thực hiện mục đích của nó. Việc đòi hỏi dữ liệu đầu vào không bắt buộc và một số hàm không yêu cầu dữ liệu đầu vào.
  • Hàm này cũng có phần thân chứa hướng dẫn để thực hiện nhiệm vụ đó.

Sơ đồ này biểu thị hàm dưới dạng một hộp màu đen có nhãn "name" (tên) hàm trên đó. Trong hộp hàm có một hộp nhỏ hơn được gọi là body (phần thân), phần này biểu thị phần thân hàm trong hàm. Ngoài ra, còn có một nhãn được gọi là thông tin đầu vào có mũi tên chỉ vào hộp màu đen của hàm cho biết có các thông tin đầu vào hàm đã được chuyển vào hàm.

Để chuyển sơ đồ trên thành mã Kotlin, hãy sử dụng cú pháp hoặc định dạng sau để xác định hàm. Thứ tự của các phần tử này có ý nghĩa quan trọng. Từ fun (vui) phải đứng đầu, theo sau là hàm name (tên), theo sau nữa là các dữ liệu đầu vào trong ngoặc đơn, sau đó là dấu ngoặc nhọn quanh phần thân hàm.

Sơ đồ này cho biết cú pháp (hoặc định dạng) để khai báo hàm trong mã Kotlin. Hàm bắt đầu bằng từ "fun" (vui). Ở bên phải từ này là một hộp có nhãn name (tên). Ở bên phải hộp name (tên) là hộp có nhãn inputs (dữ liệu đầu vào) được đặt giữa dấu ngoặc đơn. Sau mục nhập là dấu ngoặc nhọn mở. Trên dòng tiếp theo, có một hộp có nhãn body (phần thân) và nhãn này được thụt lề bên phải. Ở cuối hàm, sau phần thân là dấu ngoặc nhọn đóng.

Hãy lưu ý các phần quan trọng của hàm trong ví dụ về hàm chính mà bạn thấy trong Kotlin Playground:

  • Định nghĩa hàm bắt đầu bằng từ fun.
  • Khi đó, tên của hàm là main.
  • Không có mục nhập nào cho hàm, do đó dấu ngoặc đơn trống.
  • Có một dòng mã trong phần thân hàm println("Hello, world!"), nó nằm giữa dấu ngoặc nhọn mở và đóng của hàm.

Mã hàm main (chính) sau đây được hiển thị trong hình ảnh: fun main() {     println("Hello, world!") } Có một nhãn name (tên) trỏ đến từ main (chính). Có một nhãn inputs (mục nhập) trỏ đến các biểu tượng mở và đóng ngoặc đơn.  Có một nhãn body (phần thân) trỏ đến dòng mã println("Hello, world!").

Mỗi phần của hàm được giải thích chi tiết hơn ở bên dưới.

Từ khóa hàm

Để cho biết bạn sắp xác định một hàm trong Kotlin, hãy dùng từ đặc biệt fun (viết tắt của hàm) ở một dòng mới. Bạn phải nhập chính xác fun với tất cả chữ cái đều được viết thường. Bạn không thể sử dụng func, function hoặc cách viết thay thế vì trình biên dịch Kotlin sẽ không nhận ra ý bạn.

Các từ đặc biệt này được gọi là từ khóa trong Kotlin và dành riêng cho mục đích cụ thể, chẳng hạn như việc tạo hàm mới trong Kotlin.

Tên chức năng

Các hàm được đặt tên nên chúng có thể được phân biệt với nhau, tương tự như cách mọi người được đặt tên để nhận diện bản thân. Tên hàm nằm sau từ khóa fun.

Sơ đồ này cho biết cú pháp (hoặc định dạng) để khai báo hàm trong mã Kotlin. Hàm bắt đầu bằng từ "fun" (vui). Ở bên phải từ này là một hộp có nhãn name (tên). Hộp name (tên) được làm nổi bật bằng đường viền màu xanh lục và nền để nhấn mạnh phần này của định nghĩa hàm. Ở bên phải hộp name (tên) là hộp có nhãn inputs (dữ liệu đầu vào) được đặt giữa dấu ngoặc đơn. Sau mục nhập là dấu ngoặc nhọn mở. Trên dòng tiếp theo, có một hộp có nhãn body (phần thân) và nhãn này được thụt lề bên phải. Ở cuối hàm, sau phần thân là dấu ngoặc nhọn đóng.

Chọn tên phù hợp cho hàm của bạn dựa trên mục đích của hàm đó. Tên thường là động từ hoặc cụm động từ. Bạn nên tránh sử dụng từ khóa Kotlin làm tên hàm.

Tên hàm phải tuân theo quy ước chữ hoa chữ thường, trong đó từ đầu tiên của tên hàm luôn là chữ thường. Nếu tên có chứa nhiều từ thì không được có dấu cách giữa các từ và tất cả các từ khác đều phải bắt đầu bằng một chữ cái viết hoa.

Ví dụ về tên hàm:

  • calculateTip
  • displayErrorMessage
  • takePhoto

Giá trị đầu vào của hàm

Lưu ý tên hàm luôn được theo sau bởi dấu ngoặc đơn. Các dấu ngoặc đơn này là nơi bạn liệt kê các giá trị đầu vào của hàm.

Sơ đồ này cho biết cú pháp (hoặc định dạng) để khai báo hàm trong mã Kotlin. Hàm bắt đầu bằng từ "fun" (vui). Ở bên phải từ này là một hộp có nhãn name (tên). Ở bên phải hộp name (tên) là hộp có nhãn inputs (dữ liệu đầu vào) được đặt giữa dấu ngoặc đơn. Hộp inputs (mục nhập) được làm nổi bật bằng đường viền màu xanh lục và nền để nhấn mạnh phần này của hàm. Sau mục nhập là dấu ngoặc nhọn mở. Trên dòng tiếp theo, có một hộp có nhãn body (phần thân) và nhãn này được thụt lề bên phải. Ở cuối hàm, sau phần thân là dấu ngoặc nhọn đóng.

Dữ liệu đầu vào là một phần dữ liệu mà hàm cần để thực hiện mục đích của nó. Khi xác định hàm, bạn có thể yêu cầu một số giá trị đầu vào nhất định phải được chuyển vào khi hàm đó được gọi. Nếu hàm không đòi hỏi giá trị đầu vào, dấu ngoặc đơn sẽ là () trống.

Dưới đây là một số ví dụ về các hàm có số giá trị đầu vào khác nhau:

Sơ đồ dưới đây cho thấy hàm được gọi là addOne. Mục đích của hàm là thêm 1 vào một số cho sẵn. Có một giá trị đầu vào, đó là số đã cho. Bên trong phần thân hàm có một mã cộng 1 vào số được chuyển vào hàm.

Sơ đồ này biểu thị hàm dưới dạng một hộp màu đen có nhãn "addOne" (thêmMột) trên đó, đó là tên hàm. Trong hộp function (hàm) là một hộp nhỏ hơn, đại diện cho phần thân hàm. Bên trong hộp body (phần thân) của hàm, có văn bản "number + 1" (số+1). Bên ngoài hộp màu đen của hàm, còn có một hộp có nhãn "number" (số) với mũi tên chỉ vào hộp màu đen của hàm. Số này là một dữ liệu đầu vào của hàm.

Trong ví dụ tiếp theo, có một hàm được gọi là printFullName. Có hai dữ liệu đầu vào cần cho hàm, một cho tên và một cho họ. Phần thân hàm in ra tên và họ trong kết quả để hiển thị họ và tên đầy đủ của người đó.

Sơ đồ này biểu thị một hàm dưới dạng hộp đen có nhãn "printFullName" trên đó, đó là tên hàm. Trong hộp function (hàm) là một hộp nhỏ hơn, đại diện cho phần thân hàm. Bên trong hộp body (phần thân) hàm có thông báo "Print firstName and lastName in the output" (In tên và họ ở đầu ra). Ngoài hộp màu đen của hàm, có hai hộp tương ứng được gắn nhãn "firstName" (tên) và "lastName" (họ). Có các mũi tên từ hộp firstName và lastName trỏ đến hộp màu đen của hàm. firstName và lastName là 2 dữ liệu đầu vào cho hàm.

Ví dụ cuối cùng này cho thấy một hàm không yêu cầu chuyển dữ liệu đầu vào khi hàm được gọi. Khi bạn gọi hàm displayHello(), thông báo Hello (Xin chào) sẽ được in ra.

Sơ đồ này biểu thị hàm dưới dạng một hộp màu đen có nhãn "display Hello" (hiển thị Xin chào) trên đó, đây là tên hàm. Trong hộp function (hàm) là một hộp nhỏ hơn, đại diện cho phần thân hàm. Bên trong hộp body (phần thân) hàm có thông báo "Print Hello in the output" (In Xin chào ở đầu ra).

Nội dung hàm

Nội dung hàm chứa các hướng dẫn cần để đạt được mục đích của hàm. Bạn có thể xác định vị trí nội dung hàm bằng cách tìm các dòng mã nằm trong dấu ngoặc nhọn mở và đóng.

Sơ đồ này cho biết cú pháp (hoặc định dạng) để khai báo hàm trong mã Kotlin. Hàm bắt đầu bằng từ "fun" (vui). Ở bên phải từ này là một hộp có nhãn name (tên). Ở bên phải hộp name (tên) là hộp có nhãn inputs (dữ liệu đầu vào) được đặt giữa dấu ngoặc đơn. Sau mục nhập là dấu ngoặc nhọn mở. Trên dòng tiếp theo, có một hộp có nhãn body (phần thân) và nhãn này được thụt lề bên phải. Hộp body (nội dung) được làm nổi bật bằng đường viền màu xanh lục và nền để nhấn mạnh phần này của hàm. Ở cuối hàm, sau phần thân là dấu ngoặc nhọn đóng.

Giải thích về chương trình đơn giản

Hãy nhìn lại chương trình đơn giản bạn đã thấy trước đó trong lớp học lập trình.

Mã hàm main (chính) sau đây được hiển thị trong hình ảnh: fun main() {     println("Hello, world!") } Có một nhãn name (tên) trỏ đến từ main (chính). Có một nhãn inputs (mục nhập) trỏ đến các biểu tượng mở và đóng ngoặc đơn.  Có một nhãn body (phần thân) trỏ đến dòng mã println("Hello, world!").

Chương trình chứa một hàm: hàm main (chính). main là tên hàm đặc biệt trong Kotlin. Khi viết mã trong Kotlin Playground, mã của bạn phải được viết bên trong hàm main() hoặc được gọi từ hàm main().

Chỉ có một dòng mã trong phần thân hàm main() này:

println("Hello, world!")

Dòng mã này là một câu lệnh vì nó thực hiện một hành động cụ thể để in văn bản Hello, world! trong ngăn đầu ra. Cụ thể hơn, hàm println() sẽ được gọi trên dòng mã này. println() là hàm đã được xác định bằng ngôn ngữ Kotlin. Điều đó có nghĩa là nhóm kỹ sư tạo ngôn ngữ Kotlin đã viết phần khai báo hàm cho hàm println(). Hàm đòi hỏi một dữ liệu đầu vào, đó là thông báo phải được in.

Khi bạn gọi hàm println(), hãy đặt văn bản thông báo trong dấu ngoặc đơn sau hàm name (tên). Hãy nhớ sử dụng dấu ngoặc kép xung quanh văn bản sẽ hiển thị, chẳng hạn như "Hello, world!".

Khi chương trình được thực thi, thông báo đã chuyển vào hàm println() sẽ được in ở đầu ra:

Hello, world!

Thử nào

Bây giờ hãy nhìn lại mã gốc trong chương trình. Bạn có thể sửa đổi mã trong Kotlin Playground để kết quả hiển thị thông báo này không?

Hello, Android!

6. Sửa đổi chương trình

  1. Để thay đổi thông báo hiển thị ở đầu ra, hãy sửa đổi lệnh gọi hàm println() trên dòng thứ hai của chương trình. Thay thế world bằng Android trong hàm println(). Hãy đảm bảo "Hello, Android!" vẫn nằm trong dấu ngoặc kép và trong dấu ngoặc đơn.
fun main() {
    println("Hello, Android!")
}
  1. Chạy chương trình.
  2. Đầu ra nên hiển thị thông báo này:
Hello, Android!

Rất tốt, bạn đã sửa đổi chương trình đầu tiên của mình!

Bây giờ bạn có thể thay đổi mã để thông báo được in hai lần không? Xem kết quả mong muốn:

Hello, Android!
Hello, Android!

Bạn có thể đặt bao nhiêu dòng hướng dẫn vào một hàm tùy ý để hoàn thành nhiệm vụ. Tuy nhiên, lưu ý chỉ nên có một câu lệnh ở mỗi dòng trong Kotlin. Nếu bạn muốn viết một câu lệnh khác, hãy đặt câu lệnh đó vào dòng mới của hàm.

Cách thay đổi chương trình để in nhiều dòng văn bản:

  1. Sao chép câu lệnh println() ban đầu và dán câu lệnh thứ hai bên dưới câu lệnh đó trong phần thân của hàm. Cả hai câu lệnh println() đều phải nằm trong dấu ngoặc nhọn của hàm main (chính). Bây giờ, bạn có hai câu lệnh trong phần thân hàm.
fun main() {
    println("Hello, Android!")
    println("Hello, Android!")
}
  1. Chạy chương trình.
  2. Khi bạn chạy chương trình, kết quả nên là:
Hello, Android!
Hello, Android!

Bạn có thể thấy các thay đổi về mã ảnh hưởng đến kết quả ra sao.

  1. Hãy thay đổi mã này sao cho nó hiển thị Hello, YOUR_NAME!.

7. Hướng dẫn quy tắc Kotlin

Trong khóa học này, bạn sẽ được tìm hiểu về các phương pháp lập trình hiệu quả để làm theo ở vai trò là nhà phát triển Android. Một trong những phương pháp như vậy là tuân thủ các tiêu chuẩn mã hóa Android của Google áp dụng cho mã được viết bằng ngôn ngữ Kotlin. Hướng dẫn đầy đủ này được gọi là hướng dẫn về quy tắc, nó lý giải cách mã nên được định dạng về mặt giao diện trực quan và các quy ước cần tuân thủ khi viết mã. Ví dụ: hướng dẫn quy tắc bao gồm các đề xuất về sử dụng khoảng trắng, thụt lề, đặt tên, v.v.

Mục đích của việc tuân thủ hướng dẫn về quy tắc này là giúp mã dễ đọc hơn và nhất quán hơn với cách các nhà phát triển Android khác viết mã của họ. Tính nhất quán này rất quan trọng khi cộng tác trong các dự án lớn sao cho kiểu mã được thống nhất ở tất cả các tệp trong dự án.

Dưới đây là một số đề xuất hướng dẫn về quy tắc liên quan cho những nội dung bạn đã học được trong Kotlin đến nay:

  • Tên hàm phải ở được viết theo quy tắc lạc đà (camel case) và nên là động từ hoặc cụm động từ.
  • Mỗi câu lệnh phải nằm trên một dòng riêng.
  • Dấu ngoặc nhọn mở phải xuất hiện ở cuối dòng nơi hàm bắt đầu.
  • Cần có một dấu cách trước dấu ngoặc nhọn mở.

Mã hàm main (chính) sau đây được hiển thị trong hình ảnh: fun main() {     println("Hello, world!") } Có một nhãn gọi là khoảng trắng trỏ đến khoảng trống sau ký hiệu dấu ngoặc đơn và trước dấu ngoặc nhọn mở.

  • Phần thân hàm phải được thụt lề 4 khoảng trắng. Không sử dụng ký tự tab để thụt lề mã của bạn, hãy nhập 4 dấu cách.

Mã hàm main (chính) sau đây được hiển thị trong hình ảnh: fun main() {     println("Hello, world!") } Có một mũi tên trỏ đến dòng mã trong phần nội dung của hàm: println("Hello, world!"). Mũi tên có nhãn: thụt lề 4 dấu cách.

  • Dấu ngoặc nhọn đóng nằm trên dòng riêng sau dòng cuối cùng trong phần nội dung của hàm. Dấu ngoặc nhọn đóng phải khớp với từ khóa fun ở đầu hàm.

Mã hàm main (chính) sau đây được hiển thị trong hình ảnh: fun main() {     println("Hello, world!") } Có một đường thẳng đứng xuất hiện ở cạnh trái mã hàm. Nó nằm ở bên trái từ fun (vui) và kéo dài theo chiều dọc xuống dấu ngoặc nhọn đóng của hàm. Đường thẳng đứng có nhãn: căn chỉnh dọc. Dòng này có nghĩa là từ fun (vui) và dấu ngoặc nhọn đóng phải được căn chỉnh theo chiều dọc.

Bạn sẽ tìm hiểu thêm về quy ước lập trình Android khi học thêm về ngôn ngữ lập trình Kotlin. Xem hướng dẫn quy tắc đầy đủ tại đây, nhưng đừng lo lắng khi tài liệu này còn có các chủ đề khác về Kotlin mà bạn chưa học.

8. Sửa lỗi trong mã

Khi học một ngôn ngữ loài người, bạn sẽ thấy các quy tắc về cú pháp và ngữ pháp cho phép sử dụng từ và câu chính xác. Tương tự như vậy, ngôn ngữ lập trình cũng có các quy tắc cụ thể để có được mã hợp lệ, nghĩa là mã biên dịch thành công.

Trong quá trình mã hóa, việc mắc lỗi và vô tình viết mã không hợp lệ là điều rất bình thường. Khi mới bắt đầu, bạn có thể gặp khó khăn hoặc bối rối khi gặp những lỗi này. Nhưng đừng lo, việc này rất bình thường. Mã hiếm khi hoạt động hoàn hảo trong lần viết đầu tiên. Tương tự như việc viết một tài liệu sẽ cần đến nhiều bản nháp, viết mã cũng vậy, bạn có thể phải thực hiện nhiều lần cho đến khi nó hoạt động như mong đợi.

Nếu mã không thể biên dịch thành công, sẽ có lỗi xảy ra. Ví dụ: nếu bạn mắc lỗi chính tả, chẳng hạn như thiếu dấu ngoặc kép hoặc dấu ngoặc đơn, trình biên dịch sẽ không hiểu mã của bạn và không thể dịch mã đó thành các bước để máy tính thực hiện. Nếu mã của bạn không hoạt động như dự kiến hoặc bạn thấy thông báo lỗi trong trình soạn thảo mã, bạn phải quay lại mã và sửa lỗi đó. Quá trình giải quyết các lỗi này được gọi là khắc phục sự cố.

  1. Sao chép và dán đoạn mã sau vào Kotlin Playground và chạy chương trình. Bạn thấy gì?
fun main() {
    println("Today is sunny!)
}

Lý tưởng nhất, bạn sẽ thấy thông báo Today is sunny! được hiển thị. Thay vào đó, trong ngăn đầu ra, bạn sẽ thấy biểu tượng dấu chấm than kèm thông báo lỗi.

Có 2 thông báo lỗi khi chạy chương trình: Expecting " Expecting ) Có một dấu chấm than trong vòng tròn đỏ bên cạnh mỗi lỗi.

Thông báo lỗi trên Kotlin Playground

Thông báo lỗi bắt đầu bằng từ "Expecting" (Dự kiến) vì trình biên dịch Kotlin đang "dự kiến" một nội dung nào đó nhưng không tìm thấy nội dung đó trong mã. Trong trường hợp này, trình biên dịch dự kiến một dấu ngoặc kép đóng và một dấu ngoặc đơn đóng cho mã trên dòng thứ hai của chương trình.

Trong câu lệnh println(), lưu ý thông báo hiển thị có dấu ngoặc kép mở, nhưng không có dấu ngoặc kép đóng. Mặc dù có một dấu ngoặc đơn đóng trong mã, nhưng trình biên dịch nghĩ rằng dấu ngoặc đơn là một phần của văn bản cần in bởi không có dấu ngoặc kép đóng trước nó.

  1. Thêm dấu ngoặc kép đóng sau dấu chấm than, trước dấu ngoặc đơn đóng.
fun main() {
    println("Today is sunny!")
}

Hàm main (chính) chứa một dòng mã, đó là câu lệnh println(), trong đó văn bản được đóng trong dấu ngoặc kép và đặt trong dấu ngoặc đơn: "Today is sunny!".

  1. Chạy lại chương trình.

Nếu đúng sẽ không có bất kỳ lỗi nào và ngăn đầu ra sẽ hiển thị văn bản này:

Today is sunny!

Bạn đã khắc phục lỗi thành công! Khi đã có nhiều kinh nghiệm hơn về viết mã và khắc phục lỗi, bạn sẽ nhận ra tầm quan trọng của việc chú ý đến cách viết hoa, chính tả, khoảng trắng, ký hiệu và tên khi nhập mã.

Trong phần tiếp theo, bạn sẽ làm một loạt bài tập để thực hành những gì đã học. Các giải pháp sẽ có ở cuối lớp học lập trình, tuy nhiên hãy cố gắng tự tìm câu trả lời trước.

9. Bài tập

  1. Bạn có thể đọc mã trong chương trình này và đoán đầu ra là gì (mà không chạy mã trong Kotlin Playground) không?
fun main() {
    println("1")
    println("2")
    println("3")
}

Sau khi suy đoán, hãy sao chép và dán mã này vào Kotlin Playground để kiểm tra câu trả lời của bạn.

  1. Bạn có thể sử dụng Kotlin Playground để tạo một chương trình cho ra các thông báo sau:
I'm
learning
Kotlin!
  1. Sao chép và dán chương trình này vào Kotlin Playground.
fun main() {
    println("Tuesday")
    println("Thursday")
    println("Wednesday")
    println("Friday")
    println("Monday")
}

Hãy sửa chương trình để nó in ra kết quả sau:

Monday
Tuesday
Wednesday
Thursday
Friday

Để tìm hiểu một số phương pháp khắc phục sự cố sớm, hãy khắc phục lỗi trong các bài tập dưới đây. Trong mỗi bài tập, hãy sao chép mã vào Kotlin Playground trong trình duyệt. Thử chạy chương trình và bạn sẽ thấy thông báo lỗi xuất hiện.

  1. Sửa lỗi trong chương trình này để cho ra kết quả mong muốn.
fun main() {
    println("Tomorrow is rainy")

Kết quả mong muốn:

Tomorrow is rainy
  1. Sửa lỗi trong chương trình này để cho ra kết quả mong muốn.
fun main() {
    printLine("There is a chance of snow")
}

Kết quả mong muốn:

There is a chance of snow
  1. Sửa lỗi trong chương trình này để cho ra kết quả mong muốn.
fun main() {
    println("Cloudy") println("Partly Cloudy") println("Windy")
}

Kết quả mong muốn:

Cloudy
Partly Cloudy
Windy
  1. Sửa lỗi trong chương trình này để cho ra kết quả mong muốn.
fun main() (
    println("How's the weather today?")
)

Kết quả mong muốn:

How's the weather today?

Sau khi hoàn thành các bài tập này, hãy kiểm tra câu trả lời của bạn với giải đáp trong phần tiếp theo.

10. Giải pháp

  1. Kết quả của chương trình là:
1
2
3
  1. Mã trong chương trình sẽ có dạng như sau:
fun main() {
    println("I'm")
    println("learning")
    println("Kotlin!")
}
  1. Sau đây là mã chính xác của chương trình:
fun main() {
    println("Monday")
    println("Tuesday")
    println("Wednesday")
    println("Thursday")
    println("Friday")
}
  1. Dấu ngoặc nhọn đóng cho biết phần cuối của nội dung hàm main bị thiếu trên dòng thứ ba của chương trình.

Mã chính xác:

fun main() {
    println("Tomorrow is rainy")
}

Kết quả:

Tomorrow is rainy
  1. Khi chạy chương trình, bạn sẽ thấy thông báo lỗi Unresolved reference: printLine. Điều này do printLine() không phải là hàm được công nhận trong Kotlin. Bạn cũng có thể xem phần mã gây lỗi được tô đỏ trong Kotlin Playground. Đổi tên hàm thành println để in một dòng văn bản vào kết quả, thao tác này sẽ khắc phục lỗi đó.

Mã chính xác:

fun main() {
    println("There is a chance of snow")
}

Kết quả:

There is a chance of snow
  1. Khi chạy chương trình, bạn sẽ thấy thông báo lỗi Unresolved reference: println. Thông báo này không trực tiếp nêu cách khắc phục vấn đề. Đôi khi điều này có thể xảy ra khi bạn khắc phục sự cố, nó đòi hỏi bạn xem xét mã kỹ hơn để giải quyết hành vi không mong muốn.

Khi tìm hiểu sâu hơn, lệnh gọi hàm thứ hai println() trong mã có màu đỏ ra tín hiệu vị trí đang có vấn đề. Kotlin dự kiến chỉ có một câu lệnh trên mỗi dòng. Trong trường hợp này, bạn có thể di chuyển lệnh gọi hàm thứ hai và thứ ba println() vào các dòng mới riêng biệt để xử lý vấn đề.

Mã chính xác:

fun main() {
    println("Cloudy")
    println("Partly Cloudy")
    println("Windy")
}

Kết quả:

Cloudy
Partly Cloudy
Windy
  1. Nếu chạy chương trình này, bạn sẽ thấy thông báo lỗi: Function 'main' must have a body. Bạn phải đặt nội dung hàm trong dấu ngoặc nhọn mở và đóng { } chứ không phải trong dấu ngoặc đơn mở và đóng ( ).

Mã chính xác:

fun main() {
    println("How's the weather today?")
}

Kết quả:

How's the weather today?

11. Kết luận

Thật tuyệt, bạn đã hoàn thành phần giới thiệu về Kotlin!

Bạn đã tìm hiểu các chương trình đơn giản trên Kotlin và chạy chúng để xem văn bản được in ra. Bạn đã sửa đổi các chương trình theo nhiều cách khác nhau và quan sát thấy cách những thay đổi đó ảnh hưởng đến kết quả. Việc mắc lỗi trong khi lập trình là điều bình thường, và bạn cũng đã bắt đầu tìm hiểu cách khắc phục sự cố cũng như sửa lỗi trong mã. Đây là kỹ năng quan trọng rất hữu ích cho bạn sau này.

Hãy chuyển sang lớp học lập trình tiếp theo để tìm hiểu cách sử dụng các biến trong Kotlin để tạo thêm nhiều chương trình thú vị!

Tóm tắt

  • Chương trình Kotlin yêu cầu một hàm main (chính) làm điểm truy cập của chương trình.
  • Để xác định hàm trong Kotlin, hãy sử dụng từ khóa fun, theo sau là tên hàm, các mục nhập được đặt trong ngoặc đơn, tiếp theo là nội dung hàm được đặt trong dấu ngoặc nhọn.
  • Tên của một hàm phải tuân theo quy ước viết hoa và thường kết hợp và bắt đầu bằng một chữ cái viết thường.
  • Sử dụng lệnh gọi hàm println() để in một số văn bản.
  • Hãy tham khảo hướng dẫn quy tắc Kotlin về định dạng và quy tắc mã cần tuân thủ khi lập trình trong Kotlin.
  • Khắc phục sự cố là quá trình giải quyết lỗi trong mã của bạn.

Tìm hiểu thêm