Bài 11-Biểu thức when trong Kotlin

[polldaddy poll=9764234]

Với Kotlin, biểu thức switch đã được thay thế bởi biểu thức when. When hoạt động rất mạnh mẽ, đa năng, đáp ứng được nhiều trường hợp xử lý cho lập trình viên. Hi vọng với 6 ví dụ chi tiết trong bài này sẽ giúp các bạn nắm chắc về cách thức hoạt động của when, có thể áp dụng nhuần nhuyễn vào các bài thực tế khác phức tạp hơn.

Cú pháp tổng quát của when:

when(<expression>){

<value 1> ->   <statement 1>

<value 2> ->   <statement 2>

 else           ->   <statement else>

}

when lấy giá trị trong <expression>, đem so sánh với các <value> bên trong , nếu trùng khớp với value nào thì <statement> đó sẽ được thực thi. Nếu tất cả <value> đều không khớp với <expression> thì else sẽ được thực hiện.

Lưu đồ của when có thể được hoạt động như hình dưới đây:

Ví dụ 1:

[code language=”groovy”]

fun main(args: Array) {
var value:Int=2
when(value)
{
1->println(“Hello Obama”)
2->println(“Hello Putin”)
3->println(“Hello Kim Jong Un”)
else-> println(“Hello Everyone!”)
}
}

[/code]

Khi chạy đoạn coding trên thì dòng “Helo Putin” sẽ được xuất ra màn hình.

Ví dụ 2: Viết chương trình cho phép nhập vào 2 số a , b và 1 phép toán +,-,*,/. Xuất kết quả tương ứng với phép toán

[code language=”groovy”]

fun main(args: Array) {
var a:Double=0.0;
var b:Double=0.0;
var pheptoan:String?
println(“Nhập a:”)
var sa=readLine()
if(sa!=null)
a= sa.toDouble()
println(“Nhập b:”)
var sb=readLine()
if(sb!=null)
b= sb.toDouble()
println(“Nhập phép toán(+,-,*,/):”)
pheptoan= readLine()
when(pheptoan)
{
“+”-> println(a.toString()+” + “+b.toString()+”=”+(a+b))
“-“-> println(a.toString()+” – “+b.toString()+”=”+(a-b))
“*”-> println(a.toString()+” * “+b.toString()+”=”+(a*b))
“/”->
if(b==0.0)
println(“mẫu số phải khác 0”)
else
println(a.toString()+”/”+b.toString()+”=”+(a/b))
else-> println(“bạn nhập lụi”)
}
}

[/code]

Kotlin cũng cho phép ta gom nhóm nhiều điều kiện trong biểu thức when nếu như các giá trị này cùng giải quyết một vấn đề nào đó bằng cách dùng dấu phẩy , để ngăn cách các giá trị:

Ví dụ 3: Nhập vào một tháng bất kỳ, hỏi tháng này thuộc quý mấy trong năm. Biết rằng tháng 1,2,3 là quý 1; tháng 4,5,6 là quý 2; tháng 7,8,9 là quý 3; tháng 10,11,12 là quý 4.

[code language=”groovy”]

fun main(args: Array) {
var month:Int=0
println(“Nhập tháng:”)
var s:String?= readLine()
if(s!=null)
month=s.toInt()
when(month)
{
1,2,3-> println(“Tháng “+month+” thuộc quý 1″)
4,5,6-> println(“Tháng “+month+” thuộc quý 2″)
7,8,9->println(“Tháng “+month+” thuộc quý 3″)
10,11,12->println(“Tháng “+month+” thuộc quý 4″)
else-> println(“Tháng “+month+” ko hợp lệ”)
}
}

[/code]

Cấu trúc when của Kotlin rất mạnh mẽ, nó còn cho phép ta kiểm tra theo vùng dữ liệu liên tục:

Ví dụ 4:

[code language=”groovy”]

fun main(args: Array) {
var tuoi:Int=0
println(“Nhập tuoi:”)
var s:String?= readLine()
if(s!=null)
tuoi=s.toInt()
when(tuoi)
{
in 1..5-> println(“Tuổi thiếu nhi”)
in 6..9-> println(“Tuổi nhi đồng”)
in 10..15-> println(“Tuổi thiếu niên”)
in 16..28-> println(“Tuổi thanh niên”)
!in 1..100-> println(“Ko biết tuổi gì”)
else->println(“Tuổi già khú đế”)
}
}

[/code]

ở trên bạn thấy Tui để in 1..5 là cú pháp mà tuoi nằm trong đoạn từ 1 tới 5

!in 1..100 là cú pháp nếu tuoi không nằm trong đoạn 1 tới 100

Như vậy nếu các bạn muốn kiểm tra biến thuộc một vùng dữ liệu liên tục nào đó thì có thể dùng cú pháp ở trên, Tui thấy nó rất hay trong trường hợp này. Ta có thể áp dụng tốt vào các giải thuật so khớp.

Ngoài ra when còn là một biểu thức trả về kết quả, cách viết linh động như sau:

Ví  dụ 5:

[code language=”groovy”]

fun main(args: Array) {
var x:Int=8
var kq=when(x)
{
in 1..10->x+100
in 20..30->x-1000
else -> x
}
println(kq)
}

[/code]

Chạy lên ta sẽ có kq=108. Vì cách viết trên sẽ gán kết quả vào cho biến kq, khi x=8 thì thủa vùng 1..10 suy ra kết quả kq=8+100=108

Cuối cùng when có thể hoạt động như chuỗi biểu thức if-else if:

Ví dụ 6:

[code language=”groovy”]

fun main(args: Array) {
var x:Int=100
when
{
x%2==0-> println(“X là số chẵn”)
x%2!=0->println(“X là số lẻ”)
}
}

[/code]

Lệnh trên chính là if else, chạy lên sẽ xuất X là số chẵn. Ta có thể viế when như trên để thay thế cho các if else.

Với biến x ở ví dụ trên(hoặc biến bất kỳ), nếu bạn muốn xuất giá trị của biến cùng với chuỗi thì nên dùng ký tự Đô La đằng trước biến, ví dụ: $x thì Kotlin sẽ tự tìm tới tên biến để xuất giá trị của nó ra, ta có thể viết lại lệnh trên như sau:

[code language=”groovy”]

fun main(args: Array) {
var x:Int=100
when
{
x%2==0-> println(“$x là số chẵn”)
x%2!=0->println(“$x là số lẻ”)
}
}

[/code]

Khi chạy ta sẽ có kết quả: 100 là số chẵn

