Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 25 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
25
Dung lượng
1,12 MB
Nội dung
Chương 1: Giới thiệu về Java
1. Lịch sử hình thành và phát triển
2. Các đặc điểm của Java
3. Các phiên bản của Java
4. Các bước viết và chạy thử một chương
trình Java
5. Các thành phần của chương trình Java
6. Cấu trúc chung của một chương trình
Java
PHẦN I
CƠ BẢN VỀ LẬP TRÌNH JAVA
GV. Ngô Công Thắng
Bộ môn Công nghệ phần mềm
Khoa Công nghệ thông tin
Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng
2. Các đặc điểm của Java
1. Lịch sử hình thành và phát triển
Java là một ngôn ng lập trình hướng đối được đang
được ưa chuộng.
Java là một ngôn ngữ mạnh ngang tầm với C++. So với
C++, Java “mềm dẻo và tao nhã” hơn.
Java được công bố vào năm 1990, tác giả là James
Gosling và Sun Microsystems.
Tên ban đầu là Oak (cây sồi)
Java is simple
Java is object-oriented
Java is distributed
Java is interpreted
Java is robust
Java is secure
Java is architecture-neutral
Java is portable
Java’s performance
Java is multithreaded
Java is dynamic
Java, 20/05/1995, Sun World
HotJava: Trình duyệt Web hỗ trợ Java đầu tiên
JDK Evolutions
J2SE, J2ME, and J2EE
Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng
2
3
đơn giản
hướng đối tượng
phân tán
thông dịch
mạnh mẽ
bảo mật
không phụ thuộc HĐH
khả chuyển
hiệu quả cao
đa luồng
linh động
Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng
4
3. Các phiên bản của Java
JDK Editions
Java Standard Edition (J2SE)
JDK: Java Development Kit
J2SE có thể được dùng để phát triển các ứng dụng
hoặc các applet độc lập phía client (client-side).
Java 1
Java Enterprise Edition (J2EE)
JDK 1.02 (1995)
JDK 1.1 (1996)
J2EE có thể được dùng để phát triển các ứng dụng
phía server (server-side) như các Java servlet và
Java ServerPages.
Java 2
Java Micro Edition (J2ME).
SDK 1.2 (JDK 1.2, 1998)
SDK 1.3 (JDK 1.3, 2000)
SDK 1.4 (JDK 1.4, 2002)
SDK 5.0 (JDK 1.5, 2004)
SDK 6.0 (JDK 1.6, 2007)
Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng
J2ME có thể được sử dụng để phát triển các ứng
dụng cho các thiết bị di động như ĐTDĐ.
Các chương trình ví dụ trong môn học Lập trình
Java viết trên J2SE.
5
4. Các bước viết và chạy thử một
chương trình Java
Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng
6
Quá trình tạo và chạy một chương trình java
Tạo/Sửa Source Code
Soạn thảo chương trình bằng một trình
soạn thảo text hoặc trong IDE.
Biên dịch chương trình
Chạy chương trình
Source Code
Compile Source Code
vd: javac Welcome.java
Nếu có lỗi
Bytecode
bytecode
Run Bytecode
vd: java Welcome
Kết quả
Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng
7
Nếu có lỗi hoặc kết quả Bài
sai giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng
8
Một chương trình Java đơn giản
// Chuong trinh dua ra dong chu Welcome to Java!
package ch01;
public class Welcome
{
public static void main(String[] args)
{
System.out.println("Welcome to Java!");
}
}
Soạn thảo chương trình:
Soạn thảo chương trình (Notepad, Wordpad…)
Ghi tệp với tên có đuôi .java
Ví dụ: Ghi tệp Welcome.java
vào thư mục C:\javapro
Biên dịch:
Trên cửa sổ DOS
cd\
↵
cd javapro ↵
javac Welcome.java ↵
Chú ý: Đặt tên tệp phải trùng với tên lớp, khi gõ
lệnh biên dịch từ DOS thì tên tệp phải giống hệt
tên lớp (cả hoa và thường).
Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng
Tạo, biên dịch, chạy chương trình
trên DOS
Chạy:
java Welcome ↵
9
Thiết lập biến môi trường
Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng
10
Thiết lập biến môi trường
Để biên dịch và chạy các chương trình
Java từ bất kỳ thư mục nào trong DOS ta
phải thiết lập biến môi trường PATH như
sau:
Kích phải chuột vào My Computer ->
Properties -> Advanced -> Environment
Variables
Chọn biến Path -> Edit -> Gõ thêm đường
dẫn tới thư mục Bin của JDK. Ví dụ:
C:\Program Files\Java\jdk1.6.0_02\bin
Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng
11
Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng
12
5. Các thành phần của
một chương trình Java
Thiết lập biến môi trường
Comments (Chú giải, như C++)
Reserved words (Từ khóa)
Modifiers (Như C++, ví dụ: public, private, static)
Statements (Câu lệnh, như C++)
Blocks (Khối lệnh, như C++)
Classes (Lớp, như C++)
Methods (Phương thức, như hàm thành viên
trong C++)
main method (Phương thức chính, như hàm
main() trong C++)
Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng
13
Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng
6. Cấu trúc chung của
một chương trình Java
main Method
main method đóng vai trò là chương trình.
Mọi chương trình Java phải có main
method, nó là điểm khởi đầu khi thực hiện
chương trình.
Dạng thức của main method:
public static void main(String[ ] args)
{
// Statements;
}
Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng
14
Trình thông dịch Java coi chương trình Java như một lớp.
Mọi chương trình Java phải có ít nhất một lớp chứa phương thức
main. Tên lớp chứa phương thức main phải trùng với tên tệp
chương trình.
Cấu trúc chung của một chương trình Java:
import Thư viện lớp (package);//#include của C++
public class TenLop //Ten lop nay la ten tep ctrinh
{
public static void main(String[] args)
{
//Các lệnh của chương trình Java để ở đây
}
//Dinh nghia cac phuong thuc khac
}
15
Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng
16
6. Cấu trúc chung của
một chương trình Java
Ví dụ
Ví dụ:
Import javax.swing.JOptionPane;
public class Welcome
{
Trong ví dụ trên ta sử dụng phương thức
showMessageDialog trong lớp
JOptionPane để hiển thị thông báo trong
một hộp hội thoại.
JOptionPane là một trong nhiều lớp có
sẵn trong hệ thống Java để có thể tái sử
dụng.
public static void main(String[] args)
{
//Hien thi chu Welcome to Java! Trong hop thoai
JOptionPane.showMessageDialog(null,”Welcome to
Java!”,”Chuong trinh vi
du”,JOptionPane.INFORMATION_MESSAGE);
}
}
Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng
17
Phương thức showMessageDialog
JOptionPane.showMessageDialog(null, "Welcome
to Java!", "Example 1.2 Output",
JOptionPane.INFORMATION_MESSAGE);
Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng
19
Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng
18
Chương 2. Các kiểu dữ liệu cơ bản
Chương 2. Các kiểu dữ liệu cơ bản
I. Các kiểu dữ liệu cơ bản
II. Khai báo biến và hằng
III. Biểu thức
IV. Chuyển đổi kiểu dữ liệu
V. Vào/Ra dữ liệu với Java
I. Các kiểu dữ liệu cơ bản
1. Các kiểu dữ liệu số
2. Kiểu ký tự
3. Kiểu logic
4. Kiểu xâu ký tự
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
1
I.1. Các kiểu dữ liệu số
byte
short
int
long
float
double
1
2
4
8
4
8
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
2
I.1. Các kiểu dữ liệu số
byte
byte
byte
byte
byte
byte
Các phép toán số học giống như C++:
+, -, *, /, %
Hằng số nguyên viết như bình thường
Hằng số thực có thể viết theo 2 dạng:
Dạng thập phân: 2.25
Dạng mũ: 2.5E3
Giống các kiểu dữ liệu số của C++
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
3
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
4
I.2. Kiểu ký tự
I.2. Kiểu ký tự
Giống như C++, được định nghĩa với từ khóa
char
Kiểu char có kích thước 2 byte. Một biến char có
thể chứa cả ký tự ASCII và ký tự Unicode.
Kiểu char có thể dùng như kiểu số.
Hằng ký tự là một ký tự đặt giữa 2 dấu phẩy
trên. Ví dụ: ‘A’
Hằng xâu ký tự là một dãy ký tự bất kỳ đặt giữa
hai dấu nháy kép. Ví dụ: “DHNN1”
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
5
I.3. Kiểu logic (boolean)
Các ký tự điều khiển:
Description
Escape Sequence
Backspace
‘\b’
Tab
‘\t’
Linefeed
‘\n’
Carriage return
‘\r’
Backslash
‘\\’
Single Quote
‘\’’
Double Quote
‘\”’
Unicode
\u0008
\u0009
\u000a
\u000d
\u005C
\u0027
\u0022
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
6
I.4. Kiểu xâu ký tự
Khác với C++, Java đưa vào kiểu dữ liệu xâu ký
tự. Kiểu xâu ký tự được định nghĩa với tên
chuẩn là String. Thực ra kiểu xâu ký tự là một
lớp đối tượng xâu có sẵn trong Java.
Khi khai báo biến xâu ký tự có thể khởi tạo bằng
một hằng xâu ký tự.
Khác với C++, Java đưa thêm vào kiểu
logic được định nghĩa với tên chuẩn là
boolean, chỉ có 2 giá trị là true và false.
Hằng boolean được viết là true và false
Các phép toán logic và quan hệ giống
C++.
String st = “DHNN1”;
Có thể dùng phép toán + và += để ghép nhiều
xâu ký tự, ghép xâu ký tự với dữ liệu không phải
xâu ký tự (dữ liệu số).
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
7
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
8
Ví dụ về ghép xâu ký tự
II. Khai báo biến và hằng
String message = "Welcome "+"to " +
"Java";
String s = "Chuong" + 2; // Chuong2
String s1 = "Hello" + 'B';
// s1 trở thành HelloB
Khai báo biến và khởi tạo giá trị ban đầu
cho biến giống như C++. Ví dụ:
int a=100;
Khai báo hằng là đặt tên cho một giá trị cụ
thể. Cú pháp khai báo hằng như sau:
final TenKieu TenHang = GiaTri;
Ví dụ: final double PI=3.14159;
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
9
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
III. Biểu thức
IV. Chuyển đổi kiểu dữ liệu
Biểu thức trong Java giống trong C++.
Lệnh gán và biểu thức gán cũng giống
C++.
Thứ tự ưu tiên và thứ tự thực hiện các
phép toán trong một biểu thức giống C++.
Java có khả năng chuyển đổi kiểu tự
động, quy tắc chuyển đổi kiểu tự động
giống C++.
Có thể ép kiểu, cú pháp ép kiểu như C++
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
11
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
10
12
V. Vào/Ra dữ liệu với Java
V.1. Lấy dữ liệu vào từ bàn phím
Để lấy dữ liệu vào từ bàn phím ta dùng
phương thức showInputDialog() của lớp
JOptionPane, phương thức này cho phép
ta nhập dữ liệu qua hộp thoại.
Dữ liệu nhận được từ hội thoại là xâu ký
tự => dùng biến xâu để chứa dữ liệu nhập
vào, sau đó chuyển xâu ký tự thành kiểu
dữ liệu muốn nhập.
Cách nhập như sau:
1. Lấy dữ liệu vào từ bàn phím
2. Đưa dữ liệu ra màn hình
3. Ví dụ:
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
13
V.1. Lấy dữ liệu vào từ bàn phím
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
14
V.1. Lấy dữ liệu vào từ bàn phím
String st = JOptionPane.showInputDialog(
null, “Prompt Message”, “Dialog Title”,
JOptionPane.QUESTION_MESSAGE);
Để chuyển xâu ký tự biểu diễn số thành
giá trị số nguyên ta dùng phương thức
parseInt của lớp Integer.
int intV = Integer.parseInt(intString);
Để chuyển xâu ký tự biểu diễn số thành
giá trị số thực ta dùng phương thức
parseDouble của lớp Double.
double doubleV = Double.parseDouble(doubleString);
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
15
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
16
V.2. Đưa dữ liệu ra màn hình
V.2. Đưa dữ liệu ra màn hình
Để đưa dữ liệu ra màn hình ta dùng
phương thức showMessageDialog() của
lớp JOptionPane, phương thức này cho
phép ta đưa dữ liệu qua hộp thoại.
Khi đưa dữ liệu ra hội thoại ta có thể dùng
phép + hoặc += để nối xâu ký tự các các
giá trị kiểu dữ liệu cơ bản.
Các dùng:
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
JOptionPane.showMessageDialog(null,
"Welcome to Java!",
"Example 1.2 Output",
JOptionPane.INFORMATION_MESSAGE);
17
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
V.2. Đưa dữ liệu ra màn hình
18
V.2. Đưa dữ liệu ra màn hình
Để định dạng dữ liệu đưa ra màn hình ta dùng
phương thức format() của lớp String, phương
thức này định dạng các dữ liệu thành xâu ký tự
và trả về xâu ký tự đã định dạng đó.
%b
logic
false
%c
Ký tự
‘a’
String st = String.format ( Hằng xâu chứa các tác tử định dạng, Các dữ liệu );
%d
Số nguyên
200
%f
Số thực
2.45
%e
Số thực dạng mũ
2.450E+2
%s
Xâu ký tự
“Ha Noi”
Tác tử định dạng
Các tác tử định dạng bắt đầu bằng dấu % theo
sau là các chữ cái biểu thị loại dữ liệu sẽ định
dạng. Ví dụ: %b định dạng giá trị logic thành
false hoặc true, %d định dạng các số nguyên,…
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
19
Loại dữ liệu định dạng
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
Ví dụ
20
V.2. Đưa dữ liệu ra màn hình
V.2. Đưa dữ liệu ra màn hình
Có thể xác định độ rộng và độ chính xác ngay
sau dấu %, giữa độ rộng và độ chính xác có một
dấu chấm. Độ rộng là số khoảng trống dành cho
dữ liệu, mỗi khoảng trống chứa được một ký tự.
Độ chính xác là số chữ số sau dấu chấm thập
phân.
Ví dụ:
Các dữ liệu cần định dạng phải phù hợp
với các tác tử định dạng.
Mặc định dữ liệu được căn phải trong độ
rộng của nó, để căn trái ta thêm dấu trừ
ngay sau dấu %. Ví dụ %-10d => Số
nguyên có độ rộng 10, được căn trái.
%8.2f định dạng cho số thực có độ rộng 8, số chữ số
sau dấu chấm thập phân 2.
%10d định dạng cho số nguyên, có độ rộng 10.
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
21
V.3. Ví dụ
Viết chương trình tính diện tích và chu vi
hình chữ nhật biết hai cạnh a, b.
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
23
Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng
22
Chương 3. Các lệnh điều khiển
chương trình
Chương 3. Các lệnh điều khiển
chương trình
I. Lệnh lựa chọn
I.1. Lệnh if
I.2. Lệnh switch
II. Lệnh lặp
II.1. Lệnh lặp với số lần lặp xác định for
II.2. Lệnh với số lần lặp không xác định
II.2.1. Lệnh lặp kiểm tra điều kiện trước while
II.2.2. Lệnh lặp kiểm tra điều kiện sau do-while
III. Lệnh break và continue
Tất cả các lệnh điều khiển chương trình
của Java đều giống C++.
Lệnh break và continue cũng giống trong
C++, tuy nhiên trong Java có mở rộng:
Bài giảng LT JAVA - Phần 1,Chương 3 GV. Ngô Công Thắng
Bài giảng LT JAVA - Phần 1,Chương 3 GV. Ngô Công Thắng
1
Chương 3. Các lệnh điều khiển
chương trình
2
Chương 3. Các lệnh điều khiển
chương trình
Ví dụ về lệnh break có nhãn
Bài giảng LT JAVA - Phần 1,Chương 3 GV. Ngô Công Thắng
Sau break và continue có thể có nhãn lệnh
Nhãn lệnh là một tên theo sau là dấu hai
chấm. Nhãn lệnh được đặt trước câu lệnh.
Người ta thường đánh nhãn cho các lệnh lặp.
Ví dụ về lệnh continue có nhãn
3
Bài giảng LT JAVA - Phần 1,Chương 3 GV. Ngô Công Thắng
4
Chương 3. Các lệnh điều khiển
chương trình
Chương 3. Các lệnh điều khiển
chương trình
Bài tập 1: Viết chương trình nhập vào 3 số, sắp
xếp 3 số này theo chiều tăng dần.
Bài tập 2: Viết chương trình nhập vào tháng và
năm dương lịch. Cho biết tháng trong năm đó có
bao nhiêu ngày.
Bài tập 3: Viết chương trình tính gần đúng số π
theo công thức:
Bài tập 4: Viết chương trình tìm ước số
chung lớn nhất của hai số nguyên dương
a, b.
Bài tập 5: Viết chương trình tìm số nguyên
lớn nhất n sao cho n3 < 12000.
π
1
1 1 1
= 1 − + − + L + (−1) n
2n + 1
3 5 7
4
Bài giảng LT JAVA - Phần 1,Chương 3 GV. Ngô Công Thắng
5
Bài giảng LT JAVA - Phần 1,Chương 3 GV. Ngô Công Thắng
6
4.1. Giới thiệu về phương thức
Chương 4. Phương thức (Method)
Tất cả các chương trình con trong Java đều
thuộc một lớp nào đó, chúng được gọi là các
phương thức (hàm thành viên trong C++).
Khác với C++, các phương thức trong Java phải
định nghĩa ngay trong khai báo lớp.
Cú pháp định nghĩa phương thức giống định
nghĩa hàm thành viên trong C++.
Cú pháp gọi phương thức giống cú pháp gọi
hàm thành viên trong C++.
4.1. Giới thiệu về phương thức
4.2. Tạo phương thức
4.3. Sử dụng phương thức
4.4. Truyền đối số theo giá trị
4.5. Chồng phương thức
4.6. Biến cục bộ
4.7. Các phương thức của lớp Math
4.8. Đóng gói các lớp
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
1
4.2. Tạo phương thức
2
4.2. Tạo phương thức
Cú pháp định nghĩa phương thức hơi khác
so với C++ ở chỗ là có thể có thêm các từ
khóa modifier trước kiểu trả về.
Modifier KieuTraVe TenPThuc(DS cac tham so)
{
//Than phuong thuc
}
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
3
Ví dụ:
modifier
DS cac tham so
public static int max(int num1, int num2)
{
TenPThuc
if (num1 > num2)
KieuTraVe
return num1;
else
return num2;
}
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
4
4.3. Sử dụng phương thức
4.3. Sử dụng phương thức
Sử dụng phương thức thông qua lời gọi
phương thức.
Các biến được khai báo trong phần tiêu
đề của phương thức được gọi là các tham
số hình thức hay gọi tắt là tham số.
Khi gọi phương thức, các giá trị truyền cho
các tham số được gọi tham số thực sự
hay đối số.
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
5
4.4. Truyền đối số theo giá trị
TenDoiTuong.TenPThuc(Cac doi so)
Hoặc
TenLop.TenPThuc(Cac doi so) //nếu PThuc là tĩnh
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
6
4.5. Chồng phương thức
Trong Java, việc truyền đối số cho
phương thức chỉ có một kiểu là truyền đối
số theo giá trị.
Các đối số có thể là hằng, biến, biểu thức.
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
Nếu phương thức được gọi ngay trong lớp
chứa định nghĩa phương thức thì lời gọi
phương thức chỉ có tên phương thức cùng
các đối số đặt trong ngoặc tròn.
Nếu phương thức được gọi từ lớp khác thì
cú pháp gọi như sau:
Chồng phương thức giống như chồng
hàm trong C++: Các phương thức có tên
giống nhau nhưng danh sách các tham số
khác nhau.
Khi gọi một phương thức được chồng,
trình biên dịch dựa vào kiểu đối số để xác
định hàm được gọi.
7
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
8
4.7. Các phương thức của lớp
Math
4.6. Biến cục bộ
Biến cục bộ là các biến được khai báo bên
trong phương thức (giống biến tự động
trong C++).
Phạm vi sử dụng của biến cục bộ là từ vị
trí khai báo đến hết khối lệnh chứa khai
báo biến cục bộ.
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
9
4.7. Các phương thức của lớp
Math
10
Các hàm mũ gồm có:
exp(x)
log(x)
pow(y,x)
sqrt(x)
Cho sinx
Cho cosx
Cho tgx
Cho arcsinx
Cho arccosx
Cho arctgx
Đổi độ sang rad
Đổi rad sang độ
ex
lnx
yx
Căn bậc 2 của x
Các hàm làm tròn gồm có:
ceil(x)
floor(x)
rint(x)
Trong đó x có đơn vị là radian.
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
4.7. Các phương thức của lớp
Math
Các hàm lượng giác gồm có:
sin(x)
cos(x)
tan(x)
asin(x)
acos(x)
atan(x)
toRadians(degrees)
toDegrees(radians)
Các hàm số học chuẩn của Java là các
phương thức của lớp Math.
Các phương thức của lớp Math đều là các
phương thức tĩnh (static) nên lời gọi
phương thức phải gắn với tên lớp. Ví dụ:
Math.pow(a,b) cho giá trị ab
round(x)
11
Làm tròn x lên số nguyên gần nhất
Làm tròn x xuống số nguyên gần nhất
Làm tròn x tới số nguyên gần nhất, nếu x ở
giữa hai số nguyên thì làm tròn thành số chẵn
Làm tròn x
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
12
4.7. Các phương thức của lớp
Math
4.8. Đóng gói các lớp
Các hàm min, max và abs gồm có:
max(a,b)
min(a,b)
abs(x)
Các lớp có thể được nhóm lại với nhau
thành các gói (package).
Có bốn lý do cần đóng gói các lớp:
Trả về giá trị lớn nhất
Trả về giá trị nhỏ nhất
Trả về |x|
Dễ tìm các lớp: Các lớp có chức năng tương
tự nhau được đặt trong cùng một gói để dễ
tìm.
Tránh sung đột tên
Phân tán phần mềm thuận tiện
Bảo vệ các thành viên của lớp
Hàm ngẫu nhiên random() trả về một số
ngẫu nhiên lớn hơn hoặc bằng 0 và nhỏ
hơn 1. Để có số ngẫu nhiên nằm giữa a
và a+b (trừ a + b) ta dùng công thức sau:
a + Math.random() * b
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
13
4.8.1. Quy ước đặt tên gói
14
4.8.2. Thư mục chứa các gói
Trong các gói có thể lại chứa các gói khác.
Ví dụ: java.lang.Math cho biết lớp Math nằm
trong gói lang, gói lang nằm trong gói java. Tổ
chức các gói theo kiểu này sẽ đảm bảo các tên
gói không bị trùng nhau.
Nếu muốn đóng gói các lớp để đưa lên Internet
cho mọi người sử dụng thì phải chọn một tên
duy nhất, người ta thường lấy đảo ngược của
tên miền Internet làm tiền tố của tên gói.
Ví dụ: Tên miền của ĐHNN1 là hau1.edu.vn thì
đặt tên gói là vn.edu.hau1.TenGoi
Theo quy ước đặt tên gói dùng chữ thường.
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
Java yêu cầu cấu trúc thư mục chứa gói phải
tương ứng với tên gói.
Ví dụ: với tên gói là vn.edu.hau1.mypackage thì phải
tạo cấu trúc thư mục là \vn\edu\hau1\mypackage
Để Java tìm được nơi đặt cây thư mục gói thì
biến môi trường classpath phải xác định thư
mục chứa cậy thư mục gói.
Ví dụ: nếu cây thư mục gói đặt trong thư mục
c:\javapro thì classpath = . ;c:\javapro
Dấu . xác định thư mục hiện tại luôn ở trong classpath.
15
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
16
4.8.3. Đặt các lớp vào trong các gói
Mỗi lớp Java đều thuộc một gói nào đó.
Một lớp được đặt vào gói khi nó được biên
dịch.
Để đặt một lớp vào trong một gói thì cần
đặt lệnh sau ở đầu file chứa lớp.
package tengoi;
Ví dụ:
package vn.edu.hau1.mypackage;
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
4.8.3. Đặt các lớp vào trong các gói
Lưu ý:
Các lớp phải được khái báo là puplic để các
chương trình khác có thể dùng được. Nếu
muốn chứa nhiều lớp trong một gói thì phải
để mỗi lớp trên một file riêng vì trên một file
chỉ được phép có một lớp public.
Các file class có thể nén thành một file, để sử
dụng các lớp trong file nén này thì trong
classpath phải chứa đường dẫn tới file nén.
17
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
Bài tập chương 4
4.8.4. Sử dụng các lớp từ các gói
Sử dụng trực tiếp tên lớp gắn với tên gói,
ví dụ như javax.swing.JOptionPane
Sử dụng lệnh import
Bài tập 1: Viết chương trình tính trung
bình và độ lệch chuẩn.
n
n
import một lớp xác định, ví dụ:
import javax.swing.JOptionPane
import dựa vào khai báo, ví dụ:
import javax.swing.*
Dấu * xác định import dựa vào khai báo lớp.
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
18
∑x
mean =
19
n
i
2
x
∑i−
i =1
n
(∑xi )2
deviation=
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
i=1
i=1
n
n −1
20
Bài tập chương 4
Bài tập 2: Viết chương trình tính tổng các
chữ số trong một số nguyên. Ví dụ: số
nguyên 234 có tổng các chữ số bằng 2 + 3
+ 4 = 9.
Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng
21
5.1. Khai báo và định nghĩa
biến mảng
Chương 5. Mảng
5.1. Khai báo và định nghĩa biến mảng
5.2. Copy mảng
5.3. Truyền mảng cho phương thức
5.4. Trả về mảng từ phương thức
5.5. Mảng nhiều chiều
Bài tập chương 5
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
5.1.1. Khai báo biến mảng
5.1.2. Tạo mảng (định nghĩa mảng)
5.1.3. Kích thước và giá trị mặc định của
mảng
5.1.4. Truy nhập phần tử mảng
1
5.1.1. Khai báo biến mảng
2
5.1.2. Tạo mảng (định nghĩa mảng)
Cú pháp khai báo biến mảng:
KieuDuLieu[ ] TenBienMang;
Khác với C++, việc khai báo biến mảng trong
Java không tạo ra mảng, tức là không cấp phát
vùng nhớ cho mảng, nó chỉ tạo ra một biến mà
sau này có thể dùng để tham chiếu tới mảng.
Biến mảng thực chất là biến tham chiếu. Về bản
chất biến tham chiếu giống như con trỏ.
Ví dụ: double[ ] a;
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
Sau khi khai báo biến mảng ta dùng toán
tử new để tạo ra mảng (giống cấp phát
mảng động trong C++) theo cú pháp sau:
TenBienMang = new KieuDuLieu[KichThuoc];
Ví dụ: a = new double[10];
Lệnh này tạo ra một mảng có KichThuoc
phần tử và gán tham chiếu tới
TenBienMang.
3
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
4
5.1.2. Tạo mảng (định nghĩa mảng)
Giống như C++, toán tử new dùng để cấp
phát bộ nhớ động => Mảng trong Java
luôn là mảng động.
Trong Java không có toán tử delete, việc
giải phóng các vùng nhớ không còn được
tham chiếu được thực hiện tự động bởi
JVM. Người lập trình không phải lo việc
giải phóng các vùng nhớ được cấp phát
động bởi toán tử new.
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
5.1.2. Tạo mảng (định nghĩa mảng)
Ta có thể gộp việc khai báo biến mảng,
tạo mảng và gán tham chiếu tới biến
mảng trong một lệnh:
KieuDuLieu[ ] TenBienMang = new KieuDuLieu[KichThuoc];
Ví dụ: double[ ] myList = new double[10];
5
5.1.2. Tạo mảng (định nghĩa mảng)
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
5.1.2. Tạo mảng (định nghĩa mảng)
Khác C++, biến mảng
không chứa mảng mà
chỉ chứa tham chiếu
tới mảng.
Một mảng cũng có thể được tạo bằng các
giá trị khởi tạo mà không cần đến toán tử
new.
6
double[] myList = new double[5];
reference
myList
KieuDL[ ] TenBienMang = {Hằng 1, Hằng 2,…, Hằng k};
Ví dụ: double[ ] myList = {12,20,100,89};
=> Tạo ra một mảng có 4 phần tử với giá
trị ban đầu là 12, 20, 100 và 89.
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
7
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
8
5.1.3. Kích thước và giá trị
mặc định của mảng
5.1.4. Truy nhập phần tử mảng
Vì mảng trong Java là mảng động nên nó
có một biến cho biết kích thước của mảng:
TenBienMang.length
Ví dụ: myList.length cho biết kích thước của
mảng myList là 5
Khi mảng được tạo, nó được gán giá trị
ban đầu bằng 0 đối với mảng số, bằng
‘\u0000’ đối mảng char và bằng false đối
với mảng boolean.
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
9
5.2. Copy mảng
Sau khi tạo mảng và gán tham chiếu cho
biến mảng ta có thể truy nhập trực tiếp
các phần tử của mảng thông qua tên biến
mảng và chỉ số truy nhập đặt trong ngoặc
vuông (giống như C++).
Chỉ số của phần tử mảng có giá trị từ 0
đến KichThuoc - 1
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
10
5.2. Copy mảng
Ta có thể gán hai biến mảng cùng kiểu
cho nhau, tuy nhiên khi gán hai biến mảng
chỉ có giá trị tham chiếu được gán còn nội
dung mảng không được gán. Do đó, sau
lệnh gán, cả hai biến mảng cùng tham
chiếu tới một mảng.
Để copy mảng có 2 cách sau:
Cách dùng phương thức arraycopy:
System.arraycopy(sourceArray,src_pos,targetArray,tar_pos,length);
Trong đó, src_pos và tar_pos là vị trí bắt
đầu copy trong mảng nguồn và đích,
length là số phần tử cần copy.
Sử dụng lệnh lặp copy từng phần tử
Sử dụng phương thức arraycopy của lớp
System
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
11
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
12
5.3. Truyền mảng cho phương thức
5.3. Truyền mảng cho phương thức
Giống truyền mảng cho hàm trong C++.
Định nghĩa phương thức để truyền đối số
là mảng:
Truyền mảng cho phương thức:
TenPThuc(TenBienMang);
Để truyền mảng cho phương thức ta chỉ dùng
tên biến mảng. Ví dụ: Average(a);
Truyền mảng cho phương thức thực chất là
truyền tham chiếu cho phương thức => Phương
thức có thể thay đổi được mảng.
KieuTraVe TenPThuc(KieuDL[ ] TenThamSo)
{ //Than phuong thuc }
Ví dụ:
float Average(int[] m)
{ }
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
13
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
5.4. Trả về mảng từ phương thức
5.5. Mảng nhiều chiều
Phương thức trả về mảng thực chất là trả
về tham chiếu tới mảng.
Muốn phương thức trả về mảng ta định
nghĩa phương thức như sau:
Khai báo biến mảng nhiều chiều:
Kieu[ ][ ] TenBienMang;
Trong đó mỗi cặp ngoặc vuông xác định
một chiều, số cặp [ ] chính là số chiều.
Ví dụ: Khai báo biến mảng hai chiều a có
kiểu int như sau: int[ ][ ] a;
KieuTraVe[ ] TenPThuc(DS Cac tham so)
{
}
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
15
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
14
16
5.5. Mảng nhiều chiều
5.5. Mảng nhiều chiều
Tạo mảng nhiều chiều
TenBienMang = new Kieu[KT1][KT2]…
Trong đó KT1, KT2 là kích thước chiều 1,
chiều 2,…
Ví dụ: a = new int[3][4];
//Tạo ra mảng hai chiều có 3 hàng 4 cột
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
Truy nhập phần tử mảng nhiều chiều:
TenBienMang[cs1][cs2]…
Trong đó cs1, cs2,… là chỉ số chiều 1,
chiều 2,…
Ví dụ: a[2][3] => truy nhập phần tử hàng 2,
cột 3 của mảng hai chiều a.
17
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
18
5.5. Mảng nhiều chiều
Bài tập chương 5
Mảng nhiều chiều là mảng của các mảng
Kích thước mảng nhiều chiều:
Bài tập 1: Viết chương trình nhập vào một
dãy có n số. Tính trung bình của dãy số,
đưa trung bình và các số lớn hơn trung
bình ra màn hình.
Bài tập 2: Viết chương trình tạo ra 100 số
nguyên ngẫu nhiên nằm giữa 0 và 9. Đếm
số lần xuất hiện của từng số.
Kích thước mảng nhiều chiều x được xác
định thông qua x.length
Mỗi phần tử của mảng x lại là một mảng nên
có thể xác định kích thước thông qua
x[0].length, x[1].length,…
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
19
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
20
Bài tập chương 5
Bài tập 3: Viết chương trình nhập vào một
dãy gồm n số nguyên, lưu dãy số này
trong một mảng, truyền mảng cho một
phương thức, phương thức trả về một
mảng chứa các số theo thứ tự ngược với
dãy số ban đầu.
Bài tập 4: Viết phương thức tính tổng các
số của một ma trận.
Bài tập 5: Viết phương thức cộng hai ma
trận. Phương thức trả về ma trận tổng.
Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng
21
[...]... cả các lệnh điều khiển chương trình của Java đều giống C++ Lệnh break và continue cũng giống trong C++, tuy nhiên trong Java có mở rộng: Bài giảng LT JAVA - Phần 1,Chương 3 GV Ngô Công Thắng Bài giảng LT JAVA - Phần 1,Chương 3 GV Ngô Công Thắng 1 Chương 3 Các lệnh điều khiển chương trình 2 Chương 3 Các lệnh điều khiển chương trình Ví dụ về lệnh break có nhãn Bài giảng LT JAVA - Phần 1,Chương 3 GV Ngô... lệnh lặp Ví dụ về lệnh continue có nhãn 3 Bài giảng LT JAVA - Phần 1,Chương 3 GV Ngô Công Thắng 4 Chương 3 Các lệnh điều khiển chương trình Chương 3 Các lệnh điều khiển chương trình Bài tập 1: Viết chương trình nhập vào 3 số, sắp xếp 3 số này theo chiều tăng dần Bài tập 2: Viết chương trình nhập vào tháng và năm dương lịch Cho biết tháng trong năm đó có bao nhiêu ngày Bài tập 3: Viết chương trình tính... chương trình tìm ước số chung lớn nhất của hai số nguyên dương a, b Bài tập 5: Viết chương trình tìm số nguyên lớn nhất n sao cho n3 < 12000 π 1 1 1 1 = 1 − + − + L + (−1) n 2n + 1 3 5 7 4 Bài giảng LT JAVA - Phần 1,Chương 3 GV Ngô Công Thắng 5 Bài giảng LT JAVA - Phần 1,Chương 3 GV Ngô Công Thắng 6 4.1 Giới thiệu về phương thức Chương 4 Phương thức (Method) Tất cả các chương trình con trong Java đều... cho số nguyên, có độ rộng 10 Bài giảng LT JAVA - Phần 1,Chương 2 GV Ngô Công Thắng 21 V.3 Ví dụ Viết chương trình tính diện tích và chu vi hình chữ nhật biết hai cạnh a, b Bài giảng LT JAVA - Phần 1,Chương 2 GV Ngô Công Thắng 23 Bài giảng LT JAVA - Phần 1,Chương 2 GV Ngô Công Thắng 22 Chương 3 Các lệnh điều khiển chương trình Chương 3 Các lệnh điều khiển chương trình I Lệnh lựa chọn I.1 Lệnh if I.2 Lệnh... LT JAVA - Phần 1,Chương 5 GV Ngô Công Thắng 4 5.1.2 Tạo mảng (định nghĩa mảng) Giống như C++, toán tử new dùng để cấp phát bộ nhớ động => Mảng trong Java luôn là mảng động Trong Java không có toán tử delete, việc giải phóng các vùng nhớ không còn được tham chiếu được thực hiện tự động bởi JVM Người lập trình không phải lo việc giải phóng các vùng nhớ được cấp phát động bởi toán tử new Bài giảng LT JAVA. .. ] TenThamSo) { //Than phuong thuc } Ví dụ: float Average(int[] m) { } Bài giảng LT JAVA - Phần 1,Chương 5 GV Ngô Công Thắng 13 Bài giảng LT JAVA - Phần 1,Chương 5 GV Ngô Công Thắng 5.4 Trả về mảng từ phương thức 5.5 Mảng nhiều chiều Phương thức trả về mảng thực chất là trả về tham chiếu tới mảng Muốn phương thức trả về mảng ta định nghĩa phương thức như sau: Khai báo biến mảng nhiều chiều: Kieu[ ][... file nén 17 Bài giảng LT JAVA - Phần 1,Chương 4 GV Ngô Công Thắng Bài tập chương 4 4.8.4 Sử dụng các lớp từ các gói Sử dụng trực tiếp tên lớp gắn với tên gói, ví dụ như javax.swing.JOptionPane Sử dụng lệnh import Bài tập 1: Viết chương trình tính trung bình và độ lệch chuẩn n n import một lớp xác định, ví dụ: import javax.swing.JOptionPane import dựa vào khai báo, ví dụ: import javax.swing.* Dấu * xác... TenBienMang; Khác với C++, việc khai báo biến mảng trong Java không tạo ra mảng, tức là không cấp phát vùng nhớ cho mảng, nó chỉ tạo ra một biến mà sau này có thể dùng để tham chiếu tới mảng Biến mảng thực chất là biến tham chiếu Về bản chất biến tham chiếu giống như con trỏ Ví dụ: double[ ] a; Bài giảng LT JAVA - Phần 1,Chương 5 GV Ngô Công Thắng Bài giảng LT JAVA - Phần 1,Chương 5 GV Ngô Công Thắng Sau khi... vn.edu.hau1.TenGoi Theo quy ước đặt tên gói dùng chữ thường Bài giảng LT JAVA - Phần 1,Chương 4 GV Ngô Công Thắng Bài giảng LT JAVA - Phần 1,Chương 4 GV Ngô Công Thắng Java yêu cầu cấu trúc thư mục chứa gói phải tương ứng với tên gói Ví dụ: với tên gói là vn.edu.hau1.mypackage thì phải tạo cấu trúc thư mục là \vn\edu\hau1\mypackage Để Java tìm được nơi đặt cây thư mục gói thì biến môi trường classpath phải... trường classpath phải xác định thư mục chứa cậy thư mục gói Ví dụ: nếu cây thư mục gói đặt trong thư mục c:\javapro thì classpath = ;c:\javapro Dấu xác định thư mục hiện tại luôn ở trong classpath 15 Bài giảng LT JAVA - Phần 1,Chương 4 GV Ngô Công Thắng 16 4.8.3 Đặt các lớp vào trong các gói Mỗi lớp Java đều thuộc một gói nào đó Một lớp được đặt vào gói khi nó được biên dịch Để đặt một lớp vào trong một