You are on page 1of 48

Chương 1

Ngôn ngữ lập trình Java

1
Nội dung chính

• Giới thiệu về NNLT Java


• Bảng chữ cái và định danh
• Kiểu dữ liệu nguyên thủy
• Chương trình Java
• Biên dịch và thực hiện chương trình
• Tham số từ đối dòng lệnh
• Cấu trúc điều khiển
• Mảng
2
1. Giới thiệu

• Vài nét về lịch sử:


• Cuối 1990, James Gosling (Cty Sun
Microsystem) xây dựng và đặt tên Oak.
• Sau đó Oak đổi tên Java.
• Năm 1993 hỗ trợ Web/Internet.
• Năm 1995 Sun Microsystem công bố chính
thức Java.
3
1. Giới thiệu (tiếp)

• Đặc trưng của NNLT Java:


“Java là ngôn ngữ đơn giản, hướng đối tượng,
phân tán, thông dịch lẫn biên dịch, mạnh mẽ,
bảo mật, cấu trúc độc lập, khả chuyển, hiệu quả
cao và linh động” (Sun Microsystem)

4
1. Giới thiệu (tiếp)

• Đơn giản:
• Xây dựng từ C và C++, bỏ đi những phức tạp của
C.
• Bộ biên dịch có kích thước nhỏ (bản 1.4 chỉ
6MB).
• Hướng đối tượng:
• Chương trình Java viết hoàn toàn HĐT.
• Mọi khai báo đều trong một lớp.
5
1. Giới thiệu (tiếp)
• Phân tán (distributed):
• Hỗ trợ các ứng dụng phân tán qua lập trình
mạng.
• Một chương trình Java có thể kết hợp từ nhiều
chương trình khác nhau trên Internet.
• Thông dịch (Interpreter) và biên dịch (compiler):
• Một chương trình Java được biên dịch (sang
mã bytecode) sau đó thông dịch để thực thi.
6
1. Giới thiệu (tiếp)

• Mạnh mẽ (robust):
• Java có hệ thống thư viện lớn.
• Ràng buộc người lập trình chặt chẽ.
• Bảo mật (security):
• Các bước kiểm tra trước khi thực hiện chương
trình rất chặt chẽ.
• Java không dùng biến con trỏ nên không truy xuất
trực tiếp bộ nhớ.
7
1. Giới thiệu (tiếp)

• Kiến trúc trung tính (Neutral architecture):


• Chương trình java được dịch sang bytecode có
thể thực hiện trên mọi hệ thống máy tính khác
nhau: Macintosh, Intel, Sun, Alpha,... và trên
nhiều hệ điều hành khác nhau: Windows,
Unix, Sun Solaris, Macintosh,…
• Chương trình thông dịch trên mỗi hệ thống tạo
thành máy ảo java (JVM).
8
1. Giới thiệu (tiếp)

• Khả chuyển:
• Khẩu hiệu của Java “Write Once, Run Anywhere”
nhờ máy ảo Java tương thích môi trường.

9
1. Giới thiệu (tiếp)
• Hiệu quả cao (High-performance):
• Tính hiệu quả chung so với C và C++.
• Tốc độ chương trình Java chậm.
• Đa tuyến (Multi-Thread):
• Cho phép lập trình tạo ra nhiều tiến trình đồng
thời.
• Linh động (flexible):
• Trong khi chạy có thể tự liên kết với các lớp mới
ở máy chủ ở xa trên Internet. 10
1. Giới thiệu (tiếp)
• Bộ công cụ JDK (Java Development Kit)
• Bộ công cụ phát triển trên môi trường Java bao
gồm:
• Chương trình dịch: javac.exe
• Trình thông dịch: java.exe
• Tạo tài liệu: javadoc.exe
• Thực thi applet: appletviewer.exe
• Các thư viện
•…
11
1. Giới thiệu (tiếp)
• Các ứng dụng Java:
• Ứng dụng Console: thực hiện từ DOS.
• Ứng dụng desktop giao diện đồ họa.
• Java Applet.
• Lập trình mạng.
• Lập trình ứng dụng Web: servlet, jsp.
• Lập trình CSDL: JDBC.
• JavaBean.
• Lập trình phân tán.
• Lập trình mobile.
12
Cơ bản về Ngôn ngữ lập trình Java

13
2. Bảng chữ cái và định danh
• Bảng chữ cái:
• Các chữ cái: A, B, .., Z, a, …, z.
• Các chữ số: 0, 1, …, 9.
• Các ký tự khác: +, -, …
• Định danh (Identifier):
• Bắt đầu bằng chữ cái hoặc _ hoặc $
• Có thể dùng chữ cái, chữ số, dấu _ trong định
danh.
• Phân biệt chữ hoa và chữ thường 14
3. Các kiểu dữ liệu nguyên thủy {1}
• Số nguyên:
Kiểu Kích thước Phạm vi
byte 1 byte -128->127
short 2 bytes -32768->32767
int 4 bytes -2 147 483 648 ->…
long 8 bytes -9,223,372,036,854,775,808
• Các phép toán: +, -, *, /, %, ++, --

