Lệnh if

Câu lệnh if cho phép lựa chọn một trong hai nhánh tùy thuộc vào giá trị của biểu thức luận lý là đúng (true) hay sai (false) hoặc khác không hay bằng không.

Dạng 1 (if thiếu).

Quyết định sẽ thực hiện hay không một khối lệnh.

Cú pháp lệnh

if (biểu thức luận lý)

khối lệnh;

  • Từ khóa if phải viết bằng chữ thường.
  • Kết quả của biểu thức luận lý phải là đúng hoặc sai.

Lưu đồ

Hính 4.1. Lưu đồ cấu trúc if thiếu

Nếu biểu thức luận lý đúng thì thực hiện khối lệnh và thoát ra khỏi if và ngược lại, không làm gì cả và thoát ra khỏi if.

  • Lưu ý: Nếu khối lệnh bao gồm từ 2 lệnh trở lên thì phải đặt trong dấu {}

Diễn giải:

  • Khối lệnh là một lệnh ta viết lệnh if như sau:

if (biểu thức luận lý)

lệnh;

  • Khối lệnh bao gồm nhiều lệnh: lệnh 1, lệnh 2, ..., ta viết lệnh if như sau:

if (biểu thức luận lý)

{

lệnh 1;

lệnh 2;

...

lệnh n;

}

  • Không đặt dấu chấm phẩy sau câu lệnh if.

Ví dụ: if (biểu thức luận lý);

  • Trình biên dịch không báo lỗi nhưng khối lệnh không được thực hiện cho dù điều kiện đúng hay sai.

Ví dụ: Viết chương trình nhập vào 2 số nguyên a,b. Tìm và in ra số lớn nhất.

Phác họa lời giải.

Trước tiên ta cho giá trị a là giá trị lớn nhất bằng cách gán a cho max (max là biến được khai báo cùng kiểu dữ liệu với a,b). Sau đó so sánh b và a, nếu b lớn hơn a ta gán b cho max và cuối cùng ta được kết quả max là giá trị lớn nhất.

Mô tả quy trình xử lý (giải thuật).

Ngôn ngữ tự nhiên Ngôn ngữ C++
  • Khai báo 3 biến a, b, max kiểu số nguyên
  • Nhập vào giá trị a
  • Nhập vào giá trị b
  • Gán a cho max
  • Nếu b > a thì gán b cho max
  • In ra kết quả là max

    |

  • int a,b,max;

  • cin >> a;
  • cin >> b;
  • max = a;
  • if (b > a ) max = b;
  • cout << max;

    |

Mô tả bằng lưu đồ

../../../../Desktop/Screen%20Shot%202017-04-04%20at%205.18.23%

Chương trình mẫu

/* Chuong trinh tim so lon nhat tu 2 so nguyen a,b */

include <iostream>

using namespace std;

void main(void)

{

int a, b, max;

cout << “Nhap vao so a : “;

cin >> a;

cout << “Nhap vao so b : “;

cin >> b;

max = a;

if (b > a)

max = b;

cout << “So lon nhat = “ << max);

}

  • Kết quả in ra màn hình.
Nhap vao so a: 10 Cho chạy lại chương trình và thử lại với:

Dạng 2 (if đầy đủ)

Quyết định sẽ thực hiện 1 trong 2 khối lệnh cho trước.

Cú pháp lệnh

if (biểu thức luận lý)

khối lệnh 1;

else

khối lệnh 2;

  • Từ khóa if, else phải viết bằng chữ thường.
  • Kết quả của biểu thức luận lý phải là đúng hoặc sai.

Lưu đồ

Hính 4.3 Lưu đố if đấy đủ

  • Nếu biểu thức luận lý đúng thì thực hiện khối lệnh 1 và thoát khỏi if và ngược lại thực hiện khối lệnh 2 và thoát khỏi if.
  • Nếu khối lệnh 1, khối lệnh 2 bao gồm từ 2 lệnh trở lên thì phải đặt trong dấu {}.

Ví dụ: Viết chương trình nhập vào 2 số nguyên a,b. In ra thông báo “a bằng b” nếu a = b, ngược lại in ra thông báo “a khác b”.

Phác họa lời giải:

So sánh a với b, nếu a bằng b thì in ra câu thông báo “a bằng b”, ngược lại in ra thông báo “a khác b”.

Mô tả quy trình xử lý (giải thuật)

