Tải bản đầy đủ (.pdf) (167 trang)

Giáo trình mô đun Phát triển ứng dụng di động cơ bản (Nghề: Tin học ứng dụng - Trình độ: Trung cấp) - Trường CĐ Kinh tế - Kỹ thuật Bạc Liêu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (9.36 MB, 167 trang )

UBND TỈNH BẠC LIÊU
TRƯỜNG CĐ KINH TẾ - KỸ THUẬT BẠC LIÊU

GIÁO TRÌNH

MƠ ĐUN: PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG CƠ BẢN
NGÀNH: TIN HỌC ỨNG DỤNG
TRÌNH ĐỘ: TRUNG CẤP
Ban hành kèm theo Quyết định số:
/QĐ- … ngày … tháng … năm ……
của Hiệu trưởng trường CĐ Kinh tế - Kỹ thuật Bạc Liêu

Bạc Liêu, năm 2020



TUYÊN BỐ BẢN QUYỀN
Tài liệu này thuộc loại sách giáo trình nên các nguồn thơng tin có thể được phép
dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo.
Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinh doanh
thiếu lành mạnh sẽ bị nghiêm cấm.
LỜI GIỚI THIỆU
Giáo trình được biên soạn theo sự chỉ đạo của Ban giám hiệu, nhằm nâng cao
chất lượng giảng dạy. Biên soạn theo đúng thời gian nhằm đáp ứng đúng kế hoạch đào
tạo. Phát triển ứng dụng di động là một mô đun chuyên môn bắt buộc trong chuyên
ngành Tin học ứng dụng.
Cấu trúc giáo trình gồm 10 bài: Bài 1: Cài đặt Android Studio và chạy ứng dụng
Hello World; Bài 2: Giao diện người dùng; Bài 3: Trình chỉnh sửa bố cục; Bài 4: Hiện
thị và cuộn văn bản; Bài 5: Activities và Intents; Bài 6: Vòng đời và trạng thái hoạt
động; Bài 7: Ý định ngầm; Bài 8: Trình gỡ lỗi; Bài 9: Kiểm tra mã; Bài 10: Thư viện
hỗ trợ.


Xin chân thành cảm ơn Ban Giám hiệu, Phòng Đào tạo, Khoa Cơ bản – Luật –
Nghiệp vụ đã chỉ đạo và góp ý cho giáo trình. Cảm ơn sâu sắc q Thầy cơ thuộc tổ
chun mơn Tin học đã tận tình phản biện, góp ý chun mơn cho giáo trình.
Mặc dù đã cố gắng biên soạn giáo trình đầy đủ nội dung theo chương trình và
trình bày trực quan, logic, dễ hiểu. Nhưng chắc chắn khơng tránh khỏi những thiếu xót,
rất mong sự thông cảm và mong tiếp tục nhận được các góp ý của q Thầy cơ và các
bạn học sinh.
Tác giả


MỤC LỤC
BÀI 1 .................................................................................................................................1
VIẾT CHƯƠNG TÌNH ĐẦU TIÊN BẰNG KOTLIN ................................................... 1
1. Chạy chương trình đầu tiên trong Kotlin ..................................................................... 2
2. Sửa đổi chương trình .................................................................................................... 3
3. Mở rộng chương trình .................................................................................................. 4
4. Tóm tắt ..........................................................................................................................6
BÀI 2 .................................................................................................................................7
VIẾT CHƯƠNG TRÌNH CHÚC MỪNG SINH NHẬT BẰNG KOTLIN .................... 7
1. Tạo lời chúc mừng sinh nhật ........................................................................................ 7
2. Tạo và sử dụng biến ......................................................................................................9
3. In biểu ngữ sinh nhật có đường viền ..........................................................................11
4. Tạo một chiếc bánh với nhiều lớp và nến .................................................................. 20
5. Mã giải pháp ............................................................................................................... 25
6. Khắc phục sự cố ......................................................................................................... 25
7. Tóm tắt ........................................................................................................................26
BÀI 3 ...............................................................................................................................28
TẢI VÀ CÀI ĐẶT ANDROID STUDIO ...................................................................... 28
1. Làm quen với Android Studio ....................................................................................28
2. Xác minh yêu cầu về hệ thống ................................................................................... 28

3. Tải Android Studio xuống ..........................................................................................29
4. Cài đặt Android Studio ...............................................................................................29
1. Tạo ứng dụng đầu tiên của bạn .................................................................................. 35
2. Chạy ứng dụng của bạn trên thiết bị ảo (trình mơ phỏng) .........................................40
3. Tìm tệp dự án của bạn ................................................................................................ 45
4. Tóm tắt ........................................................................................................................47
BÀI 5 ...............................................................................................................................49
TẠO ỨNG DỤNG THIỆP SINH NHẬT ...................................................................... 49
1. Thiết lập ứng dụng Chúc mừng sinh nhật ..................................................................49
2. Thêm Chế độ xem văn bản vào bố cục ...................................................................... 56
3. Thêm tạo kiểu cho văn bản .........................................................................................65
4. Tóm tắt ........................................................................................................................69
BÀI 6 ...............................................................................................................................71
THÊM HÌNH ẢNH VÀO ỨNG DỤNG ANDROID ....................................................71
1. Thiết lập ứng dụng ......................................................................................................71
2. Thêm ImageView ....................................................................................................... 74
3. Áp dụng các phương pháp lập trình hay .................................................................... 83
4. Tóm tắt ........................................................................................................................87
5. Bài tập ......................................................................................................................... 87
1. Tạo số ngẫu nhiên .......................................................................................................90
2. Tạo lớp Xúc xắc ..........................................................................................................91
3. Trả về giá trị của lượt gieo xúc xắc ............................................................................95
4. Thay đổi số trên mặt xúc xắc ..................................................................................... 97
5. Tuỳ chỉnh xúc xắc .......................................................................................................98
6. Áp dụng các phương pháp lập trình hay .................................................................. 100
7. Tóm tắt ......................................................................................................................101
BÀI 8 .............................................................................................................................102


