Ngày nay, cùng với sự vươn lên của đất nước, hòa vào đó Công nghệ thông tin là một ngành đã có những bước phát triển mạnh mẽ không ngừng và nó đã trở thành chiếc chìa khóa dẫn đến thành công cho nhiều cá nhân, tổ chức. Với những ứng dụng của mình, công nghệ thông tin đã góp phần mang lại nhiều lợi ích mà không ai có thể phủ nhận được. Đặc biệt là trong lĩnh vực quản lý kinh tế, công nghệ thông tin đã góp phần tạo ra sự thay đổi nhanh chóng cho bộ mặt xã hội. Trong quá trình thực hiện đề tài nhóm đã gặp phải không ít khó khăn và trở ngại, tuy nhiên, với sự giúp đỡ của bạn bè, cùng sự hướng dẫn tận tình, chỉ bảo cặn kẽ của giảng viên Ths. Nguyễn Văn Tỉnh, cuối cùng chúng em cũng đã cố gắng hoàn thành đề tài này với tất cả sự cố gắng và nỗ lực. Chúng em xin được gửi lời cảm ơn tới những người bạn đã góp ý và giúp đỡ nhóm, và đặc biệt là cảm ơn thầy, người đã giúp chúng tôi xác định được những yêu cầu và mục tiêu đề tài, truyền dạy các kĩ năng nghiệp vụ cũng như hướng dẫn cho chúng tôi cách thức thực hiện đề tài..
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
- -BÁO CÁO BTL
ĐỒ ÁN CHUYÊN NGÀNH CNPM
Đề tài : Tìm Hiểu JAVA Và Xây Dựng Game Mario
Giảng viên hướng dẫn : Ths Nguyễn Văn Tỉnh
Mai Huy Cảnh Ngô Văn An Trần Văn Tam
Hà Nội, tháng 11 năm 2015
Trang 2LỜI CẢM ƠN
Ngày nay, cùng với sự vươn lên của đất nước, hòa vào đó Công nghệ thông tin
là một ngành đã có những bước phát triển mạnh mẽ không ngừng và nó đã trở thànhchiếc chìa khóa dẫn đến thành công cho nhiều cá nhân, tổ chức Với những ứng dụng củamình, công nghệ thông tin đã góp phần mang lại nhiều lợi ích mà không ai có thể phủnhận được Đặc biệt là trong lĩnh vực quản lý kinh tế, công nghệ thông tin đã góp phầntạo ra sự thay đổi nhanh chóng cho bộ mặt xã hội
Trong quá trình thực hiện đề tài nhóm đã gặp phải không ít khó khăn và trở ngại,tuy nhiên, với sự giúp đỡ của bạn bè, cùng sự hướng dẫn tận tình, chỉ bảo cặn kẽ của
giảng viên Ths Nguyễn Văn Tỉnh, cuối cùng chúng em cũng đã cố gắng hoàn thành đề
tài này với tất cả sự cố gắng và nỗ lực Chúng em xin được gửi lời cảm ơn tới nhữngngười bạn đã góp ý và giúp đỡ nhóm, và đặc biệt là cảm ơn thầy, người đã giúp chúng tôixác định được những yêu cầu và mục tiêu đề tài, truyền dạy các kĩ năng nghiệp vụ cũngnhư hướng dẫn cho chúng tôi cách thức thực hiện đề tài
Do kiến thức thực tế và hiểu biết còn hạn chế nên trong quá trình hoàn thành báocáo không tránh khỏi sai sót, nhóm chúng em rất mong sự góp ý đóng góp của thầy vàcác bạn để nhóm có thể hoàn thiện bài tập lớn được tốt hơn
Chúng em xin chân thành cảm ơn!
Trang 3Nội Dung
MỞ ĐẦU 2
1 Đề tài 2
2 Lý do chọn đề tài 2
3 Mục đích - mục tiêu của đề tài 3
4 Bố cục đề tài 3
PHẦN I: TÌM HIỂU JAVA 5
I Giới thiệu về java 5
1 Lịch sử java 5
2 Java là gì? 5
3 Đặc điểm của java 5
4 JVM là gì? 8
5 Các phiên bản JDK 8
II Tìm hiểu Java 9
1 Khái niệm lớp và đối tượng 9
2 Từ khóa và cách đặt tên 9
3 Kiểu dữ liệu 10
4 Toán tử trong java 11
5 Một số cấu trúc điều khiển trong Java 15
6 Access modifier 19
7 Một số từ khóa trong trong java 20
8 Mảng 22
9 Thread 24
10 BufferedImager 26
11 AudioClip 28
III Tìm hiểu java swing 30
1 JFrame 31
2 JPanel 32
3 JLabel 33
4 JTextField 35
Trang 45 JButton 38
Phần II: Quy trình làm game 40
I Giới thiệu 40
1 Trước tiên phát triển trò chơi là sự cộng tác, phối hợp 40
2 Sự khởi đầu 40
3 Quá trình xây dựng game hoàn chỉnh 41
II Tổng quát, phát triển game gồm 4 giai đoạn: 42
1 Giai đoạn tiền sản phẩm/ý tưởng 42
2 Đặc tả lập trình 43
3 Lập trình, đồ họa, nhạc, hiệu ứng âm thanh 43
4 Thử nghiệm, kiểm định, đóng gói 46
PHẦN III: Xây Dựng Game 48
I Phân tích các đối tượng trong game 48
II Biểu đồ Uc hệ thống 49
Tổng kết 50
Tài liệu tham khảo 51
MỞ ĐẦU
1 Đề tài
Trang 5Tên đề tài:
- Tìm hiểu về Java Xây dựng Game Mario
2 Lý do chọn đề tài
- Hiện nay, ngành Công nghệ thông tin đã có những bước phát triển nhanh chóng
về ứng dụng của nó trong mọi lĩnh vực trong cuộc sống trên phạm vi toàn thế giới nói chung và việt nam nói riêng Công nghệ thông tin là một phần không thể thiếu của cuộc sống văn minh, góp phần đẩy mạnh công cuộc công nghiệp hóa hiện đại hóa đất nước Việc ứng dụng những thành quả của khoa học công nghệ vào trong đời sống, trong công tác là hết sức thiết yếu Ứng dụng của công nghệ thông tin kết hợp với truyền thông hóa được xem là một trong nhữngyếu tố mang tính quyết định trong hoạt động của công ty, các tổ chức, nó đóng vai trò quan trọng và không thể thiếu Công nghệ thông tin và truyền thông hóa góp phần làm thay đổi suy nghĩ, lối mòn tư duy của mỗi con người,
nó giúp con người năng động hơn, kết nối nhanh hơn ở mọi lúc mọi nơi làm tăng mức độ hiệu quả, năng suất của công việc
- Java là một công nghệ xây dựng các ứng dụng phần mềm có vị trí rất lớn trong những năm cuối thế kỉ 20, đầu thế kỉ 21 Nó được coi là công nghệ mang tính cách mạng và khả thi nhất trong việc tạo ra các ứng dụng có khả năng chạy thống nhất trên nhiều nền tảng mà chỉ cần biên dịch một lần Là một ngôn ngữ bậc cao như C, C++, Perl, SmallTalk, cho nên có thể được dùng để tạo ra các ứng dụng để giải quyết các vấn đề về số, xử lý văn bản, tạo ra trò chơi, và nhiềuthứ khác
- Trong quá trình tìm hiểu chúng em thấy rất hứng thú với Bộ công cụ hỗ trợ việctạo giao diện người dùng (GUI) Swing là một bộ công cụ tiện ích, là một phần của ngôn ngữ lập trình Java tổng thể nó hỗ trợ cho người dùng tạo ra các cửa sổ windows, các layout cho phần mềm, tạo ra các control cho phép người dùng tương tác nên chúng em đã quyết định sử dụng bộ công cụ này của Java để xây dựng game Mario để thấy rõ được khả năng mạnh mẽ của nó
Trang 63 Mục đích - mục tiêu của đề tài.
Mục đích:
- Nắm chắc được được kỹ năng và kiến thức về lập trình
- Tìm hiểu về lập trình hướng đối tượng trong java
- Tìm hiểu về bộ công cụ Swing trong java để xây dựng game
- Nắm bắt được quy trình làm game hoàn chỉnh và theo tiêu chuẩn
Mục tiêu:
- Vận Dụng được tính chất của lập trình Hướng Đối Tượng
- Ứng dụng của Swing vào việc xây dựng Game Mario
Phần II: Nội dung (gồm 3 chương)
Chương I: Tìm hiểu về Java
- Chương này nhóm tiền hành tìm hiểu về ngôn ngữ lập trình hướng đối tượng Java Về phương pháp lập trình hướng đối tượng trong Java, bộ công cụ
hỗ trợ việc tạo giao diện người dùng, một số thuộc tính cần dung trong java Swing phục vụ cho nhóm làm game Mario
Trang 7 Chương II: Tìm hiểu về quy trình làm game
- Trong chương này, nhóm sẽ nêu ra các quy trình làm game hoàn chỉnh: từ khi bắt đầu một dự án cho đến khi sản phẩm được kiểm tra và đóng gói để sẵn sàng đưa ra thị trường phục vụ người dùng
Chương III: Xây dựng game
- Chương này sẽ bao gồm kịch bản Game và các đối tượng được xây dựng trong Game
Trang 8- Năm 1995 đổi tên thành Java.
- Ngày 27 tháng 1 năm 2010, Sun bị hãng Oracle Corporation mua với giá
US$7,4 tỷ, theo một thỏa ước ký ngày 20 tháng 4 2009 Một tháng sau đó, Sun được nhập với Oracle USA để trở thành Oracle America, Inc
2 Java là gì?
- Là một ngôn ngữ OOP đầy đủ, không thể viết 1 ứng dụng hướng thủ tục trong Java
- Có thể giải các họ bài toán như những ngôn ngữ lập trình khác
- Sử dụng 2 cơ chế: Thông dịch | Biên dịch
- Viết mã một, chạy nó bất cứ nơi nào, bất cứ lúc nào, mãi mãi
3 Đặc điểm của java
- Đơn giản ( simple) Tương tự như C++ nhưng bỏ bớt các đặc tính phức tạp của C++ như: quản lý bộ nhớ, pointer, overload toán tử, không dùng include, bỏ struct, union
- Hướng đối tượng (OO) Mọi thứ trong Java là đối tượng
- Phân tán (Distributed) Nhắm đến phân bố ứng dụng trên mạng, ứng dụng độc lập platform
- Mạnh (Robust) Định kiểu mạnh, tường minh, kiểm tra lúc biên dịch và kiểm trakhi thông dịch trước khi thực thi -> Giới hạn được lỗi; kiểm tra truy xuất phần
Trang 9tử của mảng, chuỗi lúc thực thi, kiểm tra ép kiểu run-time Có trình gom rác – garbage collection- programmer không cần phải lo toan đến việc hủy đối tượng.
- Bảo mật (Secure): Kiểm tra an toàn code trước khi thực thi, có nhiều mức kiểm tra bảo mật à Môi trường thực thi an toàn
Mức 1: Mức ngôn ngữ: Nhờ tính bao gói dữ liệu của OOP, không cho phép truy cập trực tiếp bộ nhớ mà phải thông qua method
Mức 2: Mức Compiler, kiểm tra an toàn cho code trước khi biên dịch
Mức 3: Mức Interpreter, trước khi bytecode được thực thi, được kiểm tra
an toàn
Mức 4: Mức Class, các class trước khi nạp được kiểm tra an toàn
- Hiệu xuất cao, đa luồng, linh động ….v….v
Trang 10Hình ảnh: mức độ an toàn của các ngôn ngữ.
Trang 114 JVM là gì?
- JVM- Java Virtual Machine : là trung tâm của Java
- Là một phần mềm giả lập một máy tính trong đó : có tập lệnh định nghĩa các tácvụ
Trang 12- J2SE 1.4.0 (Merlin) 06 tháng 02, 2002
o J2SE 1.4.1 (Hopper) 16 tháng 9, 2002
o J2SE 1.4.2 (Mantis) 26 tháng 6, 2003
- J2SE 5 (1.5.0) (Tiger) 30 tháng 9, 2004
- Java SE 6 (còn gọi là Mustang), được công bố 11 tháng 12 năm 2006, thông tin
chính tại http://java.sun.com/javase/6 / Các bản cập nhật 2 và 3 được đưa ra vàonăm 2007, bản cập nhật 4 đưa ra tháng 1 năm 2008
- JDK 6.18, 2010
- Java SE 7 (còn gọi là Dolphin), được bắt đầu từ tháng 8 năm 2006 và công bố
ngày 28 tháng 7 năm 2011
- JDK 8, 18 tháng 3 năm 2014
- Phiên bản dự kiến tiếp theo: Java 9 dự kiến ra đời năm 2016
II Tìm hiểu Java.
1 Khái niệm lớp và đối tượng
- Đối tượng (Object): vật,người,… cụ thể
- Đối tượng = Properties + Methods
- Lớp (class): Mô hình (template) mô tả cho 1 nhóm đối tượng Đối tượng là 1 hiện hữu, thực thể (instance) của class
- Một lớp có thể là lớp con (derived class- lớp dẫn xuất, lớp thừa kế, lớp mở rộng-extend) của 1 lớp khác -> Quan hệ cha-con
- Class Hierarchy- Phân cấp các class:Cấu trúc 1 lớp cùng các lớp con của nó (tree)
Trang 13- Từ khóa cho phát biểu rẽ nhánh: if, else, switch, case, default, break
- Từ khóa đặc tả đặc tính một method: private, public, protected, final, static,
abstract, synchronized, volatile, strictfp
- Hằng (literal): true, false, null.
- Từ khóa liên quan đến method: return, void.
- Từ khoá liên quan đến package: package, import.
3 Kiểu dữ liệu
Ví dụ: Dùng các ký tự đặc tả việc buộc phải xem xét trị thuộc 1 kiểu nào
đó: i, I, l, L, f, F, d, D, nhưng L thường dùng thay cho l vì sợ nhầm với 1.
178 int (default) 45.62 double (default)178L long 44.21f float
11.19e8 double (default)
‘z’ char , hằng klý tự để trong cặp nhát đơn (single quote character)Nhận xét: Gần như C++
Trang 144 Toán tử trong java.
- Toán tử số học
+ CộngTrả vể giá trị tổng hai toán hạng
- TrừTrả về giá trị của phép trừ
/ ChiaTrả về giá trị là thương của phép chia
* NhânTrả về giá trị là tích hai toán hạng
% Phép lấy modulGiá trị trả về là phần dư của phép chia
++ Tăng dầnTăng giá trị của biến lên 1 Vd: a++ tương đương a=a+1
– Giảm dầnGiảm giá của biến 1 đơn vị vd: a—tương đương a= a-1
+=
Cộng và gán giá trị Cộng các giá trị của toán hạng bên trái vào toán
hạng bên phải và gán giá trị trả về vào toán hạng bên trái Vd: c+=a tương đương
c =c+a
-= Trừ và gán giá trị Trừ các giá trị của toán hạng bên trái vào toán toán hạng bên
phải và gán giá trị trả về vào toán hạng bên trái.Vd: c -= a tương đương c = c – a
*=
Nhân và gán Nhân các giá trị của toán hạng bên trái với toán toán hạng bên phải vàgán giá trị trả về vào toán hạng bên trái Vd: c *= a tương đương c = c*a
/= Chia và gán Chia giá trị của toán hạng bên trái cho toán toán hạng bên phải và gán
giá trị trả về vào toán hạng bên trái D: c /= a tương đương c = c/a
%= Lấy số dư và gán Chia giá trị của toán hạng bên trái cho toán toán hạng bên phải và
gán giá trị số dư vào toán hạng bên trái Ví dụ c %= a tương đương c = c%a
- Toán tử Bit: Các toán tử dạng bit cho phép ta thao tác trên từng bit riêng biệt
trong các kiểu dữ liệu nguyên thuỷ
Trang 15Toán tử Mô tả
~ Phủ định bit (NOT)Trả về giá trị phủ định của một bít
& Toán tử AND bítTrả về giá trị là 1 nếu các toán hạng là 1 và 0 trong
<<
Dịch sang trái bítChuyển toàn bộ các bít cuả một số sang trái một vị trí, giữ nguyên dấu cuả số âm.Toán hạng bên trái là số bị dịch còn số bên phải chỉ số vị trí mà các bít cần dịch
- Toán tử quan hệ: Các toán tử quan hệ kiểm tra mối quan hệ giữa hai toán hạng
Kết quả của một biểu thức có dùng các toán tử quan hệ là những giá trị Boolean
(logic “đúng” hoặc “sai”) Các toán tử quan hệ được sử dụng trong các cấu trúc
điều khiển
== So sánh bằngToán tử này kiểm tra sự tương đương của hai toán hạng
!= So sánh khácKiểm tra sự khác nhau của hai toán hạng
> Lớn hơnKiểm tra giá trị của toán hạng bên phải lớn hơn toán hạng bên
Trang 16trái hay không
< Nhỏ hơnKiểm tra giá trị của toán hạng bên phải có nhỏ hơn toán hạng
bên trái hay không
>= Lớn hơn hoặc bằngKiểm tra giá trị của toán hạng bên phải có lớn hơn
hoặc bằng toán hạng bên trái haykhông
<= Nhỏ hơn hoặc bằngKiểm tra giá trị của toán hạng bên phải có nhỏ hơn
hoặc bằng toán hạng bên trái haykhông
- Các toán tử logic Các toán tử logic làm việc với các toán hạng Boolean Một
vài toán tử kiểu này được chỉ ra dưới đây
&& Và (AND)Trả về một giá trị “Đúng” (True) nếu chỉ khi cả hai toán tử có
giá trị “True”
| Hoặc (OR)Trả về giá trị “True” nếu ít nhất một giá trị là True
^ XORTrả về giá trị True nếu và chỉ nếu chỉ một trong các giá trị là True,
cáctrường hợp còn lại cho giá trị False (sai
! Toán hạng đơn tử NOT Chuyển giá trị từ True sang False và ngược lại
- Các toán tử điều kiện: Toán tử điều kiện là một loại toán tử đặc biệt vì nó bao
gồm ba thành phần cấu thành biểu thức
điều kiện Cú pháp: <biểu thức 1> ? <biểu thức 2> : <biểu thức 3>;
biểu thức 1: Biểu thức logic Trả trả về giá trị True hoặc False
biểu thức 2: Là giá trị trả về nếu <biểu thức 1> xác định là True
biểu thức 3: Là giá trị trả về nếu <biểu thức 1> xác định là False
- Toán tử gán: Toán tử gán (=) dùng để gán một giá trị vào một biến và có thể
gán nhiều giá trị cho nhiều biến cùng một lúc Ví dụ lệnh sau gán một giá trị
cho biến var và giá trị này lại được gán cho nhiều biến trên một dòng lệnh đơn
Trang 17int var = 20;
int p,q,r,s; p=q=r=s=var;
Dòng lệnh cuối cùng được thực hiện từ phải qua trái Đầu tiên giá trị ở biến var được gán cho ‘s’,sau đó giá trị của ‘s’ được gán cho ‘r’ và cứ tiếp như vậy
- Thứ tự ưu tiên của các toán tử: Các biểu thức được viết ra nói chung gồm nhiều
toán tử Thứ tự ưu tiên quyết định trật tự thực hiện các toán tử trên các biểu thức Bảng dưới đây liệt kê thứ tự thực hiện các toán tử trong Java
1 2 Các toán tử đơn như +,-,++,–
3 4 Các toán tử số học và các toán tử dịch như *,/,+,-,<<,>>
Các toán tử quan hệ như >,<,>=,<=,= =,!=
Các toán tử logic và Bit như &&,||,&,|,^
Các toán tử gán như =,*=,/=,+=,-=
- Thay đổi thứ tự ưu tiên
+ Để thay đổi thứ tự ưu tiên trên một biểu thức, bạn có thể sử dụng dấu ngoặc đơn ():
1 Phần được giới hạn trong ngoặc đơn được thực hiện trước
2 Nếu dùng nhiều ngoặc đơn lồng nhau thì toán tử nằm trong ngoặc đơn phía trong sẽ thực thi trước, sau đó đến các vòng phía ngoài
3 Trong phạm vi một cặp ngoặc đơn thì quy tắc thứ tự ưu tiên vẫn giữ nguyên tác dụng
Trang 185 Một số cấu trúc điều khiển trong Java.
- Cấu trúc rẽ nhánh if
+ Dạng khuyết
if (biểu thức điều kiện) {
[Các câu lệnh thực hiện khi biểu thức điều kiện là true];
Trang 19- Cấu trúc Switch-Case
mô tả hoạt động:
Trang 20- Vòng lặp While
Mô tả hoạt động
+ Xét điều kiện trước, đúng rồi mới thực hiện khối lệnh
- Vòng lặp do-while
Trang 21 Mô tả hoạt động
+ Thực hiện khối lệnh trước, rồi xét điều kiện, nếu sai thì không thực hiện nữa Như vậy, ngay cả điều kiện sai từ lần đầu, từ khối lệnh luôn được thực hiện ít nhất 1 lần
- Vòng lặp for
Trang 226 Access modifier
7 Một số từ khóa trong trong java
Trang 23Giải thích một số từ khóa thường dung:
instanceof để so sánh 2 Object có phải là cùng một loại (Type) hay không?
- public : phương thức có thể truy cập được từ bên ngoài lớp khai báo
- protected: có thể truy cập được từ lớp khai báo và những lớp dẫn xuất từ nó
- private : chỉ được truy cập bên trong bản thân lớp khai báo
- extends : là khi một lớp con thừa kế từ lớp cha và bổ sung các năng lực màlớp cha không có
- implements: sự thi hành, sự thực hiện, đồ dùng, dụng cụ, phương tiện, bổ sung implements được sử dụng khi bạn làm việc với interface trong java
Trang 24Sau implement là một interface implement là khi thực hiện các hành động của một interface.
- Ý nghĩa của interface là cung cấp những hành động mà lớp implements nó phải làm, còn làm như thế nào thì tùy lớp đó.
abstract
– Nếu 1 phương thức được khai báo abstract: phương thức này không có cài đặt, việc cài đặt được thực hiện bởi lớp con của lớp chứa phương thức abstract.– Khi 1 phương thức là trừu tượng thì bản thân lớp chứa nó cũng là trừu tượngLợi ích của lớp trừu tượng:: để khai báo những tính năng chung mà chúng ta cần sử dụng cho tất cả lớp con
– Không thể tạo instance (new đối tượng)cho 1 abstract class…mục đích duy nhất của abstract class là để các lớp khác thừa kế nó
Interface: là 1 class chỉ gồm thuộc tính và các hàm abstract được khai báo
– Các biến trong Interface thì phải là public, static hay final
- Không được khai báo private hay protected đối với các biến và các hàm trong Interface vì các hàm này sẽ được viết lại (overriden) trong lớp thực thi nó
Trang 25 Final: Sử dụng từ khoá final cấm sự kế thừa và ghi đè (tức không có tính kế
thừa với class khai báo final) với 1 class final tất cả fương thức của nó đều là final Mục đích: muốn 1 class cố định không muốn có sự mở rộng bảo trì sửa chữa vào class khai báo biến final: nó là 1 hằng
static: Như bạn đã biết mỗi khi muốn thao tác với một đối tượng ta phải
instance nó từ một class mô tả nó Khi creat một đối tượng từ một lớp thì sẽ phải mất vùng nhớ dành đối tượng đó Một đối tượng có thể có rất nhiều fiels, method
- Với biến khai báo static có tác dụng là biến toàn cục cho tất cả các đối tượng
của lớp đó, còn biến bình thường là biến cục bộ của từng đối tượng Một đối tượng nào đó thay đổi giá trị của biến static thì thay đổi đó cũng ảnh hưởng tới những đối tượng khác
- Với hàm khai báo static: chỉ có quyền truy cập đến những biến thành viên
static và chỉ có thể gọi những hàm thành viên static
- Class khai báo static: Static class thì chỉ chứa các hàm và các biến static
Trang 26+ Để cấp phát bộ nhớ cho mảng trong Java ta cần dùng từ khóa new (Tất cảtrong Java đều thông qua các đối tượng) Chẳng hạn để cấp phát vùng nhớ cho mảng trong Java ta làm như sau:
int arrInt = new int[100];
- Khởi tạo mảng
+ Chúng ta có thể khởi tạo giá trị ban đầu cho các phần tử củamảng khi nó được khai báo Ví dụ:
int arrInt[] = {1, 2, 3};
char arrChar[] = {‘a’, ‘b’, ‘c’
String arrString[] = {“Nguyen Van A”, “Vu Van B”, “Vu Van C”’};
- Truy cập mảng
+ Chỉ số mảng trong Java bắt đầu từ 0 Vì vậy phần tử đầu tiên có chỉ số là 0,
và phần tử thứ n có chỉ số là n - 1 Các phần tử của mảng được truy xuất thông qua chỉ số của nó đặt giữa cặp dấu ngoặc vuông ([])
int arrInt[] = {1, 2, 3};
int x = arrInt[0]; // x sẽ có giá trị là 1
int y = arrInt[1]; // y sẽ có giá trị là 2
int z = arrInt[2]; // z sẽ có giá trị là 3
- Định nghĩa có chỉ định số phần tử (size)-> cấp bộ nhớ
char ch[] = new char [5];
- Định nghĩa mảng tức thời (in-line initialization):
int a[] = { 1,4,2,7,8}; // hoặcint [] a = { 1,4,2,7,8};
- Phần tử được tham khảo qua chì số bắt đầu từ 0
Trang 27- Chỉ khai báo: không chỉ định size : long a[];
- Khi sử dụng phải cấp bộ nhớ: a= new long [20];
- Trị mặc định : Toán tử new sẽ xóa bộ nhớ, các bit = 0)
9 Thread
- Luồng(thread): Thread là một tiến trình tách ứng dụng ra một hoặc nhiều luồng khác nhau để cùng thực hiện nhiều nhiệm vụ cùng một lúc
- Các hệ điều hành mới cho phép nhiều luồng được thực thi đồng thời Chúng ta
đã quen với việc mở nhiều ứng dụng trong 1 lần làm việc với máy tính Nhiều ứng dụng được nạp
- Như vậy
o Một luồng là một chuỗi các lệnh nằm trong bộ nhớ ( chương trình đã được nạp)
o 1 application thông thường khi thực thi là 1 luồng
o Trong 1 application có thể có nhiều luồng Thí dụ chuyển động của 10 đối tượng hiện hành trong 1 trò chơi là 10 luồng
- Với máy có m CPU chạy m luồng Mỗi CPU chạy 1 luồng Hiệu quả
- Với máy có m CPU chạy n luồng với n>> m Mỗi CPU chạy n/m luồng
- Với 1 CPU chạy đồng thời k luồng với k>1 Các luồng được quản lý bằng 1 hàng đợi, mỗi luồng được cấp phát thời gian mà CPU thực thi là ti (cơ chế time-slicing – phân chia tài nguyên thời gian) Luồng ở đỉnh hàng đợi được lấy ra để thực thi trước, sau ti thời gian của mình, luồng này được đưa vào cuối hàng đợi
và CPU lấy ra luồng kế tiếp