15
3. Các kiểu dữ liệu nguyên thủy
• Ký tự:
• char
• 2bytes (dùng bảng mã unicode)
• Hằng ký tự: đặt giữa ‘’
• Các ký tự đặc biệt:
• \b xóa lùi
• \t tab
• \n xuống dòng
• \” “
• \’ ‘
• \\ \
• \uxxxx ký tự unicode
16
3. Các kiểu dữ liệu …(tiếp)

• Logic:
• boolean
• Giá trị: true, false.
• Các phép toán:
• !, &&, ||

17
3. Các kiểu dữ liệu … (tiếp)
• Số thực:
Kiểu Kích thước Phạm vi
float 4 bytes 1.40129846432481707e-45
3.40282346638528860e+38
double 8 bytes 4.94065645841246544e-324
1.79769313486231570e+308
• Các phép toán: +,-,*,/,%,++,--
• Các hằng: NaN (không phải số), Infinity (vô cùng).

18
3. Các kiểu dữ liệu … (tiếp)
• Khai báo biến:
• Kiểu dữ liệu <ds biến>;
• Ví dụ: int x, y;
• Phép gán:
• biến = <biểu thức>;
• Kết quả phép gán trả về giá trị biểu thức.
• Được phép gán: a = b = c;
• Các phép gán mở rộng: +=, -=, *=, /=, %=
19
3. Các kiểu dữ liệu …(tiếp)
• Chuyển đổi kiểu dữ liệu:
• Hằng xác định kiểu dữ liệu:
• 1.2 double
• 1.2f float
• 123l long
• Chuyển đổi kiểu tự động:
• byte->short->int->long->float->double.
• Ép kiểu: (kiểu)<biểu thức>
• Ví dụ: int x = (int) 123.45; //x=123
20
Thứ tự ưu tiên các phép toán
• [] ,., (params), expr++, expr—
• ++expr, –expr, +expr, –expr !
• */%
• +-
• <, >, <=, >=
• ==, !=
• &&
• ||
• ?:
• =, +=, -=, *=, /=, %=

21
4. Chương trình Java
• Chú thích:
• Trên 1 dòng: //Chú thích
• Nhiều dòng:
/*
Các dòng chú thích
*/
• Lệnh đơn: kết thúc bằng ;
• Khối lệnh: { }
22
4. Chương trình Java (tiếp)
• Cấu trúc 1 chương trình Java đơn giản:
import <gói thư viện>;
class <TênLớp>
{
public static void main(String args[])
{
Các lệnh
}
}
• Các lệnh trong hàm main sẽ được thực hiện khi thực thi
chương trình. 23
4. Chương trình Java (tiếp)

• Ví dụ: chương trình in lên màn hình dòng chữ “Chao


Java”.
class Chao{
public static void main(String args[])
{
System.out.println("Chao Java.");
}
}
24
4. Chương trình Java (tiếp)

• Lưu chương trình: Chao.java (trùng tên lớp).


• Biên dịch chương trình từ DOS:
• javac Chao.java  Chao.class
• Thông dịch:
• Java Chao

25
Biên dịch và thông dịch chương
trình Java

26
4. Chương trình Java (tiếp)

• Tham số từ dòng lệnh:


• Khi thực hiện chương trình từ dòng lệnh có thể
truyền tham số vào chương trình.
• Các tham số được đưa vào mảng các xâu của hàm
main(String args[]).
• Truyền tham số từ dòng lệnh:
• Java <TênLớp> <ds đối số>
• Ví dụ: chương trình in lên màn hình dòng “Chao
<Tên>” với <Tên> đưa vào từ tham số.
27
Chương trình Chao2.java

class Chao2
{
public static void main(String args[])
{
System.out.print("Chao " + args[0]);
}
}
28
Thực hiện chương trình

29
5. Cấu trúc điều khiển

• Rẽ nhánh:
if (<điều kiện>)
<Công việc 1>;
[else
<Công việc 2>;]
• Nếu <điều kiện> đúng thì thực hiện <Công việc
1>, ngược lại thực hiện <Công việc 2> (nếu có).

30
5. Cấu trúc điều khiển (tiếp)
• Lựa chọn:
switch (<biểu thức>)
{
case gt1: CV1;
case gt2: CV2;

case gtn: CVn;
default: CVn+1;
}
• Nếu giá trị <biểu thức> trùng với giá trị (gt) nào thì thực
hiện các công việc (CV) từ đó đến hết khối.
• Để dừng khi thực hiện 1 CV thì dùng lệnh break;
31
Ví dụ
• Chương trình đọc số từ 0..9 thành chữ. Số đưa vào từ dòng lệnh.
class DocSo{
public static void main(String args[]){
byte so = Byte.parseByte(args[0]);
switch (so)
{
case 0: System.out.println(“Khong”);break;

case 9: System.out.println(“Chin”);break
}
}
}