TẠO ỨNG DỤNG TƯƠNG TÁC DICE ROLLER (ĐỔ XÚC XẮC) .......................102

1. Thiết lập ứng dụng ....................................................................................................103
2. Tạo bố cục cho ứng dụng ......................................................................................... 105
3. Giới thiệu về Activity ............................................................................................... 115
4. Tạo Nút (Button) tương tác ...................................................................................... 118
5. Thêm logic đổ xúc xắc ............................................................................................. 124
6. Áp dụng các phương pháp lập trình hay .................................................................. 126
7. Tóm tắt ......................................................................................................................128
BÀI 9 .............................................................................................................................130
THÊM HÀNH VI CÓ ĐIỀU KIỆN TRONG KOTLIN ..............................................130
1. Đưa ra quyết định trong mã ......................................................................................130
2. Tạo trò chơi Lucky Dice Roll (Xúc xắc may mắn) ................................................. 134
3. Sử dụng câu lệnh when .............................................................................................136
4. Mã giải pháp ............................................................................................................. 138
5. Tóm tắt ......................................................................................................................139
BÀI 10 ...........................................................................................................................141
THÊM HÌNH ẢNH VÀO ỨNG DỤNG DICE ROLLER .......................................... 141
1. Cập nhật bố cục cho ứng dụng ................................................................................. 142
2. Thêm hình ảnh xúc xắc ............................................................................................ 146
3. Sử dụng hình ảnh xúc xắc ........................................................................................ 149
4. Hiện đúng hình ảnh xúc xắc dựa trên lượt tung xúc xắc ......................................... 155
5. Áp dụng các phương pháp lập trình hay .................................................................. 159
6. Tóm tắt ......................................................................................................................160
Tài liệu tham khảo: ....................................................................................................... 161


GIÁO TRÌNH MƠ ĐUN
Tên mơ đun: Phát triển ứng dụng di động cơ bản
Mã mơ đun: MĐ21
Vị trí, tính chất, ý nghĩa và vai trị của mơ đun:
- Vị trí: Mô đun Phát triển ứng dụng di động cơ bản là mô đun bắt buộc thuộc khối các

mô đun chuyên ngành đào tạo chuyên môn nghề. Mô đun Phát triển ứng dụng di động
cơ bản được bố trí sau khi học xong các mơn học chung trong chương trình đào tạo
trung cấp.
- Tính chất: Chương trình mơ đun bao gồm một số nội dung cơ bản về Phát triển ứng
dụng di động cơ bản, cũng như việc sử dụng các ứng dụng di động trong đời sống, học
tập và hoạt động nghề nghiệp sau này
- Ý nghĩa và vai trò của mô đun: Khi Điện thoại thông minh được “phổ cập” thì sự
phát triển của Mobile App – Ứng dụng di động cũng là một điều tất yếu. Ngày càng có
nhiều ứng dụng di động ra đời. Ta có thể kể đến các app như mạng xã hội, mua sắm, ví
điện tử cho đến các ứng dụng về sức khỏe, đặt hàng… Rất nhiều doanh nghiệp đang
thay đổi cách tiếp cận khách hàng của họ bằng cách chuyển sang các nền di động. Tất
cả đều muốn tiếp cận đối tượng mục tiêu của mình nhanh chóng với sự trợ giúp của
công nghệ mới nhất. Các nền tảng được sử dụng rộng rãi để phát triển ứng dụng di
động là Android và IOS. Trong đó Android chiếm thị phần lớn nhất.
Mục tiêu của mô đun:
- Về kiến thức: Cách cài đặt và sử dụng Android Studio IDE. Cách sử dụng quy trình
phát triển để xây dựng ứng dụng Android. Cách tạo một dự án Android từ một mẫu có
sẵn. Cách thêm thông báo nhật ký vào ứng dụng của bạn cho mục đích gỡ lỗi.
- Về kỹ năng: Tạo trình giả lập (thiết bị ảo) để chạy ứng dụng của bạn trên máy tính.
Tạo và chạy ứng dụng trên các thiết bị ảo và thực.
- Về năng lực tự chủ và trách nhiệm:
+ Nhận thức được tầm quan trọng, có trách nhiệm trong việc phất triển và sử dụng ứng
dụng di động trong đời sống, học tập và nghề nghiệp;
+ Có thể làm việc độc lập hoặc theo nhóm trong việc áp dụng một số nội dung trong
mô đun vào học tập, lao động và các hoạt động khác.
Nội dung của mô đun:


BÀI 1
VIẾT CHƯƠNG TÌNH ĐẦU TIÊN BẰNG KOTLIN

Giới thiệu
Trong bài học này, bạn sẽ viết chương trình đầu tiên bằng ngơn ngữ Kotlin
thơng qua trình soạn thảo tương tác mà bạn có thể chạy trên trình duyệt của mình.
Bạn có thể xem chương trình (program) là một loạt lệnh để hệ thống thực hiện
một số hành động. Ví dụ: bạn có thể viết một chương trình tạo thiệp sinh nhật. Trong
chương trình đó, bạn có thể viết lệnh in văn bản chúc mừng hoặc tính tuổi của một
người dựa trên năm sinh của họ.
Cũng giống như việc bạn sử dụng ngôn ngữ của con người để giao tiếp với
người khác, bạn sử dụng ngơn ngữ lập trình để giao tiếp với hệ điều hành của máy tính.
May mắn thay, ngơn ngữ lập trình ít phức tạp hơn ngơn ngữ của con người và khá
logic!
Các ứng dụng Android được viết bằng ngơn ngữ lập trình Kotlin. Kotlin là một
ngơn ngữ hiện đại được tạo ra để giúp nhà phát triển viết mã một cách hiệu quả và ít
lỗi nhất có thể.
Sẽ rất khó để bạn vừa học cách tạo ứng dụng, vừa học các kiến thức lập trình cơ
bản cùng một lúc. Vì vậy, chúng ta sẽ bắt đầu bằng một số nội dung lập trình trước khi
bắt đầu tạo ứng dụng. Việc làm quen với một số kiến thức lập trình cơ bản khơng chỉ
là một bước quan trọng để tạo ứng dụng, mà còn giúp bạn sau này dễ dàng tạo ứng
dụng đầu tiên hơn trong khố học này.
Trình soạn thảo mã là công cụ giúp bạn viết mã, giống như cách trình xử lý văn
bản giúp bạn tạo tài liệu văn bản. Trong bài học lập trình này, bạn sẽ sử dụng trình
soạn thảo Kotlin (Kotlin editor) có tính tương tác trên trình duyệt. Tức là bạn khơng
phải cài đặt bất kỳ phần mềm nào để thực hiện bước đầu tiên trong quá trình phát triển
ứng dụng.
Mục tiêu:
 Sử dụng trang web tương tác trên trình duyệt web.
 Tạo, thay đổi, hiểu và chạy một chương trình Kotlin tối giản có chức năng hiện