Ngôn ngữ tự nhiên Ngôn ngữ C++
  • Khai báo 2 biến a, b kiểu số nguyên.
  • Nhập vào giá trị a.
  • Nhập vào giá trị b.
  • Nếu a = b thì in ra thông báo “a bằng b”.
  • Ngược lại (còn không thì) in ra thông báo “a khác b”.

    | cout << “a bang b”; |

Mô tả bằng lưu đồ

../../../../Desktop/Screen%20Shot%202017-04-04%20at%205.38.41%

Hình 4.4. Lưu đồ giải thuật if đầy đủ

Viết chương trình

/* Chuong trinh in ra thong bao "a bang b" neu a = b,nguoc lại in ra "a khac b" */

include <iostream>

using namespace std;

void main(void)

{

int a, b;

cout << “Nhap vao so a : “;

cin >> a;

cout << “Nhap vao so b : “;

cin >> b;

if (a == b)

cout << “a bang b”;

else

cout << “a khac b”;

}

Kết quả khi in ra màn hình

Nhap vao so a: 10 Cho chạy lại chương trình và thử lại với:
  • Sau else không có dấu chấm phẩy.

Ví dụ: else; cout << “a khac b”;

trình biên dịch không báo lỗi, lệnh cout << “a khac b”; không thuộc else

Cấu trúc else if

Quyết định sẽ thực hiện 1 trong n khối lệnh cho trước.

Cú pháp lệnh

if (biểu thức luận lý 1)

khối lệnh 1;

else if (biểu thức luận lý 2)

khối lệnh 2;

else if (biểu thức luận lý n-1)

khối lệnh n-1;

else

khối lệnh n;

  • Từ khóa if, else if, else phải viết bằng chữ thường.
  • Kết quả của biểu thức luận lý 1,2…n phải là đúng hoặc sai.

Lưu đồ:

Hình 4.5. Lưu đồ cấu trúc else if

  • Nếu khối lệnh 1,2…n bao gồm từ 2 lệnh trở lên thì phải đặt trong dấu {}.
  • Nếu biểu thức luận lý 1 đúng thì thực hiện khối lênh 1 và thoát khỏi cấu trúc if

Ngược lại nếu biểu thức luận lý 2 đúng thì thực hiện khối lệnh 2 và thoát khỏi cấu trúc if

Ngược lại nếu biểu thức luận lý n-1 đúng thì thực hiện khối lệnh n-1 và thoát khỏi cấu trúc if

Ngược lại thì thực hiện khối lệnh n.

Ví dụ: Viết chương trình nhập vào 2 số nguyên a,b. In ra thông báo “a lớn hơn b” nếu a > b, in ra thông báo “a nhỏ hơn b” nếu a < b, in ra thông báo “a bằng b” nếu a = b.

Phác họa lời giải:

Trước tiên so sánh a với b. Nếu a > b thì in ra thông báo “a lớn hơn b”, ngược lại nếu a<b thì in ra thông báo “a nhỏ hơn b”, ngược với 2 trường hợp trên thì in ra thông báo “a bằng b”.

Mô tả quy trình thực hiện (giải thuật).

Ngôn ngữ tự nhiên Ngôn ngữ C++
  • Khai báo 2 biến a, b kiểu số nguyên
  • Nhập vào giá trị a
  • Nhập vào giá trị b
  • Nếu a > b thì in ra thông báo “a lớn hơn b”.
  • Ngược lại Nếu a < b thì in ra thông báo “a nhỏ hơn b”.
  • Ngược lại thì in ra thông báo “a bằng b”.

    | cout << “a lon hon b”; |

Mô tả bằng lưu đồ.

../../../../Desktop/Screen%20Shot%202017-04-04%20at%205.59.34%

Hình 4.6. Lưu đồ giải thuật cấu trúc else if

Chương trình thực hiện

/* Chuong trinh nhap vao 2 so nguyen a, b. In ra thong bao a > b, a < b, a = b */

include <iostream>

using namespace std;

void main(void)

{

int a, b;

cout << “Nhap vao so a : “;

cin >> a;

cout << “Nhap vao so b : “;

cin >> b;

if (a > b)

cout << “a lon hon b“;

else if (a < b)

cout << “a nho hon b”;

else

cout << “a bang b”;

}

  • Kết quả in ra màn hình
