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:
o
Mệnh đề if-else
Mệnh đề switch-case
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 tế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) {
public static void main(String[] args) {
int gioitinh = 1;
int gioitinh = 1;
switch (gioitinh) {
if (gioitinh == 0)
case 0:
System.out.println(“Bé trai”);
else if
System.out.println(“Bé trai”);
break;
System.out.println(“Bé gái”);
else
case 1:
System.out.println(“Bé gái”);
break;
default:
System.out.println(“Chưa xác định”);
break;
}
}
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
Mỗi case liên quan trở lại với giá trị ban đầu
giá trị là đúng hoặc sai
Các biến trong biểu thức có thể định giá trị
của biểu thức trong câu lệnh switch
của bất kỳ kiểu giá trị nào
Chỉ một khối lệnh được thực thi
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
o
Cú pháp
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
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.
•
do-while
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
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
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
o
While, do … while, for tương đương nhau
for:
o
Ví dụ: in ra một thơng báo 100 lần.
while:
o
Sử dụng khi biết trước số lần lặp.
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.
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.