thơng báo.
 Sản phẩm bạn sẽ tạo ra: Một chương trình bằng ngơn ngữ lập trình Kotlin sẽ hiện
thơng báo khi bạn chạy chương trình đó.

Nội dung:

1


1. Chạy chương trình đầu tiên trong Kotlin
Trong nhiệm vụ này, bạn sẽ sử dụng trình soạn thảo trên một trang web để bắt
đầu lập trình bằng ngơn ngữ Kotlin ngay lập tức.
 Sử dụng trình soạn thảo mã có tính tương tác
Thay vì cài đặt phần mềm trên máy tính, bạn có thể sử dụng một cơng cụ dùng
trên nền tảng web để tạo chương trình đầu tiên của mình. Trên trình duyệt, hãy mở
Thao tác này sẽ mở ra một
cơng cụ lập trình dùng trên trình duyệt.
Bạn sẽ thấy một trang tương tự như ảnh chụp màn hình dưới đây, trong đó có
một trình soạn thảo mã ở giữa.

Đây là mã của chương trình trong trình soạn thảo:

 Chạy mã của chương trình
Quy trình chạy một chương trình mà bạn đã tạo khơng khác biệt q nhiều so
với quy trình chạy một chương trình như trình xử lý văn bản trên máy tính. Điểm khác
biệt là khi bạn chạy một chương trình để hồn thành nhiệm vụ (hoặc chơi trò chơi),
bạn chủ yếu quan tâm đến những việc mà chương trình đó có thể làm cho bạn mà
khơng quan tâm đến mã nào đang giúp chương trình đó hoạt động. Khi lập trình, bạn
sẽ được xem và làm việc với mã thực tế đã tạo nên điều kỳ diệu.
Hãy xem chương trình này làm được những gì!

2



i.

Trong trình soạn thảo, ở góc trên cùng bên phải, hãy tìm biểu tượng hình tam giác
màu trắng hoặc xanh lục

rồi nhấp vào biểu tượng đó để chạy chương trình.

ii. Nhìn vào ngăn ở dưới cùng.

iii. Nhận thấy Hello, world! đã xuất hiện như trong hình trên. Giờ đây, bạn đã biết
chương trình này làm gì: Chương trình này in (hoặc xuất ra) một thông báo hello
world (xin chào thế giới).
Biên dịch (compile) là quá trình dịch mã của chương trình Kotlin sang một
dạng mà hệ thống có thể chạy. Q trình biên dịch hồn tất đồng nghĩa với việc khơng
có lỗi nào trong chương trình ngăn cản q trình chạy. Nếu có sự cố thì các sự cố đó sẽ
xuất hiện trong ngăn ở dưới cùng.
2. Sửa đổi chương trình
 Thay đổi mã Hello World (Xin chào thế giới)
Hãy thay đổi chương trình này khác đi một chút.
i.

Thay đổi văn bản "Hello, world!" thành "Happy Birthday!".

ii. Chạy chương trình bằng cách nhấp vào nút chạy màu xanh dương hoặc xanh lục ở
trên cùng bên phải.
iii. Ở dưới cùng, bạn sẽ thấy Happy Birthday! xuất hiện, như minh hoạ dưới đây.

 Cách thức hoạt động
Làm thế nào để thực hiện việc này? Có vẻ như sẽ cần rất nhiều mã để in một
nội dung bất kỳ!

Nếu bạn muốn một người bạn viết "Hello, world!" ("Xin chào, thế giới!") trên
một mảnh giấy, thì có rất nhiều thơng tin ngụ ý. Nếu bạn đơn giản chỉ nói với họ là
"Hãy viết "‘Hello world!" trên mảnh giấy này", thì họ sẽ đưa ra các giả định về thơng
tin bạn khơng nhắc tới. Ví dụ: họ sẽ cho rằng họ cần dùng bút và bạn muốn họ viết câu
đó bằng các chữ cái! Máy tính khơng đưa ra các giả định như vậy nên bạn phải cung
cấp lệnh chính xác bao gồm tất cả các bước.
Giống như ngơn ngữ tiếng Anh có cấu trúc, ngơn ngữ lập trình cũng vậy. Nếu
từng học một ngơn ngữ khác thì bạn sẽ hiểu được thách thức của việc học ngữ pháp,
chính tả, cũng có thể là bảng chữ cái mới bằng ký hiệu và từ vựng. Việc học lập trình
có những thách thức tương tự, nhưng may mắn thay, q trình này sẽ ít phức tạp và
logic hơn nhiều so với việc học, chẳng hạn như học tiếng Anh.
 Tìm hiểu các phần của chương trình
Bây giờ, hãy xem qua mã. Mỗi phần của chương trình này phục vụ một mục
đích cụ thể và bạn cần tất cả các phần để có thể chạy chương trình. Hãy bắt đầu với từ
đầu tiên.

3


 fun là một từ trong ngơn ngữ lập trình Kotlin. fun là viết tắt của hàm (function).
Hàm là một phần của một chương trình thực hiện một nhiệm vụ cụ thể.
Lưu ý: Kotlin có nhiều từ đặc biệt có những ý nghĩa rất cụ thể. Khi học lập trình bằng
ngôn ngữ Kotlin, bạn sẽ học những từ này. Chúng thường được gọi là từ khoá hoặc từ
dành riêng.

 main là tên của hàm này. Các hàm được đặt tên nên bạn có thể phân biệt được