Nhap vao so a: 5 Cho chạy lại chương trình và thử lại với:

Cấu trúc if lồng

Quyết định sẽ thực hiện 1 trong n khối lệnh cho trước.

Cú pháp lệnh:

Cú pháp lệnh là một trong 3 dạng trên, nhưng trong 1 hoặc nhiều khối lệnh bên trong phải chứa ít nhất một trong 3 dạng trên gọi là cấu trúc if lồng nhau. Thường cấu trúc if lồng nhau càng nhiều cấp độ phức tạp càng cao, chương trình chạy càng chậm và trong lúc lập trình dễ bị nhầm lẫn.

  • Lưu ý: Các lệnh if…else lồng nhau sẽ luôn luôn kết hợp với if nào chưa có lệnh else nào gần nhất. Vì vậy khi gặp những lệnh if không có else, bạn phải đặt chúng trong những khối lệnh rõ rang để tránh bị hiểu sai câu lệnh.

Ví dụ:

if (n > 0)

if (a > b)

x = a;

else

x = b;

Mặc dù bạn viết lệnh else thằng hang với lệnh if (n > 0), nhưng lệnh ở đây được nhiều đi kèm với if (a > b), vì nó nằm gần với if (a > b) nhất và if (a > b) chưa có else. Để dễ nhìn và dễ hiểu hơn. Ta viết như sau:

if (n > 0)

if (a > b)

x = a;

else

x = b;

Còn nếu bạn muốn lệnh else là của if ( n > 0) thì bạn phải đặt if (a > b) x = a trong một khối lệnh. Bạn phải viết như sau:

if (n > 0)

{

if (a > b)

x = a;

}

else

x = b;

Lưu đồ:

Tương tự như 3 dạng trên. Nhưng trong mỗi khối lệnh có thể có một (nhiều cấu trúc if ở 3 dạng trên).

Ví dụ: Viết chương trình nhập vào điểm của một học sinh. In ra xếp loại học tập của học sinh đó. (Cách xếp loại. Nếu điểm >=9, Xuất sắc. Nếu điểm từ 8 đến 9, Giỏi. Nếu điểm từ 7 đến 8, Khá. Nếu điểm từ 6 đến 7, TB Khá. Nếu điểm từ 5 đến 6, TBình. Còn lại là Yếu).

Phác họa lời giải:

Điểm số nhập vào nếu hợp lệ (0 <= điểm <=10), bạn tiếp tục công việc xếp loại, ngược lại thông báo nhập “Nhập điểm không hợp lệ”. Việc xếp loại bạn sử dụng cấu trúc else if

Mô tả quy trình xử lý (giải thuật).

Ngôn ngữ tự nhiên Ngôn ngữ C++
Nếu score >=0 && score <=10 thì if (score >= 9)

Viết chương trình

include <iostream>

using namespace std;

main(void){

float score;

cout << "Nhap vao diem so: ";

cin >> score;

if (score >= 0 && score <= 10)

if (score >= 9)

cout << "Xep loai = Xuat sac";

else if (score >=8)

cout << "Xep loai = Gioi";

else if (score >=7)

cout << "Xep loai = Kha";

else if (score >=6)

cout << "Xep loai = TB Kha";

else if (score >=5)

cout << "Xep loai = TBinh";

else

cout << "Xep loai = Yeu";

else

cout << "Nhap diem khong hop le!";

}

  • Kết quả in ra màn hình
Nhap vao diem so: 6.5 Cho chạy lại chương trình và thử lại với các giá trị khác.

Trong chương trình trên cấu trúc else if được lồng vào trong cấu trúc dạng 2, trong cấu trúc else if ta không cần đặt trong khối vì tất cả các lệnh if trong cấu trúc này đều có else, nên else cout << “Nhap diem khong hop le!”’ đương nhiên sẽ thuộc về if (score >= 0 && score <10). Giả sử trong cấu trúc else if không có dòng else cout << “Xep loai = Yeu”; thì khi đó dòng else cout << “Nhap diem khong họp le!” sẽ thuộc về cấu trúc else if chứ không thuộc về if (score >=0 && score <=10). Đối với trường hợp đó bạn cần phải đặt cấu trúc else if vào trong {}, thì khi đó dòng else cout << “Nhap diem khong hop le!” sẽ thuộc về if (score >=0 && score <=10).

results matching ""

    No results matching ""