Như vậy tới đây Tui đã hướng dẫn xong cấu trúc when trong Kotlin, các bạn chú ý học kỹ và hiểu được nó thông qua các ví dụ ở trên nhé. Đặc biệt nắm được lưu đồ hoạt động, cách viết theo dạng when khác nhau.

Các bạn có thể tải source code bài này ở đây: http://www.mediafire.com/file/6mxazxl8726t1df/HocWhen.rar

Hẹn gặp các bạn ở những bài tiếp theo

Chúc các bạn thành công!

Trần Duy Thanh (http://ssoftinc.com/)

Bài 10- Cấu trúc điều khiển if else trong Kotlin

[polldaddy poll=9764234]

Với Kotlin thì if, else ngoài việc đóng vai trò là một tập lệnh điều kiện (cấu trúc truyền thống), nó còn là một biểu thức trả về giá trị khá thú vị.

1)Ta vào cấu trúc if truyền thống, cú pháp:

if  (<expression> )

{

<statement>

}

Cấu trúc if ở trên chỉ quan tâm tới điều kiện đúng, khi <expression> trong if đúng thì sẽ thực hiện các lệnh <statement> ở bên trong if.

Lưu đồ hoạt động:

Ví dụ, kiểm tra điểm Trung bình >=5 thì ghi đậu:

[code language=”groovy”]

fun main(args: Array) {
var dtb:Double=8.0;
if(dtb>=5)
{
println(“Đậu”)
}
}

[/code]

2)Ta vào cấu trúc if và else truyền thống, cú pháp:

if  (< expression > )

{

< statement 1>

}

else

{

< statement 2>

}

Cấu trúc if else quan tâm tới điều kiện đúng và sai. Nếu <expression> đúng thì nội dung <statement 1> của if sẽ được thực hiện, nếu <expression> sai thì nội dung <statement 2> của else sẽ được thực hiện. Đây là một trong những cấu trúc phổ biến nhất được sử dụng rất nhiều trong quá trình kiểm tra điều kiện.

Lưu đồ hoạt động:

Ví dụ, kiểm tra điểm Trung bình >=5 thì ghi đậu, <5 thì rớt:

[code language=”groovy”]

fun main(args: Array) {
var dtb:Double=4.0;
if(dtb>=5)
{
println(“Đậu”)
}
else
{
println(“Cáo phó”)
}
}

[/code]

3)Ta có thể lồng ghép các if else vào với nhau:

Ví dụ: Nhập vào một điểm Trung bình [0..10], kiểm tra điểm này đậu hay rớt:

[code language=”groovy”]

fun main(args: Array) {
var dtb:Double=0.0;
println(“Mời bạn nhập điểm trung bình:”)
var s:String?= readLine()
if(s!=null)
{
dtb=s.toDouble()
if(dtb>=0 && dtb= 5)
{
println(“Đậu”)
}
else
{
println(“Rớt”)
}
}
else
{
println(“Thím phải nhập điểm [0…10]”)
}
}
else
{
println(“Thím nhập lụi”)
}
}

[/code]

Như vậy ở trên ta đã học được cách tiếp cận if else theo phương pháp truyền thống (như là một biểu thức điều kiện). Bây giờ Tui sẽ trình bày điểm mới if else trong Kotlin đó là nó hoạt động như một biểu thức trả về kết quả:

Ví dụ: cho 2 số a và b, tìm số lớn nhất:

Cách viết theo biểu thức
Cách viết truyền thống
[code language=”groovy”]

fun main(args: Array) {
var a:Int=10
var b:Int=15
var max:Int
max=if (a>b) a else b
println(“Số lớn nhất =”+max)
}

[/code]

[code language=”groovy”]

fun main(args: Array) {
var a:Int=10
var b:Int=15
var max:Int
if(a>b)
max=a
else
max=b
println(“Số lớn nhất =”+max)
}

[/code]

Chú ý khi viết if với dạng biểu thức trả về kết quả thì bắt buộc phải có else

Ngoài ra biểu thức if else cũng cho phép viết dạng block lệnh {}, dòng lệnh cuối cùng trong mỗi block đó chính là kết quả trả về, ví dụ:

[code language=”groovy”]

fun main(args: Array) {
var a:Int=10
var b:Int=15
var max = if (a > b) {
println(“Choose a”)
a
} else {
println(“Choose b”)
b
}
println(“max =”+max)
}

[/code]

Đoạn lệnh trên khi chạy sẽ ra kết quả:

Choose b
max =15

Giá trị a ở cuối if, giá trị b ở cuối else là kết quả trả về và gán vào cho biến max.

Như vậy tới đây Tui đã hướng dẫn xong cấu trúc điều khiển if, else trong Kotlin, các bạn chú ý học kỹ và hiểu được nó thông qua các ví dụ ở trên nhé. Đặc biệt nắm được lưu đồ hoạt động, cách viết theo dạng biểu thức của if else

Các bạn có thể tải source code bài này ở đây: http://www.mediafire.com/file/6c5swjx84rl9edp/HocIfElse.rar

Hẹn gặp các bạn ở những bài tiếp theo

Chúc các bạn thành công!