từng hàm. Hàm này tên là main vì là hàm đầu tiên (hoặc hàm chính) được gọi khi
bạn chạy chương trình. Mọi chương trình Kotlin đều cần một hàm tên là main.

 Tên hàm luôn đứng trước hai dấu ngoặc đơn ().

 Bên trong dấu ngoặc đơn, bạn có thể đưa thơng tin vào hàm để sử dụng. Giá trị
đưa vào hàm gọi là "argument" (đối số) hoặc viết tắt là args. Bạn sẽ tìm hiểu thêm
về đối số sau.

 Chú ý cặp dấu ngoặc nhọn {} sau dấu ngoặc đơn. Bên trong một hàm là mã sẽ
hoàn thành một nhiệm vụ. Những dấu ngoặc nhọn này chứa các dịng mã đó.
Nhìn vào dịng mã nằm trong dấu ngoặc nhọn:

Dòng mã này in văn bản Happy Birthday!.
 println yêu cầu hệ thống in một dòng văn bản.
 Bạn đưa văn bản cần in vào bên trong dấu ngoặc đơn.
 Lưu ý rằng văn bản sẽ được in nằm trong dấu ngoặc kép. Điều này cho hệ thống
biết rằng mọi nội dung bên trong dấu ngoặc kép sẽ được in chính xác như đã thiết
lập.
Để thật sự in văn bản, toàn bộ lệnh println này phải nằm trong hàm main.
Vậy là xong. Chương trình Kotlin nhỏ nhất.

3. Mở rộng chương trình
 In nhiều thơng báo
Tuyệt vời! Bạn đã in một dòng văn bản bằng println() function. Tuy nhiên,
bạn có thể đưa bao nhiêu dịng lệnh vào một hàm tuỳ thích hoặc nếu cần để hồn thành
một nhiệm vụ.

4


i.

Sao chép dòng println("Happy Birthday!") rồi dán hai lần vào bên dưới dịng đó.
Đảm bảo các dịng đã dán nằm trong dấu ngoặc nhọn của hàm main.


ii. Thay đổi một văn bản sẽ in thành tên của một người, chẳng hạn như "Jhansi".
iii. Thay đổi văn bản sẽ in còn lại thành "You are 25!" ("Bạn sang 25 tuổi rồi!").
Mã của bạn sẽ trông giống như mã dưới đây.

Bạn mong đợi mã này sẽ làm gì khi chạy?
iv. Chạy chương trình để xem kết quả.
v. Chuyển đến ngăn kết quả để thấy 3 dòng được in trong cửa sổ bảng điều khiển,
như minh hoạ dưới đây.

Khá lắm!
 Xử lý lỗi
Việc gặp lỗi trong khi lập trình là bình thường và hầu hết công cụ sẽ đưa ra
phản hồi để giúp bạn sửa lỗi. Trong bước này, hãy tạo một lỗi để xem điều gì sẽ xảy ra.
i.

Trong chương trình, hãy xố dấu ngoặc kép chứa văn bản Jhansi để dịng đó có
dạng như dưới đây.

ii. Chạy chương trình. Bạn sẽ thấy Jhansi được in màu đỏ và biểu tượng dấu chấm
than bên cạnh dòng mã mà bạn đã thay đổi, để cho bạn biết lỗi nằm ở đâu.

iii. Nhìn vào ngăn kết quả. Ngăn này đưa ra một thông báo có cùng biểu tượng dấu
chấm than. Nội dung tiếp đó mô tả lỗi trong mã của bạn.

5


iv. Thông báo này (Unresolved reference: Jhansi) cho bạn biết hệ thống cho rằng lỗi
nằm trong mã này. Ngay cả khi không biết ý nghĩa của thông báo lỗi, bạn vẫn có

thể tìm ra sự cố. Trong trường hợp này, bạn biết rằng lệnh println() in văn bản.
Bạn đã biết rằng văn bản phải nằm trong dấu ngoặc kép. Nếu văn bản khơng nằm
trong dấu ngoặc kép thì đó là lỗi.
v. Tiếp tục và thêm lại dấu ngoặc kép.
vi. Chạy chương trình để đảm bảo chương trình hoạt động trở lại.
Xin chúc mừng! Bạn đã chạy và thay đổi chương trình Kotlin đầu tiên!
Đây là mã hồn chỉnh của chương trình mà bạn đã thực hiện trong lớp học lập
trình này.

4. Tóm tắt
 là trình soạn thảo mã
tương tác trên web nơi bạn có thể thực hành viết các chương trình Kotlin.
 Mọi chương trình Kotlin đều phải có một hàm main(): fun main() {}
 Sử dụng hàm println() để in một dòng văn bản.
 Đưa văn bản bạn muốn in vào dấu ngoặc kép. Ví dụ: "Hello".
 Lặp lại lệnh println() để in nhiều dòng văn bản.
 Lỗi được đánh dấu màu đỏ trong chương trình. Có một thơng báo lỗi trong ngăn
kết quả để giúp bạn tìm ra lỗi ở đâu và nguyên nhân có thể gây ra lỗi.
Bài tập
Thực hiện những việc sau:
i.

Thay đổi lệnh println() thành print().

ii. Chạy chương trình. Điều gì sẽ xảy ra?
iii. Sửa văn bản sao cho mỗi phần của thông báo đều nằm trên một dòng riêng.
Gợi ý: Sử dụng \n bên trong văn bản để thêm dấu ngắt dịng. Ví dụ: "line \n break".

6



BÀI 2
VIẾT CHƯƠNG TRÌNH CHÚC MỪNG SINH NHẬT BẰNG KOTLIN
Giới thiệu
Trong bài học này, bạn sẽ tạo một chương trình Kotlin ngắn để in lời chúc sinh
nhật cùng với một chiếc bánh và một biểu ngữ sinh nhật.
Mụct tiêu
 Chỉnh sửa mã trong một