32
5. Cấu trúc điều khiển (tiếp)
• Lặp for:
for (<lệnh 1>;<điều kiện>;<lệnh 2>)
<Công việc lặp>;
• Thực hiện <lệnh 1>
• Nếu <điều kiện> đúng thì thực hiện <Công việc
lặp>
• Thực hiện <lệnh 2>
• Quay lại kiểm tra <điều kiện>
• Lặp đến khi <điều kiện> sai.
33
Ví dụ
• Chương trình tính tổng các số đưa vào từ tham số.
class TinhTong{
public static void main(String args[]){
int tong=0,i;
for(int i=0; i<args.length; i++)
tong+=Integer.parseInt(args[i]);
System.out.println(“Tong = ”+tong);
}
}
Thực hiện: java TinhTong 1 3 4 5 2
34
5. Cấu trúc điều khiển (tiếp)
• Lặp while:
while(<điều kiện>)
<Công việc lặp>;
• Thực hiện <Công việc lặp> khi <điều kiện>
còn đúng.
• do .. while:
do{
<Công việc lặp>;
} while (<điều kiện>);
35
5. Cấu trúc điều khiển (tiếp)

• Lệnh break:
• Ra khỏi 1 cấu trúc chuyển đến lệnh ngay sau
cấu trúc đó.
• Lệnh continue:
• Quay lại đầu vòng lặp.

36
6. Mảng

• Khai báo biến mảng:


• KiểuDữLiệu tênBiếnMảng[];
• KiểuDữLiệu[] tênBiếnMảng;
• Ví dụ: int m[];
• Hoặc int[] m;
• Cấp phát ô nhớ cho mảng:
• tênBiếnMảng = new KiểuDữLiệu[sốPT];
• Ví dụ: m = new int[10];
37
6. Mảng (tiếp)
• Khai báo và khởi tạo:
• KiểuDữLiệu tênBiếnMảng[]={ds các gt};
• Ví dụ: int m[]={1,2,3,4};
• Thao tác với biến mảng:
• Thao tác từng phần tử: tênBiếnMảng[i]
• Chỉ số bắt đầu từ 0.
• Ví dụ: m[0]=1; m[1]=10;…
• Số phần tử của mảng: m.length
38
Ví dụ:
• Sinh ngẫu nhiên mảng số nguyên. Sắp xếp, in lên
màn hình.
class SapXep{
public static void main(String args[])
{
int a[] = new int[100],i,j;
for(i=0;i<100;i++)
a[i]=(int)(Math.random()*100);
39
Ví dụ
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(a[i]>a[j])
{
int tg=a[i]; a[i]=a[j]; a[j]=tg;
}
System.out.println("Mang ngau nhien:");
for(i=0;i<100;i++)
System.out.print(a[i]+ " ");
}
}

40
6. Mảng (tiếp)

• Mảng 2 chiều:
• Là mảng của mảng 1 chiều.
• Khai báo:
• Kiểu biến[][];
• Cấp phát ô nhớ: biến=new kiểu[m][n];
• Khởi tạo: int m[][]={{1,2,3},{4,5,6}};
• Thao tác: biến[i][j]
41
Ví dụ

• Chương trình sinh ngẫu nhiên mảng 2 chiều.


Tính tổng các số ở dòng lẻ trong mảng.

42
43
7. Nhập dữ liệu từ bàn phím
import java.io.*;
class Input
{
public static int inputInt()
{ String str=null;
DataInputStream stream = new
DataInputStream(System.in);
try{str = stream.readLine();
} catch(IOException e){}
return Integer.valueOf(str).intValue();
}

44
Nhập số thực

public static float inputFloat()


{
String str=null;
DataInputStream stream = new
DataInputStream(System.in);
try{str = stream.readLine();
} catch(IOException e){}
return Float.valueOf(str).floatValue();
}
45
Nhập ký tự
public static float inputChar()
{
String str=null;
DataInputStream stream = new
DataInputStream(System.in);
try{
str = stream.readLine();
} catch(IOException e){}
return str.charAt(0);
}
46
Ví dụ
• Nhập độ dài bán kính hình tròn, tính chu vi và diện tích.
class HinhTron{
public static void main(String args[])
{ int r; double dt, cv;
System.out.print(“Nhap ban kinh ”);
r = Input.inputInt();
dt = r * r * Math.PI;
cv = 2*r* Math.PI;
System.out.println(“Dien tich: ”+dt+“chu vi:”+cv);
}
}

47
Bài thực hành số 1

1. Chương trình tính n! với n là tham số đưa vào


từ dòng lệnh.(check)
2. Chương trình sinh mảng ngẫu nhiên các số
nguyên. Liệt kê các số nguyên tố có trong
mảng.(check)
3. Chương trình sinh mảng ngẫu nhiên các số
nguyên. Liệt kê các số Fibonaci có trong mảng.

48

You might also like