1.1 TỔNG QUAN VỀ JAVA
1.1.1 Giới thiệu Java
a. Lịch sử phát triển Java
- Sun Microsystems, 1990, James Gosling -> dự án Green, phát triển phần mềm trong các thiết bị điện tử dân dụng
- Gosling tạo ngôn ngữ Oak, giống C++, bỏ qua các tính năng:
+ truy cập trực tiếp tài nguyên hệ thống, các phép toán con trỏ
+ được thiết lập với mục đích tạo tính tương thích cao, có thể thay đổi kiểu phần cứng mà không phải viết lại phần mềm
- Oak : ngôn ngữ thích hợp cho Internet. 1994, trình duyệt HotJava
- 1995, Oak đổi tên thành Java và nhanh chóng phát triển
- 1996, nhiều nhà sản xuất phần mềm cũng như phần cứng đứng đầu thế giới đã mua bản quyền công nghệ Java từ Sun
b. Các đặc trưng của Java
- Đơn giản (Simple): loại bỏ thao tác con trỏ, chồng toán tử, lệnh “goto”, file header (.h), cấu trúc struct và union
- Hướng đối tượng (Object Oriented)
- Độc lập phần cứng và hệ điều hành (Portable)
- Mạnh (Robust): yêu cầu chặt chẽ kiểu dữ liệu, bỏ phép toán con trỏ, kiểm tra tất cả các truy nhập đến mảng, chuỗi, kiểm tra chuyển đổi kiểu dữ liệu, cấp phát, giải phóng bộ nhớ thực hiện tự động nhờ bộ thu gom rác, cơ chế bẫy lỗi đơn giản hóa việc xử lý lỗi
- Bảo mật (Secure): cung cấp một môi trường quản lý thực thi chương trình. Dữ liệu và các phương thức được đóng gói bên trong lớp. Không cho phép truy xuất bộ nhớ trực tiếp. Không cho truy xuất thông tin bên ngoài kích thước của mảng. Cung cấp kỹ thuật dọn rác trong bộ nhớ. Trình biên dịch, thông dịch kiểm soát để đảm bảo mã là an toàn. Kiểm soát việc nạp các lớp vào bộ nhớ để giám sát việc vi phạm giới hạn truy xuất trước khi nạp vào hệ thống
- Đa luồng (Multithreaded)
- Động (Dynamic): được thiết kế để thích hợp với môi trường mở, cho phép khả năng liên kết động mã
Biên dịch Thông dịch (Máy ảo Java)
Tập tin .java --------->Tập tin .class -----> chạyCT
javac.exe (Mã byte code) java.exe
1.1.3 Soạn thảo và thực hiện ứng dụng Java đơn giản
Ví dụ: class Hello {
public static void main(String args[]) {
System.out.print("Hello, ");
System.out.println("welcome to Java");
}
}
- Soạn thảo chương trình bởi WordPad…, lưu với tên trùng với tên lớp chứa phương thức main(), phần mở rộng .java
- Chỉ đường dẫn đến các chương trình tiện ích của java:
+ Tại DOS, gõ lệnh: path C:\jbuilder9\jdk1.4\bin
+ Hoặc tại Windows, bấm phải Mouse trên My Computer, chọn Properties, Advanced, Environment Variables, chọn biến hệ thống System Variables là Path, nút Edit, gõ tiếp vào Variable Value: ;C:\jbuilder9\jdk1.4\bin
- Biên dịch tập tin .java thành ngôn ngữ máy ảo Java (ByteCode) lưu trong tập tin lớp .class. Chuyển đến thư mục chứa tập tin .java, gõ lệnh:
javac Tậptin.java
-Trình thông dịch Java chuyển đổi từng ByteCode trong tập tin .class thành ngôn ngữ máy
java Tênlớp
Ví dụ: Thực hiện ứng dụng Hello.java chứa trong thư mục C:\myjava
C:
CD \myjava
C:\myjava>javac hello.java
C:\myjava>java Hello
- Tạo dự án lưu vào thư mục D:\vdjava\hello: File/ New Project: Name (tên dự án .jpx): Hello
Directory (tên thư mục lưu dự án)
Output path (thư mục lưu các tập tin class biên dịch từ tập tin .java)
Working directory (thư mục lưu toàn bộ ứng dụng) thiết lập sẵn, chọn nút Finish
- Tạo lớp: File/ New Class
Package: để trống
Class name (tên lớp): Hello
Base class (tên lớp kế thừa): java.lang.Object
- Chạy chương trình:Kích phải trên tên lớp, chọn Run using defaults
1.2 LẬP TRÌNH CƠ BẢN VỚI JAVA
1.2.1 Các thành phần cơ bản của ngôn ngữ Java
a. Bộ ký tự dùng trong Java (Character Set)
Ngôn ngữ Java sử dụng bộ ký tự chuẩn quốc tế Unicode
b. Từ khoá (Keyword)
định nghĩa trước, có ý nghĩa xác định, phải dùng đúng cú pháp, đều viết bằng chữ thường, không dùng vào việc khác hay đặt tên mới trùng từ khoá, gồm:
- Từ khoá khai báo: public, private, static, abstract, extends, const, import, package, class, interface, implement, new…
- Từ khoá điều khiển: switch, case, break, if, return, for, while, continue, try, catch, throws…
- Từ khoá toán tử: instanceof…
- Từ khoá kiểu dữ liệu: boolean, char, short, long, double, int, byte, float, null, void…
- Dãy ký tự chỉ tên gói, giao diện, lớp, biến, phương thức, hằng, phân biệt hoa, thường, bắt đầu bằng ký tự hoặc dấu $ _... nhưng không bắt đầu bằng một số, không có dấu cách, tránh một số ký hiệu như % @ *… dùng với ý nghĩa riêng.
- Khi đặt tên nên theo quy tắc đặt tên của Java cho dễ nhớ như sau:
Tên gói: viết chữ thường: java.util, java.io
Tên hằng: viết chữ hoa: BLUE, PI, E
Tên lớp, giao diện: bắt đầu bằng chữ hoa và viết hoa đầu từ: Scanner, BufferedReader
Tên biến, phương thức: bắt đầu bằng chữ thường, các chữ đầu từ viết hoa: hoTen, out
d. Lời chú thích
- Chú thích nhiều dòng: /* … */
- Đặt dấu // và ghi lời chú thích sau đó trên cùng một dòng.
- Tạo chú thích trong tập tin tài liệu .html: tổng kết, giới thiệu các thành phần trong chương trình:
Ví dụ: /* * Chú thích này có ý nghĩa cho tiện ích javadoc, sẽ là một phần
của tài liệu được tự động phát sinh bởi tiện ích javadoc */
javadoc vidu.java 'enter'
1.2.2 Kiểu dữ liệu, biến, hằng
a. Kiểu dữ liệu (Data Type)
- Kiểu dữ liệu là tập hợp các giá trị mà một biến thuộc kiểu đó có thể nhận được. Mỗi biến phải khai báo thuộc một kiểu dữ liệu.
- Các kiểu dữ liệu trong ngôn ngữ Java chia làm 2 loại :
+ Kiểu dữ liệu cơ bản, hay sơ cấp (Primitive Data Type)
+ Kiểu dữ liệu tham chiếu, hay dẫn xuất (Reference Data Type): kiểu lớp (class), kiểu mảng (array)
b. Biến (Variable)
Định nghĩa biến thuộc kiểu dữ liệu cơ bản: Type VarName;
hay có thể khởi tạo giá trị đầu cho biến: Type VarName = Value;
Ví dụ: String s = “Hello”;
int x = 5, y = 7;
int i, s = 0;
c. Hằng (Constant)
Hằng là một vùng nhớ để lưu trữ dữ liệu hay địa chỉ dữ liệu không thay đổi giá trị trong chương trình.
final Type ConstName = Value;
Ví dụ: final int max = 10;
Hằng nguyên: 25
Hằng thực: 2.5, 4.5E-2
Hằng ký tự: ‘a’
Hằng chuỗi: “Hello”
- Các ký tự đặc biệt được thêm dấu \ gọi là ký tự thoát (Escape Character) phía trước
\n Ký tự xuống dòng
\t Ký tự canh cột (Tab)
\b Ký tự xoá trái (Backspace)
\r Ký tự về đầu dòng (Carriage Return)
\f Ký tự qua trang (Formfeed)
\\ Ký tự xổ trái (Backslash)
\’ Ký tự nháy đơn (Single Quote)
\’’ Ký tự nháy kép (Double Quote)
\ddd Ký tự ứng với mã ASCII dạng bát phân ddd
\udddd Ký tự ứng với mã Unicode dddd
1.2.3 Biểu thức và phép toán
-Các toán tử số học (Arithmetic Operator)
- toán hạng có kiểu số, trả về kết quả kiểu số
+, -, *, /, %
- Các toán tử tăng, giảm (Increment, Decrement Operator)
- các biến kiểu số nguyên và kiểu ký tự
op ++/-- hay ++/-- op : tăng/giảm biến số nguyên một đơn vị, hay cho ký tự Unicode kế tiếp/ kế trước
- Toán tử tăng, giảm đặt trước hay sau biến diễn đạt ý nghĩa khác nhau
Ví dụ 1: int x = 4, y; y = x++; y = ++x; x++;
System.out.println(++x);
Ví dụ 2: char c = ‘a’; c++;
- Toán tử quan hệ hay so sánh (Comparison Operator)
- kết quả có kiểu logic
==, !=, >, <, <=, >=
Ví dụ : 155 > 2.5 ‘B’ < ‘A’
- Toán tử logic (Boolean Operator)
- toán hạng kiểu logic, kết quả kiểu logic
&&, &: và, ||, |: hoặc, !: phủ định, ^: hoặc loại trừ
- Phép &, && cho kết quả true khi 2 toán hạng có giá trị true
- Phép |, || cho kết quả false khi 2 toán hạng có giá trị false
- Phép ^ cho kết quả là true khi 2 toán hạng khác giá trị nhau
- Phép ! cho kết quả là true nếu op có trị false, và ngược lại
Ví dụ 1: 100 > 55 && ‘B’ < ‘A’
Diem >= 5 && Diem < 7
C == ‘Y’ || C == ‘y’
Ví dụ 2: x > 3 && x < ++y
Phép && chỉ cần một toán hạng bên trái trả về false, lập tức kết quả phép toán trả về false, Java không tính đến toán hạng bên phải
- Toán tử gán (Assignment Operator)
gán giá trị của một biểu thức cho một biến
Biến = Biểu _Thức;
Ví dụ : x = 10;
Có thể dùng toán tử gán nhiều lần liên tiếp trong câu lệnh.
Ví dụ: x = y = z = 0;//Cả ba biến x, y, z đều được gán giá trị 0
char c = ‘a’;
c = (char) (c+4);//c+4 là mã unicode của ký tự ‘e’, cho kết quả là ‘e’
nToán tử rút gọn (Shorthand Assignment Operator) như sau :
+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, >>>=
Ví dụ : int a = 2;
a + = 4; //Tương đương với a = a + 4;
- Phép toán điều kiện ?:
op1 ? op2 : op3
- nếu toán hạng logic op1 có trị true, trả về giá trị op2, ngược lại trả về op3
- Phép nối chuỗi: +
- Ghép nối các chuỗi, nếu có toán hạng nào không phải chuỗi, Java tự động chuyển sang chuỗi
Ví dụ 1: int x, a = 2, b = 5;
x = a>b ? a : b;
System.out.println(a>b ? ”So a lon hon” : ”So b lon hon”);
Ví dụ 2: “Họ và tên của học viên " + soTT + " là : "+ hoTen
" 2 + 2 = "+ (2 + 2)
c. Độ ưu tiên các phép toán
- Thực hiện theo thứ tự từ trên xuống, cùng hàng sẽ có cùng độ ưu tiên
- Quy định thứ tự thực hiện phép toán bằng ( )
( ), [], .
++, --, +op, -op, !, ~ Phải sang trái
new, (type) op Phải sang trái
*, /, %
+, -
<<, >>, >>>
<, >, <=, >=, instanceof
==, !=
&
^
|
&&
||
? : Phải sang trái
=, +=, -=, *=, /=, %=, ^=, &=, |=, <<=, >>=, >>>= Phải sang trái
Ví dụ: s += a += b += c;
1.2.4 Lệnh (Statement)
Lệnh có thể là lệnh đơn, khối lệnh hay cấu trúc điều khiển
a. Lệnh đơn
Lệnh đơn là thành phần cơ bản nhất trong chương trình Java, diễn đạt một thao tác riêng lẻ phải làm, được kết thúc bằng dấu chấm phẩy
Lệnh đơn có thể là:
lời gọi phương thức: System.out.println(“Đây là một hằng chuỗi”);
phép gán: x=10;
phép tăng, giảm giá trị biến: x++;
các lệnh định nghĩa, khai báo: int i;
b. Khối lệnh
Nhiều câu lệnh đơn có thể nhóm lại thành một câu lệnh phức hợp gọi là khối lệnh. Khối lệnh được mở đầu bằng dấu { và kết thúc bằng dấu }, có thể đặt trong một khối lệnh khác
c. Cấu trúc rẽ nhánh
Cấu trúc if
if là câu lệnh lựa chọn cho phép chương trình rẻ nhánh thực hiện lệnh theo hai hướng khác nhau căn cứ trên giá trị true, false của biểu thức điều kiện kiểu logic
Cú pháp:
Dạng 1: if (Boolean-Expression)
Statement;
Dạng 2: if (Boolean-Expression)
Statement1;
else Statement2;
Boolean-Expression là biểu thức điều kiện có kiểu logic
Statement1, Statement2 có thể là lệnh đơn, khối lệnh, hay cấu trúc điều khiển
1.2.4 Cấu trúc điều khiển
-Cấu trúc switch… case
câu lệnh lựa chọn, rẻ nhánh thực hiện lệnh theo nhiều hướng khác nhau căn cứ trên giá trị của một biểu thức
Cú pháp: switch (Expression) {
case Expression1:
Statement1;
break; …
case Expressionn :
Statementn;
break;
default :
Statementn+1;
}
- Cấu trúc switch… case
Sơ đồ khối: Nếu không có break, hướng thực hiện là
- Cấu trúc switch… case
Ví dụ:
Nhập tháng, năm và in ra số ngày trong tháng, biết rằng tháng 1, 3, 5, 7, 8, 10, 12 : số ngày trong tháng là 31, tháng 4, 6, 9, 11 : số ngày trong tháng là 30, tháng 2 : năm nhuận : số ngày là 29, năm không nhuận : số ngày là 28. Năm nhuận là năm chia hết cho 400, hay năm chia hết cho 4 và không chia hết cho 100
1.2.4 Cấu trúc lặp
Cấu trúc for
Cú pháp:
for ( Initialization-Expressions; Boolean-Expression; Increment-Expressions )
Statement;
Statement: lệnh đơn, khối lệnh, hay cấu trúc điều khiển
Initialization-Expressions: phần khởi tạo là các biểu thức khởi tạo trị biến điều khiển vòng lặp, cách nhau dấu phẩy
Boolean-Expression: biểu thức điều kiện kiểu logic, thường là biểu thức so sánh giá trị của biến điều khiển với giá trị kết thúc vòng lặp
Increment-Expressions: phần tăng là các biểu thức tăng giảm giá trị biến điều khiển vòng lặp, cách nhau dấu phẩy
Khi lệnh lặp For bắt đầu, phần khởi tạo được thực hiện trước, và thực hiện duy nhất một lần, sau đó biểu thức điều kiện được kiểm tra, nếu biểu thức đúng thì lệnh sẽ được thực hiện, tiếp theo thực hiện phần tăng của vòng lặp và quá trình kiểm tra biểu thức điều kiện, thực hiện lệnh, và thực hiện phần tăng sẽ lặp đi lặp lại cho đến khi biểu thức điều kiện sai
Ví dụ :
Trăm trâu trăm cỏ
Trâu đứng ăn năm
Trâu nằm ăn ba
Ba trâu già ăn một
Hỏi số trâu mỗi loại
class SoTrau {
public static void main(String[] args) {
System.out.println("Trau dung Trau nam Trau gia");
int td=100/5;
for (int d=1;d<=td;d++) {
int tn=(100-d*5)/3;
for (int n=1;n<=tn;n++) {
int g = 100 - d - n;
if (d*5+n*3+(double)g/3==100)
System.out.println("\t"+d+"\t"+n+"\t"+g);
}
}
}}
Cấu trúc while
Cú pháp: while (Boolean-Expression)
Statement;
Statement: có thể là lệnh đơn, khối lệnh, hay cấu trúc điều khiển
Boolean-Expression: là biểu thức điều kiện có kiểu logic
Ý nghĩa: Kiểm tra chừng nào biểu thức điều kiện còn thoả mãn thì còn thực hiện lệnh.
Ví dụ: Tìm ước số chung lớn nhất của 2 số x, y
Phân tích: nếu x = y thì USCLN của x và y là x,
nếu x > y thì USCLN của x, y cũng là USCLN của x-y và y.
Cú pháp: do
Statement;
while (Boolean-Expression);
Statement: có thể là lệnh đơn, khối lệnh, hay cấu trúc điều khiển
Boolean-Expression: là biểu thức điều kiện có kiểu logic
Ý nghĩa: Đầu tiên sẽ thực hiện lệnh, sau đó kiểm tra biểu thức điều kiện, nếu biểu thức đúng, thì vòng lặp tiếp tục, nếu biểu thức sai thì thoát vòng lặp
Ví dụ 1: Lặp chương trình nhiều lần
while (true) {
…..
InputStreamReader kbd = new InputStreamReader(System.in);
System.out.println(“Ban co muon tiep tuc khong”);
char c = (char) kbd.read();
if (c!=’Y’ && c!=’y’) break;
}
Hoặc là:
char c;
do {
…..
InputStreamReader kbd = new nputStreamReader(System.in);
System.out.println(“Ban co muon tiep tuc khong”);
char c = (char) kbd.read();
}
while (c=’y’ || c==’Y’);
Ví dụ 2: Cho biết số nguyên dương n có phải là số nguyên tố không
Phân tích: n là số nguyên tố khi n chia không chẵn cho bất kỳ số nào từ 2 đến căn bậc hai của n, vì vậy lần lượt xét n có chia hết cho các số từ 2 đến căn bậc hai của n, cho đến khi xét hết hay tìm được một số mà n chia hết
class NguyenTo {
public static void main(String[] args) {
int n = 7;
double k = Math.sqrt(n);
int i = 1;
do
i++;
while (i <= k && n % i != 0);
if (i > k) System.out.println(n+" la so nguyen to");
else System.out.println(n+" khong la so nguyen to");
}
}
1.2.5 Ngoại lệ (Exception) và xử lý ngoại lệ
- Ngoại lệ là các đối tượng kiểu lớp định nghĩa sẵn, biểu diễn trạng thái lỗi tự động phát sinh khi một hàm được thực hiện.
- Khi ngoại lệ nảy sinh, có 2 khả năng xử lý: bắt lỗi, cho qua.
- Lệnh xử lý ngoại lệ : try, catch, finally, throw và throws
a. Lệnh try…catch…finally
Cú pháp: try { Statement;
}
catch (Exception-Type1 Name1) {
Statement1;
} …
finally { Statementn+1;
}
Ý nghĩa:
try : định nghĩa một khối lệnh mà ngoại lệ có thể xảy ra
catch : đi kèm với try để bắt ngoại lệ. Nếu ngoại lệ xảy ra trong khối try, Java sẽ bỏ qua các lệnh còn lại trong khối try, và thực hiện thân của mệnh đề catch có kiểu ngoại lệ tương ứng
finally : thân của mệnh đề finally luôn thực hiện trước khi lệnh try kết thúc, dù có hay không có ngoại lệ
b. Mệnh đề throws
Nếu một hàm chứa lệnh (lời gọi hàm) có phát sinh ngoại lệ mà bạn không bắt lấy bằng lệnh try... catch, phải cho qua bằng cách thêm mệnh đề throws vào cuối khai báo hàm, nếu không trình biên dịch sẽ báo lỗi. :
throws Exception-Type1,Exception-Type2…
c. Lệnh throw
Cú pháp: throw Exception-Instance;
Tạo một đối tượng kiểu ngoại lệ : sử dụng tham đối trong mệnh đề catch hay tạo một đối tượng mới bằng toán tử new
Ví dụ: throw new NumberFormatException();
Ý nghĩa: Lệnh throw đưa vào khối try cho phép bạn điều khiển điều kiện phát sinh ngoại lệ. Khi gặp lệnh throw, chương trình sẽ bỏ qua các câu lệnh sau throw trong khối truy, và thực hiện thân của mệnh đề catch có kiểu ngoại lệ tương ứng
VD: Nhập họ tên không quá 25 ký tự, năm sinh từ 1980 đến 1985 import java.io.*;
class Nhap {
public static void main (String[] args) throws IOException {
BufferedReader kbd = new BufferedReader(new InputStreamReader (System.in));
String s = null;
do {
System.out.print("Nhap Ho va ten khong qua 25 ky tu: ");
s = kbd.readLine(); //phát sinh IOException
} while (s.length()>25 || s.length()==0);
System.out.println(“Ho va ten là : “+s);
while (true) {
try {
System.out.print("Nhap nam sinh : ");
s = kbd.readLine();
int ns =Integer.parseInt(s); //phát sinh NumberFormatException
if (ns<1980 || ns>1985) throw new NumberFormatException();
System.out.println("Nam sinh la : "+ns);
break;
}
catch(NumberFormatException e) {
System.out.println("Ban nhap lai nam sinh tu 1980 -1985");
}
}}}
1.2.6 Mảng
Cấu trúc lưu giữ các thành phần cùng kiểu, chiều dài cố định.
a. Mảng 1 chiều
- Khai báo một biến tham chiếu đến mảng
Khai báo một biến dùng để tham chiếu đến mảng các thành phần kiểu ArrayType, nhưng không có mảng nào thật sự tồn tại
ArrayType[] ArrayName;
Kiểu dữ liệu thành phần có thể là bất kỳ kiểu cơ sở, tham chiếu
int[] m; // Khai báo một mảng số nguyên
String[] s; //Khai báo một mảng các chuỗi
- Tạo một mảng
dùng toán tử new để tạo mảng, nghĩa là cấp phát bộ nhớ cho các thành phần và gán mảng đén biến đã khai báo
ArrayName = new ArrayType[ArraySize];
ArraySize : là số thành phần của mảng
Ví dụ: m = new int[10]; // tạo một mảng số nguyên
Bạn có thể kết hợp khai báo biến mảng và tạo mảng như sau :
ArrayType[] ArrayName = new ArrayType[ArraySize];
Có thể viết như sau :
ArrayType ArrayName[] = new ArrayType[ArraySize];
Ví dụ: int[] m = new int[10];
int m[] = new int[10];
- Truy xuất thành phần của mảng
ArrayName[index] với index : 0 đến ArraySize-1
Ví dụ : m[0] = 20;
- Lấy kích thước mảng
ArrayName.length
- Khởi tạo giá trị đầu của mảng
Mảng có thể khởi tạo khi khai báo không dùng toán tử new.
Ví dụ 1: boolean[] answers = {true, false, true, true, false};
int monthDays[] = {31,28,31,30,31,30,31,31,30,31,30,31};
Ví dụ 2:
class ThamDoi {
public static void main (String[] args) {
for (int i=0; i < args.length; i++)
System.out.println(“Tham doi thu “+i+”: “+args[i]);
}
}
Khi chạy chương trình :
javac thamdoi.java
java ThamDoi Thu tham doi dong lenh
Cho kết quả: Tham doi thu 0 : Thu
Tham doi thu 1 : tham …
java ThamDoi Thu “tham doi” “dong lenh”
Cho kết quả: Tham doi thu 0 : Thu
Tham doi thu 1 : tham doi
Tham doi thu 2 : dong lenh
b. Mảng đa chiều (Arrays of Arrays)
Khai báo mảng 2 chiều
int m[][] = new int[4][5];
int[][] m = new int[4][5];
m : mảng 4 dòng, 5 cột
Các mảng con có thể có chiều dài khác nhau:
int m[][] = new int[2][];
m[0] = new int[2];
m[1] = new int[4];
Truy cập phần tử mảng:
m[i][j] với i là chỉ số dòng: 0 – (số dòng -1)
j là chỉ số cột: 0 – (số cột -1)
-Kích thước mảng:
-m.length: số dòng của mảng
-m[i].length: số cột của dòng thứ i
Khởi tạo giá trị đầu cho mảng:
String[][] nhom ={{"Hoa", "Thu", "Hue", "Cuc"},{"Xuan", "Ha"}};
Þmảng có 2 dòng, dòng 0 có 4 cột
dòng 1 có 2 cột
Ví dụ: Tạo ma trận các phần tử số nguyên
public class MaTran {
public static void main(String[] args) {
int[][] a = new int[4][5];
for (int i = 0; i < a.length; i++)
for (int j = 0;j<a[i].length; j++)
a[i][j] = i + j;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++)
System.out.print(a[i][j] + "\t");
System.out.println();
}
}}
Bài tập:
1) Cho 3 số thực và tìm số nhỏ nhất
2) Giải phương trình bậc 2 : ax2 + bx + c = 0
3) Xếp loại sinh viên xuất sắc, giỏi, khá, trung bình khá, trung bình hay yếu dựa vào điểm trung bình
4) Tính tổng n số hạng, với n là số nguyên dương
S=1+1/2+1/3+...+1/n
5) Tính tổng n số hạng, với n là số nguyên dương
S=1/2^2+ 3/4^2 + 5/6^2 + ...
Bài tiếp theo sẽ nói về Lập Trình Hướng Đối Tượng(Quan trọng)