cơng cụ lập trình Kotlin dùng trên trình duyệt.
 Mơ tả được chương trình "Hello world!" trong bài học Viết chương trình đầu tiên
bằng Kotlin.
 Sử dụng println() để ghi văn bản vào bảng điều khiển (console) của trình soạn
thảo mã Kotlin trực tuyến.
 In văn bản phức tạp hơn trong chương trình của bạn.
 Giải toán cơ bản trong Kotlin và lưu trữ kết quả trong các biến để sử dụng sau.
 Tạo một hàm để in nhiều lần cùng một chuỗi.
 Tạo vòng lặp để in đoạn trích văn bản nhiều lần.
 Tạo một chương trình ngắn mà bạn có thể sử dụng để in lời chúc sinh nhật, hình
ảnh một chiếc bánh dựa trên văn bản và một biểu ngữ.
Nội dung
1. Tạo lời chúc mừng sinh nhật
 Thiết lập mã bắt đầu
i.

Trên trình duyệt, hãy mở />Thao tác này sẽ mở ra một cơng cụ lập trình Kotlin dùng trên trình duyệt.

ii. Bên trong hàm fun main(), hãy thay thế văn bản "Hello, world!" bằng "Happy
Birthday, Rover!".
iii. Bên dưới, vẫn ở trong các dấu ngoặc nhọn, hãy thêm hai dòng khác để in: "You
are already 5!" và "5 is the very best age to celebrate!".

Mã hồn thiện của bạn sẽ có dạng như sau.

iv. Chạy mã.
v. Xác minh rằng ngăn đầu ra cho thấy Happy Birthday, Rover! (Chúc mừng sinh
nhật Rover!) và phía dưới là You are already 5! (Rover lên 5 tuổi rồi!) và 5 is the
very best age to celebrate! (5 là một tuổi thật đẹp để kỷ niệm!)

7


 Thêm chiếc bánh sinh nhật
Lời chúc sinh nhật cần có một hình ảnh chủ đề sinh nhật. Chẳng hạn như, một
chiếc bánh. Bạn có thể thêm một chiếc bánh vào lời chúc sinh nhật bằng cách in thêm
các dòng sử dụng chữ cái và ký hiệu trên bàn phím và println().
Tiếp tục từ mã giải pháp ở trên.
i.

Trong mã của bạn, giữa hai câu lệnh println() cho Happy Birthday và You are
already 5, hãy thêm các dòng gồm những câu lệnh in sau đây, như trong đoạn mã
dưới đây. Việc này tạo ra một chiếc bánh. Câu lệnh println() cuối cùng khơng có
văn bản giữa các dấu ngoặc kép sẽ in ra một dòng trống.

Để giúp người khác hiểu mã của bạn, bạn có thể thêm nhận xét (comment)
trước khi in chiếc bánh. Nếu bạn chạy mã, kết quả sẽ khơng có vẻ gì khác vì các nhận
xét chỉ là thông tin dành riêng cho bạn và các nhà phát triển khác, không phải là lệnh
cho hệ thống. Một nhận xét trong dòng bắt đầu bằng // rồi đến văn bản, như trong đoạn
mã dưới đây.

ii. Thêm một nhận xét trước khi in chiếc bánh: // Let's print a cake!.
iii. Thêm một nhận xét trước khi in dòng trống: // This prints an empty line.

Mã của bạn phải trông giống như đoạn mã dưới đây.

8


Mẹo: Bạn có thể để ý thấy chúng tơi đã thêm một số khoảng trắng (dòng trống) vào
mã để phân tách các phần mã. Việc này giúp mã dễ đọc hơn. Bạn có thể thêm các dịng
trống ở bất cứ đâu nếu thấy hữu ích.
iv. Hãy chạy mã và đầu ra sẽ có dạng như sau.

2. Tạo và sử dụng biến
 Lưu trữ tuổi của Rover trong một biến
i.

Trong đoạn mã mà bạn vừa hoàn thành, hãy chú ý đến cách bạn lặp lại cùng một
số tuổi hai lần.

Thay vì lặp lại, bạn có thể lưu trữ con số này ở một nơi, dưới dạng biến. Cách
này giống như đặt con số của bạn vào hộp rồi đặt tên cho cái hộp chứa con số đó. Sau
đó, bạn có thể sử dụng tên biến này mỗi khi bạn cần giá trị đó. Ngồi ra, nếu độ tuổi
thay đổi, bạn chỉ cần thay đổi chương trình ở một chỗ. Bằng cách thay đổi biến, giá trị
chính xác cho độ tuổi sẽ được in ở bất cứ nơi nào biến được sử dụng.
ii. Trong chương trình của bạn, ở dịng mã đầu tiên trong hàm main(), hãy thêm mã
sau đây để tạo biến có tên là age với giá trị là 5, như minh hoạ dưới đây. (Bạn phải
đặt dòng này trước các câu lệnh println()).

Dịng này có nghĩa là:
 val là một từ đặc biệt mà Kotlin sử dụng, được gọi là keyword (từ khố), cho biết
rằng phần phía sau là tên của một biến.
 age là tên của biến.

 = làm cho giá trị của age (ở bên trái) trở nên giống với giá trị ở bên phải. Trong
toán học, dấu bằng được dùng để xác nhận rằng các giá trị ở mỗi bên là giống
nhau. Trong Kotlin, không giống như trong toán học, dấu bằng được dùng để gán
giá trị ở bên phải cho biến có tên ở bên trái.
Nhà phát triển sẽ nói như thế này: Dịng này khai báo một biến có tên age mang
giá trị được chỉ định là 5.
Lưu ý quan trọng: Bạn chỉ có thể đặt một biến được khai báo bằng từ khoá val một
lần. Sau đó, bạn khơng thể thay đổi giá trị của biến này trong chương trình.
Bạn có thể khai báo biến có thể thay đổi bằng từ khố var. Bạn sẽ thực hiện việc này
trong một lớp học lập trình sau.
9


