Chương 3
Cấu trúc điều khiển
Chương 3: Cấu trúc điều khiển
o Điều khiển rẽ nhánh:
Mệnh đề if-else
Mệnh đề switch-case
o Vòng lặp (Loops):
Vòng lặp while
Vòng lặp do-while
Vòng lặp for
o Cấu trúc lệnh nhảy:
Lệnh break
Lệnh continue
Nhãn (lable)
Lệnh goto
Lệnh if
o Cú pháp:
if (<biểu thức điều kiện>)
{
[câu lệnh 1];
[câu lệnh 2];
…
}
Lệnh if
public class TestIf {
• public static void main( String args[ ] ){
–
–
–
int van, toan;
van = 8;
toan = 6;
– if(((toan+van)/2 > 5) && (toan > 5))
•
System.out.println(“Kết quả đậu \n”);
• }
}
Lệnh if
import java.util.Date;
public class TestIf 2{
• public static void main( String args[ ] ){
•
Date today = new Date();
•
if( today.getDay() == 0 )
•
System.out.println(“Hơm nay là chủ nhật\n”);
•
}
}
Lệnh if … else
o Cú pháp:
Lệnh if … else
public class TestIf {
• public static void main( String args[ ] ){
–
–
–
•
•
•
•
}
Int van, toan;
van = 8;
toan = 6;
– if(((toan+van)/2 > 5) && (toan > 5))
System.out.println(“Kết quả đậu \n”);
else
System.out.println(“Kết quả không đậu \n”);
}
Lệnh if … else
import java.util.Date;
public class TestIf 2{
• public static void main( String args[ ] ){
•
Date today = new Date();
•
if( today.getDay() == 0 )
•
System.out.println(“Hơm nay là chủ nhật\n”);
•
else
•
System.out.println(“Hơm nay khơng phải là chủ
nhật\n" );
• }
}
Lệnh if .. else
import java.util.Date;
public class TestIf {
• public static void main( String args[ ] ){
–
•
•
•
•
•
}
Date today = new Date();
if( today.getDay() == 0 )
System.out.println(“Hôm nay là chủ nhật\n”);
else
System.out.println(“Hôm nay không phải là chủ
nhật\n" );
}
Lỗi với lệnh if .. else
o Thêm ; ở cuối mệnh đề if hoặc else
o Lỗi này rất khó tìm, vì nó khơng phải là lỗi biên dịch
hay lỗi chạy chương trình, nó là lỗi logic.
Lưu ý với lệnh if .. else
o Nhiều lệnh IF lồng vào nhau:
Lưu ý với lệnh if .. else
o Mệnh đề else gắn với mệnh đề if gần nhất trong cùng
một khối.
VD:
public class TestIf3{
• public static void main( String args[ ] ){
int i = 1; int j = 2; int k = 3;
if(i > j)
if(i > k)
System.out.println(“A”);
else //của if(i > k)
System.out.println(“B”);
}
}
Lệnh switch … case
o Cấu trúc lệnh switch tương tự các cặp lệnh if – else
liên tiếp nhau
Lệnh switch … case
Lệnh switch … case
public static void main(String[] args) {
int a = 0;
switch (a) {
case 0:
System.out.println(“Zero”);
break;
case 10:
System.out.println(“Ten”);
case 20:
System.out.println(“Twenty”);
break;
default:
System.out.println(“Default”);
break;
}
}
So sánh lệnh if … else và switch … case
public static void main(String[] args) {
int gioitinh = 1;
switch (gioitinh) {
case 0:
System.out.println(“Bé trai”);
break;
case 1:
System.out.println(“Bé gái”);
break;
default:
System.out.println(“Chưa xác
định”);
break;
}
}
public static void main(String[]
args) {
int gioitinh = 1;
if (gioitinh == 0)
System.out.println(“Bé trai”);
else if
System.out.println(“Bé gái”);
else
System.out.println(“Chưa xác
định”);
}
So sánh lệnh if … else và switch … case
• if-else
• swich-case
Mỗi if có biểu thức luận
lý bên trong để định giá
trị là đúng hoặc sai
Các biến trong biểu thức
có thể định giá trị của bất
kỳ kiểu giá trị nào
Chỉ một khối lệnh được
thực thi
Mỗi case liên quan trở lại
với giá trị ban đầu của
biểu thức trong câu lệnh
switch
Biểu thức phải định giá trị
là kiểu byte, short, char,
int
Nếu câu lệnh break bị bỏ
qua có nhiều khối lệnh
được thực hiện
Lệnh lặp while
o Cú pháp
o Lưu ý: Không nên sử dụng giá trị kiểu float, double để
kiểm tra đẳng thức trong vòng lặp.
Lệnh lặp while
// Tính tổng các số lẻ từ 1 đến 100
public static void main(String[] args) {
•
int tong = 0, i = 1;
•
while (i<=100){
•
tong+=i; i+=2;
•
}
•
System.out.println(tong);
}
Lệnh lặp do … while
o Cú pháp
Lệnh lặp do … while
// Tính tổng các số lẻ từ 1 đến 100
public static void main(String[] args) {
• int tong = 0, i=1;
• do{
•
tong+=i; i+=2;
•
}while (i<=100);
•
System.out.println(tong);
}
So sánh while/for và do-while
• while/for
• do-while
Vịng lặp được kiểm tra
đầu tiên. Điều kiện được
kiểm tra trước khi các câu
lệnh trong phạm vi vòng
lặp được thực thi.
Vòng lặp không được
thực thi nếu điều kiện
không được thỏa mãn tại
điểm bắt đầu
Vòng lặp được kiểm tra
sau. Điều kiện được kiểm
tra sau khi câu lệnh trong
phạm vi vòng lặp được
thực thi.
Vịng lặp được thực thi ít
nhất một lần thậm chí nếu
điều kiện khơng thỏa mãn
tại điểm bắt đầu
Lệnh lặp for
o Cú pháp:
for(<giá trị khởi tạo>;<biểu thức điều kiện>;tăng/giảm){
//Khối lệnh
}
Lệnh lặp for
// Chương trình tính tổng các số lẻ từ 1 đến 100
public class TestFor{
public static void main(String[] args){
int tong = 0;
for(int i=1; i<=100; i+=2)
tong+=i;
System.out.println(tong);
}
}
Lưu ý sử dụng vòng lặp
o While, do … while, for tương đương nhau
o for:
Sử dụng khi biết trước số lần lặp.
Ví dụ: in ra một thơng báo 100 lần.
o while:
Sử dụng khi không biết trước số lần lặp.
Ví dụ: đọc vào các số đến khi gặp số 0.
o do … while:
Sử dụng thay lệnh WHILE khi thân vịng lặp được
thực hiện ít nhất 1 lần.