Trần Duy Thanh (http://ssoftinc.com/)

Bài 9- Nhập dữ liệu từ bàn phím với Kotlin

[polldaddy poll=9764234]

Chào các bạn đến với bài học Nhập dữ liệu từ bàn phím với Kotlin, trong bài học này Tui sẽ hướng dẫn các bạn cách thức nhập dữ liệu từ bàn phím như thế nào.

Với Kotlin, để nhập dữ liệu từ bàn phím ta dùng hàm readLine(), hàm này nằm trong thư viện mặc định kotlin.io

Hàm readLine() sẽ trả về một chuỗi dữ liệu được nhập vào từ bàn phím hoặc là giá trị null nếu như không có dữ liệu.

Từ chuỗi kết quả này ta có thể ép kiểu dữ liệu về bất kỳ kiểu nào mà ta mong muốn ứng với giá trị nhập vào cho phù hợp.

Ví dụ để nhập một chuỗi:

[code language=”groovy”]

fun main(args: Array) {
println(“Bồ nhí bạn tên gì?:”)
var ten:String?= readLine()
println(“Bạn nhập tên:”)
println(ten)
}

[/code]

Bạn để ý ở trên Tui khai báo String? tức là kiểu dữ liệu có dạng nullable, đây là một cách thức khai báo mới trong Kotlin. Tương tự cho Int?, Double?

Với một số có định dạng chuỗi trong Kotlin ta luôn luôn chuyển được kiểu dữ liệu về đúng dạng thức ban đầu. String trong Kotlin được hỗ trợ tập các phương thức:

Hàm Mô tả Ví dụ
toBoolean()  Chuyển chuỗi về Boolean  “true”.toBoolean()
toByte()  Chuyển chuỗi về Byte “3”.toByte()
toShort()  Chuyển chuỗi về Short “30”.toShort()
toInt()  Chuyển chuỗi về Int “15”.toInt()
toLong()  Chuyển chuỗi về Long “100”.toLong()
toFloat()  Chuyển chuỗi về Float “15.5”.toFloat()
toDouble()  Chuyển chuỗi về Double “15.5”.toDouble()

Ví dụ Coding:

[code language=”groovy”]

fun main(args: Array) {
var x1:Boolean=”true”.toBoolean()
println(x1)

var x2:Byte=”3″.toByte()
println(x2)

var x3:Short=”30″.toShort()
println(x3)

var x4:Int=”15″.toInt()
println(x4)

var x5:Long=”100″.toLong()
println(x5)

var x6:Float=”15.5″.toFloat()
println(x6)

var x7:Double=”15.5″.toDouble()
println(x7)
}

[/code]

Chạy đoạn code trên ta sẽ có các kết quả:

true
3
30
15
100
15.5
15.5

Ví dụ viết chương trình giải phương  trình Bậc 1, bài này Tui sẽ áp dụng readLine() nhập liệu từ bản phím để giải phương trình bậc 1, tuy nhiên Tui sẽ không giải thích cách thức hoạt động của If, Else mà bài sau Tui mới đi vào chi tiết:

[code language=”groovy”]

fun main(args: Array) {
var a:Double=0.0
var b:Double=0.0
println(“Nhập a:”)
var s= readLine()
if(s!=null)
a=s.toDouble()
println(“Nhập b:”)
s= readLine()
if(s!=null)
b=s.toDouble()
if(a==0.0 && b==0.0)
{
println(“Phương trình vô số nghiệm”)
}
else if(a==0.0 && b!=0.0)
{
println(“Phương trình vô nghiệm”)
}
else
{
var x=-b/a
println(“No x=”+x)
}
}

[/code]

Chạy đoạn code trên ta sẽ có các kết quả:

Nhập a:
3
Nhập b:
7
No x=-2.3333333333333335

Như vậy tới đây Tui đã hướng dẫn xong cách nhập dữ liệu từ bàn phím trong Kotlin, các bạn chú ý học kỹ và hiểu được nó thông qua các ví dụ ở trên nhé.

Các bạn có thể tải source code bài này ở đây: http://www.mediafire.com/file/4456wayewzewxa1/HocNhapLieu.rar

Hẹn gặp các bạn ở những bài tiếp theo

Chúc các bạn thành công!

Trần Duy Thanh (http://ssoftinc.com/)

Bài 8 – Các toán tử quan trọng trong Kotlin

[polldaddy poll=9764234]

Mỗi một ngôn ngữ lập trình đều có một tập các toán tử quan trọng để giúp ta tạo các biểu thức trong mã lệnh để giải quyết một số vấn đề liên quan nào đó, và các toán tử này cũng được Kotlin Override thành các phương thức(ta có thể sử dụng các Operator thuần túy và cũng có thể dùng bằng các phương thức):

  1. Toán tử một ngôi
  2. Toán tử số học cơ bản
  3. Toán tử gán
  4. Toán tử So sánh
  5. Toán tử Logic
  6. Toán tử tăng dần giảm dần
  7. Độ ưu tiên toán tử

Bây giờ ta đi chi tiết vào từng loại toán tử:

1. Toán tử một ngôi:

Toán tử Mô tả Phương thức Ví dụ
 +  Số dương a.unaryPlus() var a:Int=-8
var b=a.unaryPlus()
 –  Số âm a.unaryMinus() var a:Int=-8
var b=a.unaryMinus()

Ví dụ:

[code language=”groovy”]

fun main(args: Array) {
var a:Int=-8
var b=a.unaryPlus()
var c=a.unaryMinus()
println(“a=”+a)
println(“b=”+b)
println(“c=”+c)
}

[/code]

Chạy đoạn code trên ta sẽ có các kết quả:

a=-8
b=-8
c=8

Chú ý bản thân unaryPlus và unaryMinus không làm thay đổi giá trị nội tại của biến, mà nó trả về một giá trị, ta cần có biến để lưu lại giá trị này.

2. Toán tử số học cơ bản:

Toán tử Mô tả Phương thức Ví dụ
 +  Cộng a.plus(b)  8 + 5 => 13

8.plus(5) =>13

 –  Trừ a.minus(b) 8-5 =>3

8.minus(5) =>3

 *  Nhân times  8*5 =>40

8.times(5) =>40

 /  Chia div  8/5  => 1

8.div(5) => 1

 %  Chia lấy phần dư rem  8 % 5 => 3

8.rem(5) =>3

Ví dụ:

[code language=”groovy”]

fun main(args: Array) {
var a:Int=8
var b:Int=5
println(“Phép cộng cách 1:”+a+”+”+b+”=”+(a+b))
println(“Phép cộng cách 2:”+a+”+”+b+”=”+(a.plus(b)))
println(“Phép trừ cách 1:”+a+”-“+b+”=”+(a-b))
println(“Phép trừ cách 2:”+a+”-“+b+”=”+(a.minus(b)))
println(“Phép nhân cách 1:”+a+”*”+b+”=”+(a*b))
println(“Phép nhân cách 2:”+a+”*”+b+”=”+(a.times(b)))
println(“Phép chia cách 1:”+a+”/”+b+”=”+(a/b))
println(“Phép chia cách 2:”+a+”/”+b+”=”+(a.div(b)))
println(“Lấy dư cách 1:”+a+”/”+b+”=”+(a%b))
println(“Lấy dư cách 2:”+a+”/”+b+”=”+(a.rem(b)))
println(8.plus(9))
}

[/code]

Chạy đoạn code trên ta sẽ có các kết quả:

Phép cộng cách 1:8+5=13
Phép cộng cách 2:8+5=13
Phép trừ cách 1:8-5=3
Phép trừ cách 2:8-5=3
Phép nhân cách 1:8*5=40
Phép nhân cách 2:8*5=40
Phép chia cách 1:8/5=1
Phép chia cách 2:8/5=1
Lấy dư cách 1:8/5=3
Lấy dư cách 2:8/5=3
17

3. Toán tử gán:

Toán tử Mô tả Ví dụ Tương đương với
 =  Phép gán giá trị bên phải cho biến bên trái dấu bằng  x=5
 +=  Cộng và gán x=2

x+=5

==>x=7

 x=x+5
 -=  Trừ và gán x=2

x-=5

==>x=-3

 x=x-5
 *=  Nhân và gán x=2

x*=5

==>x=10

 x=x*5
 /=  Chia và gán x=7

x/=5

==>x=1

 x=x/5
%=  Chia lấy dư x=7

x%=5

==>x=2

x=x%5

Ví dụ:

[code language=”groovy”]

fun main(args: Array) {
var x:Int=5
x+=2
println(“x=”+x)
x-=2
println(“x=”+x)
x*=2
println(“x=”+x)
x/=2
println(“x=”+x)
x=7
x%=3
println(“x=”+x)
}

[/code]

Chạy đoạn code trên ta sẽ có các kết quả:

x=7
x=5
x=10
x=5
x=1

4. Toán tử So sánh:

Toán tử Mô tả Phương thức Ví dụ
== So sánh bằng a.equals(b) 5 == 5 => kết quả True
!= So sánh không bằng !a.equals(b) 5 != 5  => kết quả False
< So sánh nhỏ hơn a.compareTo(b) < 0 5 < 5  => kết quả False
<= So sánh nhỏ hơn hoặc bằgg a.compareTo(b) <= 0 5 <= 5 => kết quả True
> So sánh lớn hơn a.compareTo(b) > 0 5 > 5.5 => kết quả False
>= So sánh lớn hơn hoặc bằng a.compareTo(b) >= 0 113>= 5 => kết quả True

Ví dụ:

[code language=”groovy”]
fun main(args: Array) {
var a:Int=8
var b:Int=5
println(a==b)
println(a.equals(b))
println(!a.equals(b))
println(a.compareTo(b))
println(3.compareTo(3))
println(3.compareTo(5))
println(5.compareTo(3))
}

[/code]

Chạy đoạn code trên ta sẽ có các kết quả:

false
false
true
1
0
-1
1

5. Toán tử Logic:

Toán tử Mô tả Phương thức Ví dụ
 && Toán tử Và: Nếu cả hai điều kiện là True thì kết quả sẽ là True a.and(b) x=false

y=true

x&&y==>false

 || Toán tử Hoặc: Chỉ cần một điều kiện True thì nó True, tất cả điều kiện False thì nó False a.or(b) x=false
y=truex||y==>true

Ví dụ:

[code language=”groovy”]

fun main(args: Array) {
var x:Boolean=true
var y:Boolean=false
var z:Boolean=false
println(“x=”+x)
println(“y=”+y)
println(“z=”+z)
println(“x&&y=”+(x&&y))
println(“x.and(y)=”+x.and(y))
println(“x || y =”+(x || y))
println(“x.or(y)=”+x.or(y))
println(“x || z =”+(x || z))
println(“x.or(z)=”+x.or(z))
println(“x && z =”+(x && z))
println(“x.and(z)=”+x.and(z))
println(“y || z =”+(y || z))
println(“y.or(z)=”+y.or(z))
println(“y && z =”+(y && z))
println(“y.and(z)=”+y.and(z))
println(“x && y && z =”+(x && y && z))
println(“x.and(y).and(z)=”+x.and(y).and(z))
println(“x|| y||z =”+(x|| y||z))
println(“x.or(y).or(z)=”+x.or(y).or(z))
}

[/code]

Chạy đoạn code trên ta sẽ có các kết quả:

x=true
y=false
z=false
x&&y=false
x.and(y)=false
x || y =true
x.or(y)=true
x || z =true
x.or(z)=true
x && z =false
x.and(z)=false
y || z =false
y.or(z)=false
y && z =false
y.and(z)=false
x && y && z =false
x.and(y).and(z)=false
x|| y||z =true
x.or(y).or(z)=true

6. Toán tử tăng dần giảm dần

Toán tử Mô tả Phương thức Ví dụ
 ++ Tăng nội tại biến lên một đơn vị a.inc() x=5

x++

=>x=6

 — giảm nội tại biến xuống một đơn vị a.dec() x=5
x–==>x=4

Chú ý bản thân hàm inc() và dec() sẽ không làm thay đổi(tăng hay giảm) giá trị nội tại của biến, ta cần có biến khác để lưu giá trị bị thay đổi.

Với toán tử tăng dần và giảm dần này thì việc đặt ++ hay — đằng trước và đằng sau biến có ý nghĩa khác nhau trong một biểu thức phức tạp, thông thường nó sẽ hoạt động theo nguyên tắc (có một số trường hợp đặc biệt phá vỡ nguyên tắc này ta không xét tới vì nó vô cùng hiếm gặp, chủ yếu do Testing Problem):

  • Bước 1: Ưu tiên xử lý Prefix trước (các ++ hay — đặt trước biến)
  • Bước 2: Tính toán các phép toán còn lại trong biểu thức
  • Bước 3: Gán giá trị ở bước 2 cho biến lưu trữ kết quả ở bên trái dấu bằng
  • Bước 4: Xử lý Post fix (các ++ hay — đặt sau biến)

Ví dụ:

[code language=”groovy”]

fun main(args: Array) {
var a:Int=5
var b:Int=8
var c:Int=2
a–
b++
var z=a++ + ++b – –c + 7
println(“a=”+a)
println(“b=”+b)
println(“c=”+c)
println(“z=”+z)
}

[/code]

Chạy đoạn code trên ta sẽ có các kết quả:

a=5
b=10
c=1
z=20

Các bạn tự giải thích vì sao ra kết quả ở trên nhé, Tui Busy và cũng chủ ý không giải thích, bạn hãy làm theo 4 bước ở trên thì sẽ ra được kết quả

7. Độ ưu tiên toán tử:

Kotlin có ràng buộc thứ tự ưu tiên của các toán tử. Tuy nhiên tốt nhất là các bạn hay điều khiển nó bằng cách dùng cặp ngoặc tròn ( ) để nó rõ nghĩa hơn. Bảng dưới đây để tham khảo độ ưu tiên từ cao xuống thấp (tuy nhiên có thể quên nó đi mà hãy dùng ngoặc tròn () để chỉ định rõ).

Thứ tự ưu tiên Toán tử Miêu tả
1 * / % Phép nhân, chia, lấy phần dư
2 + – Toán tử Cộng, Trừ
3 <= < > >= Các toán tử so sánh
4 <> == != Các toán tử so sánh
5 = %= /=  -= += *= Các toán tử gán
6 && , || Các toán tử logic

Như vậy tới đây Tui đã hướng dẫn xong các toán tử thường dùng nhất trong Kotlin, các bạn chú ý học kỹ và hiểu được nó thông qua các ví dụ ở trên nhé.

Các bạn có thể tải source code bài này ở đây: http://www.mediafire.com/file/ty4wjwe0bor55o0/HocToanTu.rar

Hẹn gặp các bạn ở những bài tiếp theo

Chúc các bạn thành công!

Trần Duy Thanh (http://ssoftinc.com/)

Bài 7 – Ép kiểu dữ liệu trong Kotlin

[polldaddy poll=9764234]

Trong bài 6 ta đã nắm rõ về các kiểu dữ liệu cũng như cách khai báo biến, trong bài này chúng ta qua phần Ép kiểu dữ liệu trong Kotlin.

Vì sao phải ép kiểu?

Trong quá trình tính toán đôi khi kết quả trả về không còn giống với kiểu dữ liệu chỉ định ban đầu nên ta cần ép kiểu

Khi ép kiểu thường ta gặp 2 trường hợp:

Ép kiểu rộng

Đưa từ kiểu có vùng lưu trữ nhỏ lên kiểu có vùng lưu trữ lớn==>không sợ mất mát dữ liệu.

Ví dụ: Byte=>Short=>Int=>Long=>Float=>Double

Ép kiểu hẹp

Đưa từ kiểu có vùng lưu trữ lớn về kiểu có vùng lưu trữ nhỏ==>có thể bị mất mát dữ liệu

Ví dụ:  Double=>Float=>Long=>Int=>Short=>Byte

Vậy thì Ép như thế nào?

Trong Kotlin, bất kỳ kiểu dữ liệu number nào cũng có sẵn các phương thức :

  • toByte(): Byte
  • toShort(): Short
  • toInt(): Int
  • toLong(): Long
  • toFloat(): Float
  • toDouble(): Double
  • toChar(): Char

Các phương thức trên thường được gọi là ép kiểu tường minh (chỉ đích danh kiểu dữ liệu nào sẽ được ép về), còn gọi tiếng anh cho nó sang miệng là Explicit Conversion.

Ta thử chạy đoạn ép kiểu sau:

[code language=”java”]

var X:Int=10
var D:Double=X.toDouble()

println(“X=”+X)
println(“D=”+D)

[/code]

Kết quả X =10, và D là 10.0 vì 10 được đưa về số Double là 10.0

Trường hợp này là ép kiểu rộng ==> Đưa từ kiểu có vùng lưu trữ nhỏ hơn lên kiểu dữ liệu có vùng lưu trữ lớn hơn

Xét tiếp ví dụ sau:

[code language=”java”]
var F:Double=10.5
var Y:Int = F.toInt()
println(“F=”+F)
println(“Y=”+Y)
[/code]

Kết quả F=10.5 và Y=10 ==> bị mất mát dữ liệu, trường hợp này chính là Ép hẹp, đưa từ kiểu dữ liệu có vùng lưu trữ lớn hơn == > về kiểu dữ liệu có vùng lưu trữ nhỏ hơn . Việc Ép Hẹp này rất nguy hiểm vì nó làm mất mát dữ liệu, đặc biệt các bài toán liên quan tới sai số yêu cầu tối thiểu, hay chuyển khoản ngân hàng. Cần tránh trường hợp này.

Ngoài ra Kotlin còn hỗ trợ một trường hợp là Ép kiểu không tường minh (gọi sang miệng bên tiếng anh làm Implicit Conversion), tức là Kotlin tự nội suy ra kiểu dữ liệu để gán cho biến, thường do các phép toán số học tạo ra, ví dụ:

[code language=”java”]
var t=13L+1
println(t)
[/code]

13L có kiểu LONG, 1 có kiểu Int ==> Kotlin tự lấy kiểu dữ liệu lớn nhất làm chuẩn và gán cho t==>t có kiểu Long

Như vậy Tui đã trình bày xong cách ép kiểu trong Kotlin, bài này rất quan trọng. Chúng ta cần nắm chắc quy tắc ép kiểu để lựa chọn giải pháp ép kiểu cho đúng. Và chắc chắn trong quá trình lập trình ta phải gặp thường xuyên với các trường hợp ép kiểu.

Soure code : http://www.mediafire.com/file/g6bp1c7og2sqzee/HocEpKieu.rar

Hẹn gặp lại các bạn ở bài tiếp theo

Chúc các bạn thành công

Trần Duy Thanh (http://ssoftinc.com/)

Bài 6-Kiểu dữ liệu và cách khai báo biến trong Kotlin

[polldaddy poll=9764234]

Mỗi một ngôn ngữ lập trình đều cung cấp một số kiểu dữ liệu có sẵn để ta lưu trữ xử lý. Kotlin cũng vậy, nó cung cấp hàng loạt kiểu dữ liệu như số thực, số nguyên, ký tự, chuỗi, luận lý và mảng… Có điều là mọi kiểu dữ liệu trong Kotlin đều là hướng đối tượng. Việc nắm chắc ý nghĩa của từng kiểu dữ liệu giúp ta lựa chọn cách khai báo biến có kiểu phù hợp, giúp tối ưu hóa hệ thống.

Dưới đây là hình Tui vẽ  tổng quan lại các kiểu dữ liệu được xây dựng sẵn trong Kotlin:

Số thực sẽ có 2 loại đó là Double và Float, Nếu có hằng số để xác định nó là số thực nào thì ta có thể thêm ký tự f hoặc F đằng sau hằng số đó:

ví dụ: 113.5 –>số Double , còn 113.5F hoặc 113.5f –>số Float

Số nguyên có 4 loại : Long, Int, Short, Byte . Ta chú ý trường hợp hằng số của Long và Int bằng cách thêm ký tự L

ví dụ: 113–>số Int, còn 113L –> số Long (không dùng l thường)

Ta có thể khai báo biến cho các kiểu dữ liệu này như sau:

var tên_biến  : Kiểu_Dữ_Liệu=Giá_Trị_Mặc_Định

ví dụ:

[code language=”java”]
var x:Long=100L
var y:Double=113.5
var f:Float=113.5f
var i:Int =113
var s:Short=8
var b:Byte=1
[/code]

Ta để ý với Kotlin thì không cần thêm dấu chấm phẩy khi kết thúc lệnh

Kiểu ký tự dùng để lưu trữ một ký tự nằm trong nháy đơn:

[code language=”java”]

var c:Char=’c’

[/code]

Kiểu chuỗi dùng để lưu tập các ký tự được để trong cặp nháy đôi, dùng đối tượng String để khai báo:

[code language=”java”]

var ten:String=”Trần Duy Thanh-0987773061-http://ssoftinc.com/”

[/code]

Ngoài ra ta có thể khai báo chuỗi trên nhiều dòng bằng cách để trong cặp 3 dấu nháy kép:

[code language=”java”]

fun main(args: Array) {
var ten:String=”Trần Duy Thanh-0987773061-http://ssoftinc.com/”
var address:String=”””
số 24 đường 7, khu phố X
phường 5, Quận 9
TP.HCM
“””
println(address)
}

[/code]

Kiểu luận lý dùng đối tượng Boolean để khai báo, Kiểu dữ liệu này sẽ lưu trữ 2 giá trị true hoặc false, kiểu này rất quan trọng, được sử dụng nhiều trong việc kiểm tra các điều kiện:

[code language=”java”]

var kq:Boolean=true

[/code]

Với các kiểu dữ liệu Mảng, Kotlin cung cấp cho ta 8 loại mảng ứng với 8 kiểu dữ liệu được built-in trong Kotlin (ngoại trừ String).

Để khai báo và sử dụng kiểu dữ liệu ta làm như sau:

var Tên_Mảng: Kiểu_Dữ_Liệu_Mảng=XXXArrayOf(giá trị 1, giá trị 2,…, giá trị n)

Với XXX là 8 kiểu dữ liệu tương ứng(viết thường ký tự đầu), ví dụ:

[code language=”java”]
var arrX:IntArray= intArrayOf(1,2,3,5)
println(arrX[1])
var arrY:DoubleArray= doubleArrayOf(1.5,2.6,9.0,10.3)
println(arrY[3])
var arrC:CharArray= charArrayOf(‘a’,’b’,’c’)
println(arrC[0])
[/code]

Ngoài ra nếu muốn khai báo hằng số thì ta dùng val thay vì var. var cho phép thay đổi giá trị của biến, còn val không cho phép. Ta thường nói mutable khi khai báo var, readonly khi khai báo val.

[code language=”java”]

val PI:Double =3.14
PI=3.15//không được phép vì PI là readonly

[/code]

Như vậy tới đây Tui đã trình bày xong các kiểu dữ liệu và cách khai báo biến trong Kotlin, các bạn nhớ làm lại bài này nhé để hiểu rõ hơn về kiểu dữ liệu trong Kotlin nhé, cần so sánh sự khác biệt về kiểu dữ liệu cũng như cách khai báo biến so với java.

Hẹn gặp lại các bạn ở những bài sau!

Source code bài này: http://www.mediafire.com/file/2zdwn1pp2e74gc5/HocKieuDuLieu.rar

Chúc các bạn thành công

Trần Duy Thanh (http://ssoftinc.com/)

Bài 5 – Các cách ghi chú quan trọng khi lập trình Kotlin

[polldaddy poll=9764234]

Tại sao nên ghi chú trong quá trình coding?

Theo quan điểm cá nhân của Tui thì một số lý do sau chúng ta cần phải ghi chú trong quá trình viết mã lệnh:

  • Mục đích của ghi chú là giúp giảng giải ngữ nghĩa của các câu lệnh, cũng như chức năng của các hàm, các lớp. Giúp cho các Lập trình viên có thể dễ dàng đọc lại, training nhân viên mới, tạo tài liệu từ các ghi chú
  • Các dự án thường làm theo đội, nếu không ghi chú làm sao hiểu? Bản thân ta viết sau 1 thời gian dài cũng sẽ bị quên, phải ghi chú lại để đỡ tốn tài nguyên nhân lực, thời gian, chi phí…
  • Rèn luyện tính chuyên nghiệp trong quá trình làm việc
  • Là tinh thần trách nhiệm đối với những vấn đề mình được giao phải hoàn thành, cần được giải thích rõ để khi Say Goodbye người khác vào còn ăn được code của mình

Khi lập trình Kotlin, ta có 3 cách viết ghi chú thường dùng, và những ghi chú này sẽ được bỏ qua trong quá trình biên dịch:

  • Ghi chú trên một dòng
  • Ghi chú trên nhiều dòng
  • Ghi chú theo cú pháp KDoc (KDoc Syntax)

Giờ Ta đi chi tiết vào từng loại ghi chú:

1. Ghi chú trên một dòng ta dùng cú pháp //Ghi chú 1 dòng

Ví dụ:

[code language=”java”]
fun main(args: Array) {
//gọi hàm Cộng 2 số
val t:Int=Cong(7,8)
println(t)
}
[/code]

Bạn thấy dòng số 2 có chuỗi //gọi hàm cộng 2 số =>đây chính là dòng ghi chú, cú pháp này cho phép ta ghi chú 1 dòng, dựa vào đây ta có thể hiểu lệnh  bên dưới dùng để làm gì

2. Ghi chú trên nhiều dòng

Cách ghi chú này sẽ được bao bọc bởi

/* ghi chú dòng 1

ghi chú dòng 2

ghi chú dòng n

*/

Cho phép ta ghi chú trên nhiều dòng khác nhau.

Ví dụ:

[code language=”java”]
/*
Đây là hàm main
dùng để chạy chương trình
*/
fun main(args: Array) {
//gọi hàm Cộng 2 số
val t:Int=Cong(7,8)
println(t)
}
[/code]

Ta quan sát phía trên hàm main có ghi chú nhiều dòng để giải thích chi tiết cho một lệnh, một khối lệnh hay một hàm nào đó (tùy mục đích và văn phong của ta)

3. Ghi chú theo cú pháp KDoc (KDoc Syntax)

Cú pháp này được bao bọc bởi /**  ghi chú dạng Kdoc Syntax */

Kotlin có tool để generate ra Document, tool này gọi là Dokka ,  https://github.com/Kotlin/dokka/blob/master/README.md

KDoc Syntax có một số Blog Tag ta cần nắm:

@author : tác giả

@sample: Ví dụ

@param : parameter trong hàm

@return : kết quả trả về của hàm

Ví dụ:

[code language=”java”]
/**
* @author Trần Duy Thanh
* @param x biến x
* @param y biến y
* @return tổng của x và y
* @sample x=5, y=6 => 11
* Đây là ghi chú docs
*/
fun Cong(x:Int,y:Int):Int
{
return x+y
}
/*
Đây là hàm main
dùng để chạy chương trình
*/
fun main(args: Array) {
//gọi hàm Cộng 2 số
val t:Int=Cong(7,8)
println(t)
}
[/code]

Như Vậy Tui đã trình bày xong các cách ghi chú khi lập trình với Kotlin, các bạn chú ý tuân thủ các ghi chú nhé.

Hẹn gặp lại các bạn ở những bài tiếp theo

Source code bài này: http://www.mediafire.com/file/noddqk98ug39pn0/HocGhiChu.rar

Chúc các bạn thành công

Trần Duy Thanh (http://ssoftinc.com/)

Bài 4-Cách xuất dữ liệu ra màn hình Kotlin

[polldaddy poll=9764234]

Như vậy ở bài 3 chúng ta đã biết tạo một Project Kotlin như thế nào rồi, trong bài này chúng ta sẽ học cách thức xuất dữ liệu ra màn hình Kotlin.

Trong Kotlin để xuất dữ liệu ra màn hình ta dùng 2 hàm chính đó là print() và println() . Hai hàm này thuộc thư viện kotlin.io

hàm println() dùng để xuất dữ liệu trên các dòng khác nhau, ví dụ:

[code language=”java”]

println(“Obama”)
println(“Putin”)
println(“Kim Jong Un”)

[/code]

Kết quả:

Hàm print() để xuất dữ liệu trên cùng một dòng, ví dụ:

[code language=”java”]

print(“Obama”)
print(“Putin”)
print(“Kim Jong Un”)

[/code]

kết quả:

Ngoài ra Kotlin cũng cung cấp một số ký tự đặc biệt để ta điều hướng cách thức hiển thị dữ liệu, chẳng hạn như:

  • \n để Xuống dòng
  • \t để thụt đầu dòng
  • \” để trích dẫn

Ví dụ ta xuất bài thơ sau:

[code language=”java”]
println(“Quanh năm buôn bán ở mom sông”)
println(“Nuôi đủ năm con với một chồng”)
println(“\tlặn lội thân cờ khi quãng vắng”)
println(“\teo sèo mặt nước buổi đò đồng”)
println(“Một duyên hai nợ âu đành phận”)
println(“Năm nắng mười mưa há chẳng công”)
println(“\tCha mẹ thói đời \”ăn ở bạc\””)
println(“\tCó chồng hờ hững cũng như không”)
[/code]

kết quả:

Như vậy Tui đã hướng dẫn xong cách thức xuất dữ liệu ra màn hình, các bạn thử lại 2 hàm print() và println() này nhé. Chúc các bạn thành công.

Source code tải ở đây: http://www.mediafire.com/file/wcjeoait1ubpl9a/XuatDuLieu.rar

Hẹn gặp các bạn ở các bài tiếp theo

Trần Duy Thanh (http://ssoftinc.com/)

Bài 3-Tạo ứng dụng Kotlin đầu tiên

[polldaddy poll=9764234]

bài  2 chúng ta đã biết cách tải và cài đặt công cụ lập trình Kotlin. Trước khi đi vào chi tiết về Kotlin thì ta cần biết làm thế nào để tạo một Project Kotlin đầu tiên, ta thường nói Tiếng Anh cho sang miệng đó là “Hello World Project”. Ta không nói Tiếng Anh thì mọi người tưởng chúng ta dốt, nhưng đã nói rồi thì … họ không còn nghi ngờ gì nữa.

Khởi động IntelliJ IDEA, từ short cut ở màn hình Desktop ta double click để khởi động:

Màn hình Welcome của IntelliJ IDEA, ta bấm Create New Project:  Sau khi bấm Create New Project, màn New Project xuất hiện:

Ở màn hình New Project bên trên, bạn chú ý góc phải trên cùng có button “New” cùng hàng với Project SDK. Đây chính là nơi chọn đường dẫn mà bạn đã cài đặt JDK, bạn bấm vào Button này để trỏ chính xác tới nơi mà bạn đã cài đặt (nên cài JDK từ bản 1.8 trở lên). Mục danh sách bên dưới các bạn checked vào Kotlin (Java). Sau khi cấu hình xong bạn sẽ có giao diện tương tự như dưới đây:

Bạn thấy đó, ở trên JDK đã được update, tiếp theo bạn bấm Next :

Mục Project name: Tên của dự án, bạn đặt “HelloWorld

Mục Project Location: Nơi lưu trữ dự án, bạn trỏ tới thư mục mà bạn muốn lưu trữ.

Sau đó bấm Finish để tạo Project HelloWorld. Nếu chương trình kiểm tra thấy đường dẫn chưa tồn tại thì sẽ xuất hiển cửa sổ xác nhận để tạo:

Ta bấm OK để đồng ý tạo đường dẫn lưu Project HelloWorld.

Đây là màn hình cấu trúc Project Kotlin được tạo ra:

– Thư mục .idea cho ta các tập tin cấu hình, tham chiếu thư viện.

– Thư mục src là nơi lưu trữ các tập tin, lớp source code cho dự án.

– File HelloWorld.iml bản chất là một file XML, được lưu các thông số cấu hình mặc định cho dự án.

-External Libraries: Thư viện liên kết ngoài: Bắt buộc phải có JDK, KotlinJavaRuntime, các thư viện này sẽ được tham chiếu trong tập tin KotlinJavaRuntime.xml.

Để tạo một Mã nguồn bằng Kotlin ta tiến hành: Bấm chuột phải vào thư mục src/ chọn New/ chọn Kotlin File/Class:

Màn hình yêu cầu tạo Kotlin File xuất hiện như dưới đầy:

Mục Name: Bạn đặt tên tùy ý, ví dụ Tui đặt là app

Mục Kind: Chọn File(bài này sẽ chọn File, các bài sau tùy trường hợp mà ta chọn các loại khác trong combobox)

Nhấn OK để tạo, ta thấy cấu trúc source code sẽ như sau:

Như vậy bạn quan sát thấy, phần mở rộng của Kotlin là kt, ta tiến hành Coding để xuất ra dòng thông báo chất nhất quả đất “Hello World! I’m http://ssoftinc.com/“:

Trong màn hình soạn thảo coding của app.kt, bạn chỉ cần gõ chữ main rồi nhấn tổ hợp phím ctrl+space, hàm main đầy đủ sẽ được xuất hiện:

Khi bạn nhấn Ctrl+spacce bạn thấy dòng màu xanh bên trên xuất hiện với chữ main() function==>bạn chỉ cần nhấn Enter là tự động xuất hiện lệnh đầy đủ (mấy cái này gọi là Template, chả có gì cao siêu đâu, ta có thể tự cấu hình được. Còn đầy là các Template mặc định của IntelliJ IDEA):

Ở trên bạn thấy cấu trúc hàm main, với từ khóa fun (tức là function), bên trong là các arguments input đầu vào khi chạy mã lệnh (thường được dùng để truyền thông số gọi qua lại giữa các ứng dụng khác nhau). Bạn muốn xuât dòng lệnh thông báo ra màn hình thì viết bên trong hàm main, ví dụ:

Bạn quan sát nó có gì lạ với Java? kết thúc câu lệnh không phải gõ chấm phẩy đúng không?

Bây giờ làm sao để chạy được đoạn lệnh này? ta có thể vào menu Run/Run. Hoặc bấm chuột phải vào app.kt rồi chọn Run App.kt như hình dưới đây:

Bạn chờ chương trình biên dịch và chạy ra kết quả như dưới đây:

Như vậy Tui đã hướng dẫn xong chi tiết cách tạo một Project  Kotlin ban đầu như thế nào, cũng như cách chạy nó, Các bạn làm bài này để thành thạo các thao tác cơ bản đầu tiên trước nhé.

Tải source code tại đây: http://www.mediafire.com/file/jccf8ghwar4d7de/HelloWorld.rar

Chúc các bạn thành công

hẹn gặp lại các bạn ở các bài hướng dẫn tiếp theo

Trần Duy Thanh (http://ssoftinc.com/)

Bài 2-Cài đặt công cụ lập trình Kotlin

[polldaddy poll=9764234]

bài 1 Tui  đã trình bày lý do vì sao nên học Kotlin, Trong bài này Tui sẽ hướng dẫn các bạn cách cài đặt công cụ lập trình Kotlin.

Để lập trình được Kotlin các bạn có thể sử dụng Website để thử nghiệm online https://try.kotlinlang.org/

Hoặc cài đặt phần mềm IntelliJ IDEA , Eclipse Neon , Command Line Compiler , Build Tools (Ant, Maven, Gradle,    Griffon (external support))

Bài này Tui sẽ hướng dẫn cách cài đặt phần mềm IntelliJ IDEA để lập trình Kotlin (vì xuyên suốt các bài hướng dẫn lập trình Kotlin thì Tui sẽ dùng công cụ này để minh họa)

Trước tiên bạn cần cài JDK vào máy trước (Kotlin chạy trên JVM, cài bản 1.8 trở lên), khóa học Kotlin thường dành cho những ai đã rành về Java. Bước này các bạn tự xử nhé.

Có 2 trường hợp để tải phần mềm IntelliJ IDEA:

1.Nếu bạn là lập trình viên bình thường

2.Nếu bạn là Teacher hoặc Student (dành cho Education)

Bây giờ Tui sẽ hướng dẫn chi tiết 2 trường hợp tải phần mềm này

Trường hợp 1: Nếu bạn là lập trình viên bình thường

Các bạn tải bản Community của IntelliJ IDEA tại link sau: http://www.jetbrains.com/idea/download/index.html

Ở màn hình trên, ta chọn Download Exe trong mục Community, tại thời điểm Tui viết bài hướng dẫn này là ngày 21/05/2017 nên bạn sẽ có kết quả sau (tùy thuộc vào thời điểm bạn tải khác nhau mà có thể có version khác):

Ta thấy với phiên bản hiện tại thì có tập tin “ideaIC-2017.1.3.exe”, dung lượng hơn 351MB. Để cài đặt ta double click vào tập tin vừa tải về máy:

Bấm Next để tiếp tục, màn hình yêu cầu chọn nơi cài đặt sẽ hiển thị ra như dưới đây:

Ta có thể để mặc định rồi bấm Next, Chương trình sẽ hiển thị các cấu hình lựa chọn trong quá trình cài đặt, Ta chọn cấu hình như trên rồi bấm Next -> màn hình yêu cầu chọn Start Menu xuất hiện: Ta để mặc định rồi bấm Install, chờ chương trình hoàn tất việc cài đặt:

Sau khi cài đặt thành công, ta có giao diện thông báo như dưới đây:

Bấm Finish để hoàn tất việc cài đặt, nếu muốn hoàn tất và khởi động luôn phần mềm thì checked vào “Run IntelliJ IDEA Commynity Edition”, ta cũng có thể quan sát ngoài màn hình Desktop đã có shortcut để chạy phần mềm. Nếu là lần đầu chạy phần mềm bạn sẽ gặp cửa sổ sau:

Ta chọn Do not import settings rồi bấm OK, màn hình yêu cầu thiết lập Theme cho công cụ xuất hiện:

Có 2 màn hình nền mặc định ở trên, tùy bạn lựa chọn, sau đó bấm Skip All And Set Defaults cho lẹ, dưới đây là màn hình sau khi đã cấu hình xong IntelliJ IDEA, các lần sau khởi động sẽ tương tự:

Trường hợp 2: Nếu bạn là Teacher hoặc Student (dành cho Education)

Vào link : https://www.jetbrains.com/student/

Ta chọn Apply Now, màn hình đăng ký sẽ xuất hiện như dưới đây:

Ở màn hình trên bạn chọn Universities Email Address. Nếu là Giảng Viên thì chọn I’m a Teacher, còn nếu là Sinh Viên thì chọn I’m a Student

Nập đầy đủ tên và email rồi nhấn Apply For Free Products

Khi bạn nhấn nút này thì sẽ có 1 Email gửi tới email Education của bạn để yêu cầu bạn xác thực, nội dung giống như sau:

Ở màn hình Email xác thực, bạn nhấn vào nút Confirm Request để xác thực. Khi nhấn vào nút này bạn sẽ thấy một màn hình thông báo xác thực thành công như dưới đây:

Lúc này sẽ có 1 Email thứ 2 thông báo hướng dẫn cách Kích hoạt tài khoản education, bạn check email sẽ có nội dung tương tự dưới đây:

Bạn nhấn vào Activate Educational License để kích hoạt, lúc này sẽ có một Website xuất hiện, yêu cầu ta bấm Xác nhận:

Sau khi bấm Accept, bạn được yêu cầu nhập thông tin đăng nhập hệ thống:

Nhập thông tin xong bạn nhấn Submit để đăng ký tài khoản, lúc này màn hình quản lý Phần mềm bản quyền sẽ xuất hiện như dưới đây:

Bạn nhấn vào Download, nó xổ ra nhiều phần mềm. Cần phần mềm bản quyền nào thì cứ nhấn chọn mà tải:

Ở trên ta chọn IntelliJ IDEA Ultimate để tải:

Bạn bấm Download và tải, sau đó cài đặt giống trường hợp 1 nhé.

Như vậy tới đây Tui đã hướng dẫn xong cách tải và cài đặt công cụ lập trình Kotlin, bạn nào từng làm Android Studio thì thấy giao diện rất tương đồng đúng không?

Bài kế tiếp Tui sẽ hướng dẫn cách tạo 1 Project HelloWorld Kotlin, để có cảm giác lập trình với ngôn ngữ mới coóng này nhé.

Các bạn chú ý theo dõi

Chúc các bạn thành công

Trần Duy Thanh (https://ssoftinc.com/)