Để sử dụng một biến bên trong một câu lệnh in, bạn cần bao quanh biến đó
bằng một số ký hiệu để hệ thống biết rằng nội dung tiếp theo khơng phải là văn bản,
mà là biến. Thay vì in văn bản, hệ thống cần in giá trị của biến. Bạn thực hiện việc này
bằng cách đặt biến bên trong các dấu ngoặc nhọn phía sau ký hiệu đơ la, như trong ví
dụ dưới đây.

i.

Trong mã, hãy thay số 5 trong cả hai câu lệnh in bằng biến age như dưới đây.

ii. Chạy mã và cả hai thông điệp sẽ phải cho thấy cùng một độ tuổi.
iii. Thay đổi giá trị của biến thành giá trị khác. Ví dụ: bạn có thể hiện tuổi của Rover
theo ngày thay vì năm. Để làm việc này, hãy nhân tuổi với 365, bỏ qua năm nhuận.
Bạn có thể thực hiện phép tính này ngay khi tạo biến, như dưới đây.

iv. Chạy lại mã và để ý rằng cả hai lời chúc nay đã hiện độ tuổi tính theo ngày.


v. Thay đổi văn bản của thông điệp in để phù hợp hơn với cách tính độ tuổi theo
ngày. Chẳng hạn như, thay đổi lời chúc thành:

 Đặt văn bản vào một biến
Không chỉ con số, bạn cịn có thể đưa cả văn bản vào biến.
i.

Bên dưới biến age, hãy thêm biến tên là name cho tên của người có sinh nhật rồi
đặt giá trị cho biến đó thành "Rover".

ii. Thay thế tên Rover trong lời chúc sinh nhật bằng biến, như dưới đây.

Bạn cũng có thể có nhiều hơn một biến trong một câu lệnh in.
10


iii. Thêm Rover vào lời chúc độ tuổi bằng cách sử dụng biến name như dưới đây.

Mã đã hoàn tất của bạn sẽ trông giống như thế này.

Xin chúc mừng! Giờ đây, bạn có thể tạo thơng điệp bằng văn bản, hình ảnh tạo
bằng ký hiệu, sử dụng biến để lưu trữ số và văn bản, cũng như sử dụng biến để in văn
bản.
3. In biểu ngữ sinh nhật có đường viền
Trong nhiệm vụ này, bạn sẽ tạo một biểu ngữ sinh nhật, sau đó tìm hiểu cách
đơn giản hố mã bằng cách sử dụng các kỹ thuật để lặp lại và sử dụng lại mã, cũng
như tìm hiểu tác dụng của việc này.
 Tạo biểu ngữ sinh nhật ban đầu
i.


Trong hãy đặt con trỏ
vào vị trí bất kỳ bên trong mã.

ii. Nhấp chuột phải để mở trình đơn rồi chọn Select All (Chọn tất cả).
iii. Nhấn phím Backspace hoặc phím Delete để xố tất cả mã.
iv. Sao chép và dán mã dưới đây vào trình chỉnh sửa.

11


v. Chạy chương trình của bạn để xem biểu ngữ in trên Console (Bảng điều khiển).

 Tạo một hàm để in đường viền
Mã bạn vừa dán và chạy là một hàm tên là main() chứa 3 câu lệnh in. Khi bạn
nhấn nút Run (Chạy), hệ thống sẽ thực thi hàm và tồn bộ mã bên trong.
Tóm tắt
Trong một lớp học lập trình trước, bạn đã biết rằng:
 Hàm là một phần của chương trình và thực hiện một tác vụ cụ thể.
 Từ khoá fun đánh dấu một số mã là một hàm.
 Sau từ khoá fun lần lượt là tên hàm, các dấu ngoặc đơn để nhập tuỳ chọn vào hàm
(đối số) và các dấu ngoặc nhọn.
 Mã để in văn bản luôn ở bên trong các dấu ngoặc nhọn đó.
Chương trình Kotlin của bạn ln phải có một hàm main(). Ngồi ra, bạn có
thể tạo và sử dụng các hàm của riêng mình. Giống như các biến giúp bạn tránh được
việc trùng lặp cơng việc, các hàm có thể giúp bạn tránh việc viết nhiều lần cùng một
mã. Trong mã của bạn, các câu lệnh in dành cho phần đầu và cuối biểu ngữ giống hệt
nhau. Hãy tạo và sử dụng một hàm để in các đường viền đó.
i.

Trong trình chỉnh sửa, bên dưới hàm main(), hãy chèn một dịng trống để bạn có

thêm chỗ làm việc. Các dòng trống sẽ được hệ thống bỏ qua, cho nên bạn có thể
chèn dịng trống vào bất cứ nơi nào có ích để sắp xếp mã.

ii. Tạo một hàm. Bắt đầu bằng từ khoá fun, theo sau là tên printBorder, một cặp dấu
ngoặc đơn () và một cặp dấu ngoặc nhọn {}, như dưới đây.

Vài lời về việc đặt tên cho hàm.
 Hãy để ý rằng tên hàm printBorder bắt đầu bằng một chữ viết thường và là một
động từ. Tên hàm hầu như luôn bắt đầu bằng một chữ cái viết thường và là một
động từ. Tên hàm cũng nên mơ tả chức năng của hàm đó. Chẳng hạn như: print()
hoặc printBorder().
 Ngoài ra, hãy lưu ý rằng từ thứ hai trong tên hàm bắt đầu bằng chữ hoa. Kiểu tên
này được gọi là "kiểu lạc đà" (camel-case) và giúp tên dễ đọc hơn. Ví dụ về một số
tên khác drawReallyCoolFancyBorder và printBirthdayMessage.
Lưu ý: Việc đặt tên hàm như thế này là "quy ước lập trình" (coding convention), một
thoả thuận giữa các nhà phát triển về cách định dạng mã. Việc định dạng tất cả mã
theo cách như nhau giúp mã của bạn dễ đọc hơn,và bạn cũng dễ dàng tìm hiểu được
mã của các lập trình viên khác. Khi bạn nhìn thấy mã của các nhà phát triển Android
khác, thường thì mã đó được định dạng theo các quy ước này.
12


