TRƯỜNG ĐẠI HỌC HÙNG VƯƠNG
KHOA KỸ THUẬT – CÔNG NGHỆ
-----------------------
LÊ THỊ QUYÊN
XÂY DỰNG PHẦN MỀM HỖ TRỢ HỌC LẬP TRÌNH
PASCAL TRÊN THIẾT BỊ DI ĐỘNG
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC
Ngành: Công nghệ thông tin
Phú Thọ, 2017
TRƯỜNG ĐẠI HỌC HÙNG VƯƠNG
KHOA KỸ THUẬT – CÔNG NGHỆ
-----------------------
LÊ THỊ QUYÊN
XÂY DỰNG PHẦN MỀM HỖ TRỢ HỌC LẬP TRÌNH
PASCAL TRÊN THIẾT BỊ DI ĐỘNG
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC
Ngành: Công nghệ thông tin
NGƯỜI HƯỚNG DẪN: Th.S Nguyễn Thị Hảo
Phú Thọ, 2017
i
LỜI CẢM ƠN
Để khóa luận đạt kết quả tốt đẹp, em đã nhận được sự hỗ trợ, giúp đỡ của
nhiều tổ chức, cá nhân. Với tình cảm chân thành, cho phép em được bày tỏ
lòng biết ơn sâu sắc đến tất cả các cá nhân và tổ chức đã tạo điều kiện giúp đỡ
trong quá trình học tập và nghiên cứu đề tài.
Đầu tiên, em xin chân thành cảm ơn cơ giáo Nguyễn Thị Hảo đã tận tình
hướng dẫn và góp ý để em có thể hồn thành tốt đề tài khoá luận “Xây dựng
phần mềm hỗ trợ học lập trình Pascal trên thiết bị di động”.
Em xin chân thành cảm ơn ban lãnh đạo khoa, các thầy cô giáo trong khoa
Kỹ thuật - Công nghệ trường Đại học Hùng Vương đã đưa ra các ý kiến giúp
đỡ, tạo điều kiện thuận lợi cho em hoàn thành đề tài. Do kiến thức và kinh
nghiệm thực tiễn còn hạn chế, quá trình hồn thành khóa luận khó tránh khỏi
những sai xót, rất mong thầy cơ đóng góp ý kiến để bản khóa luận của em
được hồn thiện.
Việt Trì, 17 tháng 05 năm 2017
Sinh viên
Lê Thị Quyên
ii
MỤC LỤC
A. MỞ ĐẦU ................................................................................................................1
1. Tổng quan về vấn đề nghiên cứu ........................................................................1
1.1. Trên thế giới ................................................................................................... 1
1.2. Ở Việt Nam ..................................................................................................... 2
2. Tính cấp thiết của đề tài ......................................................................................3
3. Mục tiêu nghiên cứu của đề tài ...........................................................................3
4. Đối tượng và phạm vi nghiên cứu .......................................................................4
4.1. Đối tượng nghiên cứu ..................................................................................... 4
4.2. Phạm vi nghiên cứu ........................................................................................ 4
5. Phương pháp nghiên cứu.....................................................................................4
6. Bố cục ..................................................................................................................4
B. NỘI DUNG, KẾT QUẢ NGHIÊN CỨU ...............................................................5
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT .......................................................................5
1.1. Ngôn ngữ lập trình Pascal .............................................................................. 5
1.1.1. Các cấu trúc lệnh ..................................................................................5
1.1.2. Các cấu trúc dữ liệu phức tạp .............................................................10
1.2. Tổng quan về hệ điều hành Android trên thiết bị di động ............................ 15
1.2.1. Sự ra đời ..............................................................................................15
1.2.2. Kiến trúc và các thành phần ...............................................................17
1.3. Ngơn ngữ lập trình Java................................................................................ 23
1.3.1. Các đặc trưng của Java ......................................................................23
1.3.2. Bộ công cụ phát triển JDK (Java Development Kit) ..........................23
1.3.3. Cấu trúc của một chương trình Java ..................................................24
CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ .........................................................25
2.1. Phân tích hệ thống ........................................................................................ 25
2.1.1. Xác định yêu cầu .................................................................................25
2.1.2. Phân tích hệ thống ..............................................................................26
2.2. Thiết kế ......................................................................................................... 28
2.2.1. Thiết kế cơ sở dữ liệu ..........................................................................28
2.2.2. Thiết kế mô hình lớp ............................................................................29
iii
2.2.3. Đặc tả hệ thống ...................................................................................32
CHƯƠNG 3: CÀI ĐẶT, THỬ NGHIỆM PHẦN MỀM ......................................33
3.1. Cài đặt phầm mềm lên thiết bị Android ....................................................... 33
3.2. Danh sách các màn hình ............................................................................... 34
3.3. Chi tiết các màn hình .................................................................................... 35
C. KẾT LUẬN CHUNG ...........................................................................................52
D. TÀI LIỆU THAM KHẢO ....................................................................................53
iv
DANH MỤC HÌNH ẢNH
STT
Tên hình ảnh
Trang
1
Hình 1.1. Lưu đồ biểu diễn lệnh IF...THEN
5
2
Hình 1.2. Lưu đồ biểu diễn lệnh IF...THEN...ELSE
6
3
Hình 1.3. Lưu đồ biểu diễn lệnh CASE...OF
7
4
Hình 1.4. Lưu đồ biểu diễn lệnh FOR
7
5
Hình 1.5. Lưu đồ biểu diễn lệnh REPEAT...UNTIL
9
6
Hình 1.6. Lưu đồ biểu diễn lệnh WHILE...DO
9
7
Hình 1.7. Hệ điều hành Android
15
8
Hình 1.8. Kiến trúc tổng quát hệ điều hành Android
17
9
Hình 1.9. Các thành phần nhân Linux
17
10
Hình 1.10. Các thư viện
18
11
Hình 1.11. Android Runtime
19
12
Hình 1.12. Khung ứng dụng
19
13
Hình 2.1. Biểu đồ UserCase
25
14
Hình 2.2. Sơ đồ phân cấp chức năng
26
15
Hình 2.3. Sơ đồ luồng dữ liệu mức khung cảnh
26
16
Hình 2.4. Sơ đồ luồng dữ liệu mức đỉnh
26
17
Hình 2.5. Sơ đồ luồng dữ liệu chức năng Học lý thuyết
27
18
Hình 2.6. Sơ đồ luồng dữ liệu chức năng Xem bài tập
27
19
Hình 2.7. Sơ đồ luồng dữ liệu chức năng Câu hỏi
27
20
Hình 2.8. Sơ đồ luồng dữ liệu chức năng Trắc nghiệm
28
21
Hình 2.9. Sơ đồ luồng dữ liệu chức năng Xem video
28
22
Hình 2.10. Mơ hình lớp
30
23
Hình 3.1. Unknown Sources
33
24
Hình 3.2. Màn hình chính
35
25
Hình 3.3. Màn hình lý thuyết
36
26
Hình 3.4. Màn hình chức năng chọn chương lý thuyết
37
27
Hình 3.5. Màn hình lựa chọn nội dung lý thuyết
38
v
28
Hình 3.6. Màn hình hiển thị nội dung lý thuyết
39
29
Hình 3.7. Màn hình hiển thị các cấu trúc lệnh
40
30
Hình 3.8. Màn hình hiển thị danh sách ví dụ
41
31
Hình 3.9. Màn hình hiển thị nội dung ví dụ
42
32
Hình 3.10. Màn hình lựa chọn loại bài tập
43
33
Hình 3.11. Màn hình danh sách bài tập
44
34
Hình 3.12. Màn hình nội dung bài tập
45
35
Hình 3.13. Màn hình câu hỏi
46
36
Hình 3.14. Màn hình thi trắc nghiệm
47
37
Hình 3.15. Màn hình điểm thi
48
38
Hình 3.16. Màn hình video
49
39
Hình 3.17. Màn hình WebView
50
40
Hình 3.18. Màn hình thơng tin ứng dụng
51
vi
DANH MỤC BẢNG BIỂU
STT
Tên bảng
Trang
1
Bảng 2.1. Danh sách các thực thể
28
2
Bảng 2.2. Bảng câu hỏi
29
3
Bảng 3.1. Danh sách các màn hình
34
4
Bảng 3.2. Mơ tả chi tiết màn hình chính
36
5
Bảng 3.3. Mơ tả chi tiết màn hình lý thuyết
37
6
Bảng 3.4. Mơ tả chi tiết màn hình chọn chương lý thuyết
38
7
Bảng 3.5. Mơ tả chi tiết màn hình lựa chọn nội dung lý thuyết
39
8
Bảng 3.6. Mơ tả chi tiết màn hình hiển thị nội dung lý thuyết
40
9
Bảng 3.7. Mô tả chi tiết màn hình hiển thị các cấu trúc lệnh
41
10
Bảng 3.8. Mơ tả chi tiết màn hình hiển thị danh sách ví dụ
41
11
Bảng 3.9. Mơ tả chi tiết màn hình hiển thị nội dung ví dụ
42,43
12
Bảng 3.10. Mơ tả chi tiết màn hình lựa chọn loại bài tập
44
13
Bảng 3.11. Mơ tả chi tiết màn hình danh sách bài tập
45
14
Bảng 3.12. Mơ tả chi tiết màn hình nội dung bài tập
45
15
Bảng 3.13. Mơ tả chi tiết màn hình câu hỏi
46
16
Bảng 3.14. Mơ tả chi tiết màn hình thi trắc nghiệm
47
17
Bảng 3.15. Mơ tả chi tiết màn hình điểm thi
48
18
Bảng 3.16. Mơ tả chi tiết màn hình video
49
19
Bảng 3.17. Mơ tả chi tiết màn hình WebView
50
20
Bảng 3.18. Mơ tả chi tiết màn hình thơng tin ứng dụng
51
vii
DANH MỤC CHỮ VIẾT TẮT
STT Chữ viết tắt
1
API
Viết đầy đủ
Ý nghĩa
Application
Giao diện lập trình ứng dụng
Programming Interface
2
GPS
Global Positioning
Hệ thống định vị tồn cầu
System
3
GSM
Global System for
Hệ thống thơng tin di động
Mobile
tồn cầu
Communications
4
5
HTML
JDBC
HyperText Markup
Ngôn ngữ đánh dấu siêu văn
Language
bản
Java Database
Một API tiêu chuẩn dùng để
Connectivity
tương tác với các loại cơ sở dữ
liệu quan hệ.
6
JDK
Java Development Kit
Bộ công cụ phát triển JDK
7
JRE
Java Runtime
Được sử dụng để cung cấp
Environment
môi trường runtime
JVM-Java Virtual
Máy ảo Java
8
JVM
Machine
9
10
PDA
SSL
Personal Digital
Thiết bị kỹ thuật số hỗ trợ cá
Assistant
nhân
Secure Sockets Layer
Tiêu chuẩn của cơng nghệ bảo
mật, truyền thơng mã hố giữa
máy chủ Web server và trình
duyệt (browser)
11
XML
eXtensible Markup
Language
Ngơn ngữ đánh dấu mở rộng
1
A. MỞ ĐẦU
1. Tổng quan về vấn đề nghiên cứu
1.1. Trên thế giới
Theo xu thế phát triển của thời đại hiện nay, cơng nghệ thơng tin đóng vai
trị rất quan trọng trong mọi lĩnh vực kinh tế, chính trị, xã hội, nó đã ăn sâu
vào mọi lĩnh vực. Điện thoại thông minh (smartphone) là những thiết bị công
nghệ quen thuộc với người dùng. Trong đó, phổ biến nhất hiện nay chính là
smartphone chạy hệ điều hành Android.
Android là hệ điều hành trên điện thoại di động, hiện nay là cả trên một số
đầu phát HD, HD Player, TV. Android được phát triển bởi Google và dựa trên
nền tảng Linux. Trước đây, Android được phát triển bởi công ty liên hợp
Android (sau đó được Google mua lại vào năm 2005). Các nhà phát triển viết
ứng dụng cho Android dựa trên ngôn ngữ Java. Sự ra mắt của Android vào
ngày 5 tháng 11 năm 2007 gắn với sự thành lập của liên minh thiết bị cầm tay
mã nguồn mở, bao gồm 78 công ty phần cứng, phần mềm và viễn thông nhằm
mục đính tạo nên một chuẩn mở cho điện thoại di động trong tương lai.
Android chiếm 75% thị phần điện thoại thơng minh trên tồn thế giới vào
thời điểm q 3 năm 2012, với tổng cộng 500 triệu thiết bị đã được kích hoạt
và 1,3 triệu lượt kích hoạt mỗi ngày. Tháng 10 năm 2012, đã có khoảng
700.000 ứng dụng trên Android, và số lượt tải ứng dụng từ Google Play (cửa
hàng ứng dụng chính của Android) ước tính khoảng 25 tỷ lượt. Hiện nay con
số này đã giảm xuống do sự ảnh hưởng lớn của iOS từ Apple và một phần
nhỏ của Windows Phone, tuy nhiên Android vẫn dẫn đầu thị phần.
Một số ứng dụng hỗ trợ học tập trên thiết bị di động nổi tiếng trên thế giới
như: Learn English, UnLockYourBrain, Khan Academy, Speak English,
StudyBlue,... Những ứng dụng này đều vơ cùng hữu ích, tài liệu học tập đều
được chọn lọc kỹ, nội dung đầy đủ và chất lượng. Chỉ với 1 chiếc smartphone
đã cài đặt phần mềm học tập, người dùng có thể học bất cứ lúc nào. Các ứng
2
dụng này sẽ khơng chỉ giúp bạn tìm giải pháp hoặc các chủ đề thích hợp mà
cịn giúp bạn tiết kiệm rất nhiều thời gian.
1.2. Ở Việt Nam
Android là một hệ điều hành có nhiều ưu điểm vượt trội, rất được ưa
chuộng ở Việt Nam. Các máy điện thoại Android có mặt từ năm 2009, các
siêu phẩm Android trên thế giới đều nhanh chóng có mặt ở Việt Nam như:
Google Nexus, Sony Ericsson X10, Motorola Millestone, HTC Desize, HTC
HD, Droid X....
Báo cáo thị trường mobile Việt Nam quý 3/2016 tổng quan về các thiết bị
di động tại Việt Nam:
o Số lượng người dùng các thiết bị điện thoại di động tại Việt Nam
tính đến quý 3 là 25 triệu người dùng. Trong đó có 52% sử
dụng các thiệt bị smartphone chạy hệ điều hành Android.
o Các hãng sử dụng hệ điều hành Android được yêu thích nhất tại
Việt Nam là Samsung, Sony, Asus, Oppo.
o Báo cáo cũng công bố số liệu về tỷ lệ xu hướng kích cỡ màn
hình của các thiết bị: WVGA 480×800 chiếm 28,71%, HD
720×1280 chiếm 26,13%, HD 720×1184 chiếm 15,78%, full HD
1080×1902 chiếm 15,16%, qHD 540×960 chiếm 14,23%.
Trung bình 1 tháng, người dùng Android tải về 200,000 lượt, bằng 1/32
lần so với số lượt tải của iOS. Nhưng tính trung bình, mỗi người dùng
Android tải về số ứng dụng nhiều gấp rưỡi so với người dùng iOS. Điều này
khá logic khi đa số người dùng Android Việt Nam am hiểu về cơng nghệ và
ưa thích tìm hiểu. Về nội dung tải về, người dùng Android ưa thích các phần
mềm hơn các nội dung giải trí. Trung bình 1 tháng 1 người dùng Android tải
về 230 MB. Các phần mềm, game trên Android có cơ chế cài đặt riêng (các
game dung lượng lớn sẽ được download qua server nhà sản xuất).
3
2. Tính cấp thiết của đề tài
Android cung cấp cho ta một nền tảng tốt nhất toàn cầu nhằm tạo ra các
ứng dụng và trò chơi cho người dùng Android ở mọi nơi, cùng với đó là một
thị trường mở để phân phối chúng ngay tức thì[2]. Android được các công ty
công nghệ lựa chọn khi họ cần một hệ điều hành khơng nặng nề, có khả năng
tinh chỉnh, tùy biến do có mã nguồn mở, có bảo mật cao, hỗ trợ nhiều cơng
nghệ tiên tiến, tương thích với nhiều phần cứng và giá rẻ, chạy trên các thiết
bị công nghệ cao thay vì phải tạo dựng từ đầu. Hơn nữa, Android có một kho
ứng dụng khổng lồ trên Google Play, hỗ trợ công nghệ OpenGL là tiền đề
phát triển các ứng dụng có giao diện phức tạp.
Có rất nhiều sinh viên trường Đại học Hùng Vương sử dụng điện thoại
chạy hệ điều hành Android, tuy nhiên việc học tập qua các phần mềm trên
thiết bị di động còn khá mới mẻ. Ở trường Đại học Hùng Vương, ngôn ngữ
lập trình Pascal được đưa vào giảng dạy ở kì đầu tiên của khóa học khóa học
cho sinh viên chuyên ngành cơng nghệ thơng tin. Nó cũng được đưa vào
chương trình đào tạo của sinh viên khơng chun như tốn học, vật lý, điện –
điện tử. Khi tham gia các lớp học lập trình Pascal, sinh viên gặp khơng ít khó
khăn về mặt cấu trúc lệnh, rất khó xây dựng một chương trình hồn chỉnh từ
bài đã cho. Vì vậy, em quyết định “Xây dựng phần mềm hỗ trợ học lập trình
Pascal trên thiết bị di động”. Đề tài sẽ giúp sinh viên dễ dàng hơn trong việc
học tập và nghiên cứu ngơn ngữ lập trình Pascal.
3. Mục tiêu nghiên cứu của đề tài
• Mục tiêu chung: Xây dựng thành cơng phần mềm hỗ trợ học lập trình
Pascal trên thiết bị di động.
• Mục tiêu cụ thể:
- Tìm hiểu hệ điều hành Android
- Biết cách cài đặt cơng cụ lập trình và cách xây dựng ứng dụng có
thể chạy trên thiết bị Android.
- Xây dựng thành công phần mềm hỗ trợ học lập trình Pascal trên
thiết bị di động.
4
4. Đối tượng và phạm vi nghiên cứu
4.1. Đối tượng nghiên cứu
- Ngơn ngữ lập trình Pascal.
- Hệ điều hành Android
- Ngơn ngữ lập trình Java .
4.2. Phạm vi nghiên cứu
- Về nội dung: Ứng dụng học lập trình Pascal trên điện thoại chạy hệ
điều hành Android.
- Về không gian: Khoa Kỹ thuật – Công nghệ trường Đại học Hùng
Vương.
- Về thời gian: Từ ngày 15/10/2016 đến tháng 17/04 /2017
5. Phương pháp nghiên cứu
* Chương 1: Tìm đọc, nghiên cứu và tổng hợp lại các tài liệu, giáo trình
liên quan đến hệ điều hành Android và ngơn ngữ lập trình Java.
* Chương 2: Dựa theo yêu cầu và mong muốn để phân tích hệ thống phần
mềm. Lấy ý kiến của giảng viên hướng dẫn để bổ sung và thiết kế một cách
hợp lý.
* Chương 3: Từ việc phân tích hệ thống ở chương 2, đồng thời dựa vào
những trang web hướng dẫn lập trình trên Android, những video và tài liệu
liên quan để xây dựng phần mềm.
6. Bố cục
Ngoài phần mở đầu, kết luận chung và tài liệu tham khảo thì bản báo cáo
gồm 3 chương sau:
Chương 1: Cơ sở lý thuyết
Chương 2: Phân tích và thiết kế chương trình
Chương 3: Cài đặt và thử nghiệm phần mềm
5
B. NỘI DUNG, KẾT QUẢ NGHIÊN CỨU
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. Ngơn ngữ lập trình Pascal
1.1.1. Cấu trúc một chương trình Pascal
a. Các lệnh điều kiện
• Lệnh điều kiện: IF….. THEN…
Cấu trúc lệnh: IF (<Điều kiện>) THEN <Lệnh 1>;
Lưu đồ biểu diễn lệnh:
Hình 1.1. Lưu đồ biểu diễn lệnh IF...THEN
Giải thích: Khi gặp lệnh này, máy sẽ kiểm tra <biểu thức logic>, nếu biểu
thức này cho giá trị TRUE (đúng điều kiện đặt ra) thì máy thực hiện <lệnh 1>,
ngược lại tức <biểu thức logic> nhận giá trị FALSE thì máy bỏ qua <lệnh 1>
và sẽ thực hiện lệnh kế tiếp câu lệnh if là <lệnh 2>. Như vậy, lệnh 1 chỉ được
thực hiện khi điều kiện đúng.
• Lệnh điều kiện IF….. THEN….ELSE…….
Cấu trúc lệnh: IF (<Điều kiện>) THEN <Lệnh 1>; ELSE <Lệnh 2>;
6
Lưu đồ:
Hình 1.2. Lưu đồ biểu diễn lệnh IF...THEN...ELSE
Giải thích: Nếu biểu thức điều kiện thỏa mãn thì <lệnh 1> sẽ được thực
hiện rồi thực hiện tiếp <lệnh 3>, ngược lại (biểu thức điều kiện khơng thỏa
mãn) thì bỏ qua <lệnh 1> và thực hiện <lệnh 2> rồi thực hiện <lệnh 3>. Như
vậy, dù điều kiện đúng hay sai thì câu lệnh trong If cũng được thực hiện sau
đó sẽ thực hiện tiếp lệnh kế tiếp lệnh If.
b. Các lệnh lựa chọn: Lệnh CASE…. OF….
Case có 2 mẫu:
Mẫu 1
Mẫu 2
CASE <biểu thức> OF
CASE <biểu thức> OF
<Giá trị 1>: <Việc 1>;
<Giá trị 1>: <Việc 1>;
<Giá trị 2>: <Việc 2>;
<Giá trị 2>: <Việc 2>;
…................
………….
<Giá trị N>: <Việc N>;
<Giá trị N>: <Việc N>
END;
ELSE <Việc N+1>;
END;
Biểu thức khơng cịn chỉ là biểu thức Boolean như trong IF mà là các giá
trị kiểu kiệt kê. Lệnh CASE…OF kết thúc là từ khóa END.
7
Lưu đồ:
Hình 1.3. Lưu đồ biểu diễn lệnh CASE...OF
Giải thích: Nếu giá trị của biến hay biểu thức rơi vào các giá trị khai báo
thứ k thì lệnh thứ k được thực hiện rồi thoát ra khỏi lệnh Case, trái lại, khơng
có lệnh nào được thực hiện (ở dạng thiếu) hoặc thực hiện lệnh thứ N+1 (ở
dạng đủ).
c. Các lệnh lặp
• Lệnh lặp có số vịng lặp xác định (FOR)
Với số lần lặp biết trước ta sử dụng FOR với 2 mẫu:
+ Mẫu 1: Theo chiều tiến của biến đếm:
FOR <Biến đếm>:= <BT1> TO <BT2> DO <Thực hiện công việc>;
Lưu đồ vịng lặp xác định For…to…do…:
Hình 1.4. Lưu đồ biểu diễn lệnh FOR
8
Giải thích sự hoạt động của lệnh FOR (mẫu 1):
(1). Đầu tiên, <biến đếm> nhận giá trị của <Biểu thức 1>.
(2). Máy kiểm tra xem giá trị của <Biểu thức 1> có nhỏ hơn hoặc bằng giá
trị của <Biểu thức 2> không (tức xét biểu thức Biểu thức 1 <= Biểu thức 2).
(3). Nếu điều kiện trên sai thì sẽ thốt khỏi vịng lặp FOR để thực hiện các
việc kế tiếp vịng lặp FOR. Nếu điều kiện trên đúng thì máy sẽ thực hiện
<Lệnh> sau DO. Sau đó, biến đếm tăng lên 1 giá trị và quay lại bước (2).
<Lệnh> sẽ được thực hiện (<Biểu thức 2> - <Biểu thức 1> +1) lần.
+ Mẫu 2: Theo chiều giảm của Biến đếm:
FOR <Biến đếm>:= <Biểu thức 1> DOWN TO <Biểu thức 2> DO
| hiện cơng việc>;
Lưu đồ vịng lặp xác định For…. Down To… Do…: Tương tự vịng lặp
For...To...Do.
Giải thích sự hoạt động của lệnh FOR (mẫu 2):
(1). Đầu tiên, <biến đếm> nhận giá trị của <Biểu thức 1>.
(2). Máy kiểm tra xem giá trị của <Biểu thức 1> có lớn hơn hoặc bằng
giá trị của <Biểu thức 2> không .
(3). Nếu điều kiện trên sai thì sẽ thốt khỏi vịng lặp FOR để thực hiện
các việc kế tiếp vòng lặp FOR. Nếu điều kiện trên đúng thì máy sẽ thực
hiện <Lệnh> sau DO. Sau đó, biến đếm giảm đi 1 giá trị và quay lại
bước (2).
<Lệnh> sẽ được thực hiện (<Biểu thức 1> - <Biểu thức 2> +1) lần.
• Lệnh lặp có số vịng lặp khơng xác định: Repeat…..Until, While...Do
+ Lệnh lặp Repeat…..Until
Ý nghĩa: Là lệnh yêu cầu chương trình lặp lại nhiều lần một số hành động
cho đến khi thỏa mãn điều kiện thì thốt khỏi vịng lặp.
Cấu trúc:
Repeat
<Lệnh 1>;
……..
Until <Biểu thức logic>;
9
Lưu đồ:
Hình 1.5. Lưu đồ biểu diễn lệnh REPEAT...UNTIL
Giải thích: Đầu tiên, máy sẽ thực hiện <Lệnh>, sau đó sẽ kiểm tra
thức logic>. Nếu <Biểu thức logic> nhận giá trị FALSE thì lại quay lên đầu
vịng lặp thực hiện tiếp <Lệnh>. Nếu <Biểu thức logic> nhận giá trị TRUE thì
máy thốt khỏi vịng lặp.
+ Lệnh lặp While...Do
Là lệnh u cầu chương trình lặp lại nhiều lần một số hành động khi thỏa
mãn điều kiện.
Cấu trúc: WHILE <Biểu thức logic> DO < Lệnh>
Lưu đồ:
Hình 1.6. Lưu đồ biểu diễn lệnh WHILE...DO
Giải thích: Khi gặp lệnh này trước tiên, máy sẽ kiểm tra
logic>, nếu <Biểu thức logic> cho kết quả True thì thực hiện <Lệnh> cho đến
10
khi <Biểu thức logic> khơng cịn là True nữa. Nếu <Lệnh> khơng phải lệnh
đơn thì phải đặt chúng trong cặp từ khóa Begin…..End.
Trong vịng lặp phải có lệnh nào đó làm thay đổi giá trị một biến trong
<Biểu thức logic> làm dừng vịng lặp, nếu khơng vịng lặp sẽ lặp lại mãi mà
khơng dừng. Ngay khi vào vịng lặp, máy sẽ kiểm tra biểu thức logic, nếu
khơng thỏa mãn thì máy tự động thốt khỏi vịng lặp mà khơng thực hiện các
lệnh trong vòng lặp.
1.1.2. Các cấu trúc dữ liệu phức tạp
a. Phương pháp lập trình theo modun
- Tư tưởng lập trình theo modun:
Là phương pháp lập trình bằng cách phân rã bài toán lớn thành bài toán
nhỏ hơn và mỗi bài tốn nhỏ được gọi là mơđun của chương trình. Việc phân
rã được tiến hành theo nhiều cấp khác nhau cho đến khi khơng phân rã được
nữa thì thơi. Mỗi môđun sẽ thực hiện một nhiệm vụ cụ thể độc lập trong
chương trình.
- Đệ qui của chương trình con:
Trong một chương trình con có thể có lời gọi chính chương trình con đó.
Tính chất này được gọi là tính đệ qui. Ví dụ tính giai thừa ta có thể thực hiện
thông qua định nghĩa: n!= 1.2.3...(n-1).n với n nguyên và n > 0;
1
khi n=0
hoặc n!=
(n-1)!.n khi n > 1
b. Cấu trúc kiểu dữ liệu tập hợp
Tập hợp là một nhóm các phần tử có chung một tính chất nào đó. Để mơ
tả tập hợp người ta dùng phương pháp liệt kê. Một tập hợp bao gồm một số
các đối tượng nào đó có cùng bản chất. Trong Pascal điều đó có nghĩa là có
cùng một kiểu mơ tả kiểu. Kiểu này được gọi là kiểu cơ bản (boolean, char,
byte) hay một đoạn con (không được là số thực).
Để khai báo kiểu và biến kiểu tập hợp người ta dùng từ khóa:
SET OF <kiểu của các phần tử của tập>
11
c. Cấu trúc dữ liệu mảng
Mảng 1 chiều
Một mảng dữ liệu gồm một số hữu hạn phần tử có cùng kiểu dữ liệu. Số
phần tử của mảng phải được xác định ngay từ khi định nghĩa mảng. Mỗi phần
tử của mảng được truy xuất trực tiếp thông qua tên mảng cùng với chỉ dẫn
truy nhập được đặt trong cặp ngoặc vuông [ ]. Khai báo mảng theo 2 cách:
- Khai báo trực tiếp:
var ten_bien: Array [kieu_chi_dan] of kieu_phan_tu;
- Khai báo gián tiếp thông qua định nghĩa kiểu dữ liệu mới:
type ten_kieu = Array [kieu_chi_dan] of kieu_phan_tu;
var
ten_bien:ten_kieu;
Mảng hai chiều
Kiểu phần tử của mảng không bị hạn chế như kiểu chỉ dẫn. Nó cịn có thể
là các kiểu dữ liệu có cấu trúc. Ví dụ sau cho thấy việc khai báo một mảng có
các phần tử cũng là mảng.
c. Cấu trúc dữ liệu xâu
Xâu kí tự là một kiểu dữ liệu dùng để xử lý các chuỗi hay các dãy ký tự
có độ dài thay đổi nhằm đáp ứng nhu cầu xử lý văn bản, xử lý từ (ngữ). Dữ
liệu kiểu xâu ký tự có nhiều điểm tương tự như kiểu mảng nhưng cũng có
điểm khác nhau là số ký tự trong một biến kiểu xâu ký tự có thể thay đổi, cịn
số phần tử của kiểu mảng ln ln cố định.
Khai báo:
o Khai báo trực tiếp:
VAR <TÊN BIẾN XÂU>: STRING[<ĐỘ DÀI CỰC ĐẠI>];
o Hoặc khai báo gián tiếp:
TYPE <TÊN KIỂU>= STRING[<ĐỘ DÀI CỰC ĐẠI>];
VAR <TÊN BIẾN XÂU>: <TÊN KIỂU>;
12
d. Cấu trúc kiểu bản ghi
Để tạo ra kiểu dữ liệu mới với các phần tử dữ liệu có kiểu khác nhau
nhưng có liên kết với nhau, người ta định nghĩa ra bản ghi (record). Như vậy,
Record là một phương diện linh hoạt nhất để xây dựng các kiểu dữ liệu mới.
Bản ghi là một cấu trúc bao gồm nhiều thành phần. Các thành phần có thể
thuộc các kiểu dữ liệu khác nhau và được gọi tên là các trường, mỗi trường
đều phải được đặt tên.
Khai báo:
Để mô tả kiểu T có cấu trúc RECORD với danh sách các trường có tên là
S1,S2,..,Sn và có cá kiểu mơ tả tương ứng là T1,T2,..,Tn ta dùng cách viết
như sau:
TYPE
T= RECORD
S1:T1;
S2:T2;
...
Sn:Tn;
End;
e. Cấu trúc kiểu con trỏ
Cú pháp: Type
<Kieu con tro> = <^Kieu du lieu>
Khai báo biến con trỏ:
Var
sv1 : ControSV;
sv2 : ^sinhvien;
{khai bao gian tiep}
{khai bao truc tiep}
Cấp phát vùng nhớ cho các biến: Chúng ta chú ý rằng biến con trỏ cũng là
biến tĩnh nên nó được máy cấp phát vùng nhớ 4 byte. Ví dụ với biến sv1 như
trên thì sv1 là 1 biến con trỏ, nó được cấp phát vùng nhớ 4 byte còn biến sv1^
là biến động và chưa được cấp phát. Tức ta có thể hiểu sv1 là biến con trỏ
chứa địa chỉ của biến động sv1^.
Để cấp phát vùng nhớ cho biến động sv1 ta dùng toán tử New(sv1);
13
Con trỏ NILL là con trỏ đặc biệt, không trỏ tới đâu cả. Giá trị của con trỏ
NILL bằng 0 hay là rỗng tương ứng với mọi kiểu con trỏ.
g. Cấu trúc kiểu tệp tin
Tệp là một dãy các phần tử cùng kiểu được sắp xếp một cách tuần tự. Tệp
dữ liệu được lưu trữ ở bộ nhớ ngoài dưới một tên nào đó. Các phần tử dữ liệu
trong tệp có cùng cấu trúc giống như mảng nhưng khác mảng là số phần tử
của tệp chưa được xác định.
Pascal có 3 loại tệp được sử dụng là:
• Tệp văn bản: Dùng để lưu trữ dữ liệu dưới dạng các ký tự của bảng mã
ASCII, các ký tự này được lưu thành từng dịng, độ dài của các dịng có
thể khác nhau.
• Tệp có kiểu: Tệp có kiểu là tệp mà các phần tử của nó có cùng độ dài
và cùng kiểu dữ liệu.
• Tệp khơng kiểu: Tệp khơng kiểu là một loại tệp không cần quan tâm
đến kiểu dữ liệu ghi trên tệp. Dữ liệu ghi vào tệp không cần chuyển đổi.
- Tệp văn bản:
Khai báo: Var Bientep:Text;
Truy nhập vào tệp:
* Mở tệp mới để ghi:
Assign(bientep, tentep);
Rewrite(bientep);
* Mở tệp đã có để ghi thêm:
Assign(bientep, tentep);
Append(bientep);
* Mở tệp để đọc dữ liệu:
Assign(bientep, tentep);
Reset(bientep);
- Tệp có kiểu:
Ghi lên tệp: Write(bientep,bien1,bien2,…);
bien1,bien2,…là các biến cùng kiểu với biến tệp.
14
Đọc tệp: Read(bientep,bien1,bien2,…);
Truy nhập vào tệp: Seek(bientep,i); i=0,1,2,…
Thủ tục seek sẽ định vị con trỏ tại vị trí thứ i của tệp.
- Tệp không kiểu:
Khai báo biến tệp: Var Bientep:File;
Mở tệp để ghi - đọc:
* Mở tệp mới để ghi:
Assign(bientep, tentep);
Rewrite(bientep, n);
* Mở tệp để đọc dữ liệu:
Assign(bientep, tentep);
Reset(bientep, n); {n là độ lớn tính theo Byte}
Đọc và ghi tệp khơng định kiểu:
* Đọc tệp khơng định kiểu: BlockRead(bientep,biennho,i,j);
Trong đó:
biennho: là biến đã được khai báo cùng kiểu với các phần tử của
tệp, biến nhớ đóng vai trị vùng nhớ đệm để lưu trữ dữ liệu đọc từ phần
tử của tệp.
i: là số phần tử quy định cho mỗi lần đọc
j: là biến kiểu Word, dùng để ghi lại số phần tử thực sự đã đọc.
Ghi tệp không định kiểu: BlockWrite(bientep,biennho,i);
Truy nhập tệp không định kiểu: Tệp không kiểu cũng được truy nhập như
tệp có kiểu nghĩa là cũng dùng thủ tục Seek (bientep,n) để truy nhập vào phần
tử thứ n+1 của tệp.
15
1.2. Tổng quan về hệ điều hành Android trên thiết bị di động
1.2.1. Sự ra đời
Hình 1.7. Hệ điều hành Android
Android là một hệ điều hành dành cho thiết bị di động như điện thoại,
máy tính bảng. Android được phát triển bởi Google, dựa trên nền tảng Linux
kernel và các phần mềm nguồn mở. Ban đầu, nó được phát triển bởi Android
Inc, sau đó được Google mua lại vào năm 2005[1]. Ngồi ra, Android cịn có
một cộng đồng phát triển ứng dụng rất lớn để mở rộng chức năng của thiết bị,
bằng một loại ngơn ngữ lập trình Java có sửa đổi. Android chiếm 75% thị
phần điện thoại thông minh trên toàn thế giới vào thời điểm quý 3 năm 2012,
với tổng cộng 500 triệu thiết bị đã được kích hoạt và 1,3 triệu lượt kích hoạt
mỗi ngày. Sự thành cơng của hệ điều hành cũng khiến nó trở thành mục tiêu
trong các vụ kiện liên quan đến bằng phát minh, góp mặt trong cái gọi là
"cuộc chiến điện thoại thông minh" giữa các công ty công nghệ.
Hệ điều hành Android một hệ điều hành rất mạnh mạnh, có bảo mật cao,
hỗ trợ được nhiều công nghệ tiên tiến như 3G, GPS, EDGE, Wifi.. tương
thích với nhiều phần cứng, hỗ trợ nhiều loại bộ nhập dữ liệu như keyboard,
touch và trackball. Android là hệ điều hành di động nên có khả năng kết nối
16
cao với các mạng không dây. Hỗ trợ công nghệ OpenGL nên có khả năng
chơi các phương tiện media, hoạt hình cũng như trình diễn các khả năng đồ
họa khác cực tốt, là tiền đề để phát triển các ứng dụng có giao diện phức tạp
chẳng hạn như là các trị chơi.
Năm 2008, hệ điều hành android đã chính thức mở tồn bộ mã nguồn,
điều đó cho phép các hãng điện thoại có thể đem mã nguồn về tùy chỉnh, thiết
kế lại sao cho phù hợp với mỗi mẫu mã điện thoại của họ và điều quan trọng
nữa là hệ điều hành mở này hồn tồn miễn phí, khơng phải trả tiền nên giúp
họ tiết kiệm khá lớn chi phí phát triển hệ điều hành. Những điều đó là cực kỳ
tốt không chỉ đối với các hãng sản xuất điện thoại nhỏ mà ngay cả với những
hãng lớn như Samsung, HTC....
Với Google, vì Android hồn tồn miễn phí, Google khơng thu tiền từ
những hãng sản xuất điện thoại, tuy không trực tiếp hưởng lợi từ Android
nhưng bù lại, những dịch vụ của hãng như Google Search, Google Maps,...
nhờ có Android mà có thể dễ dàng xâm nhập nhanh vào thị trường di động vì
mỗi chiếc điện thoại được sản xuất ra đều được tích hợp hàng loạt dịch vụ của
Google. Từ đó hãng có thể kiếm bội, chủ yếu là từ các nguồn quảng cáo trên
các dịch vụ đó.
Với các nhà phát triển ứng dụng (developers), việc hệ điều hành Android
được sử dụng phổ biến đồng nghĩa với việc họ có thể thoải mái phát triển ứng
dụng trên nền Android với sự tin tưởng là ứng dụng đó sẻ có thể chạy được
ngay trên nhiều dòng điện thoại của các hãng khác nhau. Họ ít phải quan tâm
là đang phát triển cho điện thoại nào, phiên bản bao nhiêu vì nền tảng
Android là chung cho nhiều dòng máy, máy ảo Java đã chịu trách nhiệm thực
thi những ứng dụng phù hợp với mỗi dịng điện thoại mà nó đang chạy. Tất cả
các chương trình ứng dụng được viết bằng ngơn ngữ Java kết hợp với XML
nên có khả năng khả chuyển cao.