Để tìm hiểu thêm về việc định dạng mã, bạn có thể xem tồn bộ quy ước trong hướng
dẫn
định
kiểu
chính
thức
(official
style

guide)
tại
Có rất nhiều nội dung trong hướng
dẫn đó, nhưng nếu bạn muốn biết, hãy xem qua một lượt.
iii. Đặt dấu đóng ngoặc nhọn } của hàm printBorder trên một dòng mới và thêm một
dòng trống giữa hai dấu ngoặc nhọn, để có khoảng trống cho việc thêm mã. Việc
đặt dấu đóng ngoặc nhọn } trên dòng riêng sẽ giúp bạn dễ dàng biết được hàm này
kết thúc ở đâu.
iv. Bên trong hàm main(), hãy sao chép câu lệnh in của đường viền rồi dán vào giữa
các dấu ngoặc nhọn của hàm printBorder().
Hàm printBorder() đã hồn tất sẽ có dạng như sau.

Để sử dụng hoặc gọi hàm, hãy sử dụng tên của hàm, với cặp dấu ngoặc đơn.
Xin lưu ý rằng đây là cách bạn đã sử dụng println()! Do đó, để sử dụng hàm
printBorder, hãy gọi printBorder() ở bất kỳ nơi nào trong mã khi cần đến.
v. Trong hàm main(), hãy thay thế các dòng mã in đường viền bằng cách sử dụng
println() với các lệnh gọi đến hàm printBorder(). Mã hồn thiện của bạn sẽ có
dạng như sau.

vi. Chạy mã của bạn để đảm bảo tất cả đều hoạt động như trước.
Lưu ý rằng việc thay đổi mã để chương trình làm việc tốt hơn hoặc dễ dàng hơn
mà khơng thay đổi đầu ra được gọi là "refactoring" (tái cấu trúc).
 Lặp lại mẫu hoa văn đường viền
Hãy nhìn vào đường viền, toàn bộ thực sự là cùng một ký hiệu. Vì vậy, thay vì
nói: "In chuỗi gồm 23 ký hiệu này", bạn có thể nói: "In 1 ký hiệu này 23 lần".
Trong phần mã, bạn thực hiện việc này bằng cách sử dụng câu lệnh repeat().
i.

Trong hàm printBorder(), hãy dùng câu lệnh repeat() để in dấu bằng 23 lần.


ii. Thay vì sử dụng println(), hãy sử dụng print() để bạn khơng chuyển sang dịng
mới sau khi in từng "=".

13


Sau đây là mã. Bạn hiện có một lệnh đơn để in dấu bằng và để lặp lại 23 lần
lệnh đó, hãy sử dụng câu lệnh repeat().

 Câu lệnh repeat() bắt đầu bằng từ repeat, theo sau là (). Loại câu lệnh này được
gọi là "vịng lặp" ("loop") vì bạn lặp đi lặp lại hoặc lặp lại theo vòng nhiều lần
cùng một mã. Sau này bạn sẽ tìm hiểu các cách tạo vòng lặp khác.
 Trong ngoặc đơn, () là số lần lặp lại,
 tiếp theo là các dấu ngoặc nhọn {},
 và bên trong các dấu ngoặc nhọn {} là mã cần lặp lại.
iii. Trong hàm printBorder(), sau dấu đóng ngoặc nhọn } của câu lệnh repeat(), tức
là sau khi bạn in xong đường viền, hãy thêm câu lệnh println() để in một dịng
mới.
Mã của bạn bây giờ có dạng như sau.

sau.

Mã trong hàm main() không thay đổi và tồn bộ chương trình sẽ có dạng như

iv. Chạy mã. Nội dung xuất sẽ giống như trước, nhưng lần này, bạn đã có thể tạo
đường viền bằng cách chỉ định ký hiệu "=" chỉ một lần!

14



 Dùng đối số để thay đổi đường viền
Nếu bạn muốn tạo đường viền sử dụng nhiều loại ký hiệu, chẳng hạn như các
ký hiệu dưới đây thì sao?
%%%%%%%%%%%%%%%%%%%%%%%
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Bạn có thể định nghĩa hàm cho từng ký hiệu riêng biệt. Tuy nhiên, có một cách
hiệu quả hơn để làm việc này. Bạn có thể sử dụng lại hàm mà bạn vừa viết và tăng tính
linh hoạt của hàm để dùng được nhiều loại ký hiệu.
Thú vị là bạn có thể cung cấp đầu vào cho các hàm bằng cách sử dụng đối số.
Bạn từng gặp khái niệm này trong một lớp học lập trình trước đây, khi làm quen với
main(). Ở bước này, bạn sẽ thêm một đối số vào hàm printBorder() để hàm này có
thể in mọi mẫu đường viền mà bạn cung cấp.
i.

Trong main(), ở trên cùng, hãy tạo biến có tên border dành cho mẫu hoa văn
đường viền. Biến này sẽ giữ văn bản cần lặp lại để tạo thành đường viền.

ii. Bây giờ, hãy truyền biến border đó vào làm đối số cho cả hai lệnh gọi hàm
printBorder(). Bạn thực hiện việc này bằng cách đặt border bên trong các dấu
ngoặc đơn (), giống như khi bạn cung cấp văn bản để println() in.
Hàm main() của bạn phải trông giống như đoạn mã dưới đây.

Hàm printBorder() sẽ nhận giá trị của border này làm dữ liệu đầu vào và tìm
cách in ra đường viền đầy đủ.
iii. Chạy mã của bạn. Mã của bạn không thực thi, thay vào đó, bạn sẽ thấy các biểu
tượng lỗi bên cạnh mã.

iv. Hãy nhìn vào bảng điều khiển đầu ra, ở đó có một thơng báo lỗi.
15



Như trước đó, thơng báo chỉ ra vị trí của lỗi và gợi ý cho bạn về lỗi. Phần quan
trọng là: Too many arguments for public fun printBorder(). Bạn đang gọi hàm
printBorder() và truyền một đường viền dưới dạng giá trị nhập. Tuy nhiên, định
nghĩa hàm printBorder() hiện không chấp nhận giá trị nhập nào.
v. Hãy sửa lỗi này bằng cách thêm một đối số cho đường viền vào định nghĩa hàm
printBorder(). Xem dòng mã đầu tiên như dưới đây.

 Hãy lưu ý rằng tên của đối số là border.
 Theo sau tên đó là một dấu hai chấm :
 và từ String, là nội dung mô tả về loại hoặc kiểu của đối số.
String là một đoạn văn bản được tạo thành từ các ký tự và nằm giữa các dấu
ngoặc kép. Bạn có thể xem đó như những chiếc hạt xâu trên một chuỗi để tạo thành
một chiếc vòng cổ, chẳng hạn như các ký tự xếp hàng để tạo thành từ và văn bản. Việc
chỉ định đối số phải là String sẽ giúp hệ thống thực thi việc đối số phải là văn bản và
không phải là loại khác, chẳng hạn như số.
vi. Chạy mã. Hàm printBorder() nay chấp nhận đường viền String làm giá trị đầu
vào. Và mã trong main() gọi printBorder(border) với border là đối số. Mã của
bạn sẽ chạy mà khơng có lỗi.
vii. Xem kết quả của chương trình trong Console (Bảng điều khiển) và kết quả đó vẫn
cho thấy chính đường viền trước đây?

Đây không phải là hành vi bạn mong muốn! Bạn đã cố tạo đường viền có ký
hiệu "%" nhưng chương trình này vẫn in đường viền dùng ký hiệu "=". Trong các
bước tiếp theo, bạn sẽ tìm hiểu nguyên nhân dẫn đến việc này.
viii.Trong trình chỉnh sửa, hãy chú ý dấu chấm than màu xám. Biểu tượng này biểu thị
một cảnh báo (warning). Cảnh báo là về những vấn đề trong mã mà bạn cần chú ý
đến nhưng những cảnh báo này không ngăn việc chạy mã

16



ix. Di chuột qua dấu chấm than và một thông báo sẽ xuất hiện. Nội dung là
"Parameter 'border' is never used." Cảnh báo này giải thích sự cố xảy ra với
đầu ra. Bạn đang chuyển một chuỗi mới dành cho đường viền đến hàm này, nhưng
bạn hiện không sử dụng chuỗi này để in.
x. Thay đổi hàm printBorder() để sử dụng giá trị đã truyền vào border thay vì in
dấu "=". Việc này cũng giống hệt như khi border là một biến mà bạn đã xác định
bên trong hàm!

xi. Chạy lại mã. Kết quả đầu ra sẽ có dạng như sau.

Tuyệt vời, bạn đã khắc phục được vấn đề! Sau đây là mã đã hoàn tất.

Bạn đã làm cho hàm printBorder() linh hoạt hơn rất nhiều mà không cần thêm
nhiều mã khác. Giờ đây, bạn có thể in đường viền bằng nhiều loại ký hiệu, chỉ cần một
lần thay đổi nhỏ.
xii. Bằng cách chỉ thay đổi một dòng mã trong hàm main(), bạn sẽ in biểu ngữ sinh
nhật như này bằng cách nào?

17


 Sửa đổi một hàm để có hai đối số
Nếu bạn muốn sử dụng một mẫu hoa văn khác dài hơn 1 ký tự thì sao, chẳng
hạn "'-._,-'". Bạn sẽ khơng lặp lại mẫu hoa văn này 23 lần vì như vậy sẽ quá dài. Bạn
có thể lặp lại thao tác này khoảng 4 lần. Để hoàn thành việc này, bạn có thể thay đổi số
lần lặp lại trong câu lệnh repeat() của printBorder(). Tuy nhiên, bạn có thể làm tốt
hơn!
Bạn có thể khai báo một đường viền bắt mắt hơn dựa trên hai điều sau:

 Mẫu hoa văn để lặp lại (việc mà bạn đã thực hiện)
 Số lần mà bạn muốn lặp lại mẫu hoa văn
Bạn có thể tạo các biến cho từng yếu tố, mẫu hoa văn và số lần lặp lại, sau đó
truyền cả hai thơng tin vào hàm printBorder().
i.

Trong main(), hãy thay đổi đường viền thành mẫu hoa văn "'-._,-'".

ii. Chạy mã và để ý thấy mẫu hoa văn hiện quá dài.
iii. Trong main(), bên dưới phần định nghĩa border, hãy tạo một biến mới tên là
timesToRepeat cho số lần lặp lại. Đặt giá trị biến đó thành 4.

iv. Trong main(), khi gọi printBorder(), hãy thêm số lần lặp lại làm đối số thứ hai.
Phân tách hai đối số bằng dấu phẩy.

Bây giờ, hàm main() sẽ có dạng như sau:

Cũng như trước đây, mã này sẽ trả về một lỗi vì bạn có nhiều đối số gọi
printBorder() hơn so với định nghĩa printBorder().
v. Hãy sửa printBorder() để cũng chấp nhận cả số lần lặp lại làm đầu vào. Thêm
dấu phẩy sau đối số, theo sau là đối số bổ sung: timesToRepeat: Int. Dòng đầu
tiên trong định nghĩa hàm của bạn giờ đây sẽ có dạng như sau.
18


Lưu ý:
 Dấu phẩy sẽ phân tách hai đối số.
 timesToRepeat là tên của đối số,
 theo sau là ký hiệu dấu hai chấm ":"
 và kiểu: Int. timesToRepeat là một số, do đó, thay vì tạo kiểu String, bạn cần

phải tạo kiểu Int (viết tắt của integer, tức là một số nguyên).
vi. Bên trong printBorder(), hãy thay đổi repeat để sử dụng đối số timesToRepeat
(thay cho số 23). Mã printBorder() của bạn sẽ có dạng như sau.

vii. Chạy mã. Và kết quả đầu ra có dạng như sau.

viii.Để hồn thiện kết quả đầu ra này, hãy chèn hai dấu cách vào đầu thông điệp
Happy Birthday (Chúc mừng sinh nhật). Khi đó, kết quả đầu ra của bạn sẽ có dạng
như sau.

Đây là mã hoàn thiện dành cho biểu ngữ của bạn:

19


×