No6 - Cấu trúc lệnh rẽ nhánh if trong C++

1.    Câu lệnh điều kiện if

a.    Ý nghĩa

Lệnh if cho phép chương trình thực hiện khối lệnh phụ thuộc vào một điều kiện được viết trong câu lệnh là đúng hay sai. 
Lệnh if cho phép chương trình rẽ nhánh (chỉ thực hiện 1 trong 2 nhánh).

b.    Cú pháp

- Dạng 1: if (điều kiện) { khối lệnh 1; }                 
- Dạng 1: if (điều kiện) { khối lệnh 1; } else { khối lệnh 2; }

(Điều kiện): là một biểu thức lôgic có giá trị đúng (khác 0) hoặc sai (bằng 0).
Nếu điều kiện đúng chương trình sẽ tiếp tục thực hiện khối lệnh 1, ngược lại nếu điều kiện sai chương trình sẽ thực hiện khối lệnh 2 (nếu có else) hoặc không làm gì (nếu không có else).
Cấu trúc lệnh if trong C/C++

c.    Đặc trưng

-        Cho phép các câu lệnh if có thể lồng nhau.
-        Nếu nhiều câu lệnh if (có else và không else) lồng nhau thì else sẽ đi với if gần nó nhất mà chưa được ghép cặp với else khác. Ví dụ câu lệnh
if (n>0) if (a>b) c = a;   
else c = b;
tương đương với
if (n>0) { if (a>b) c = a; else c = b;}

2.    Ví dụ minh hoạ

Ví dụ 1 : Bằng phép toán gán có điều kiện có thể tìm số lớn nhất max trong 2 số a, b như sau: max = (a > b) ? a: b ;
hoặc max được tìm bởi dùng câu lệnh if:
if (a > b) max = a; else max = b;
Ví dụ 2 : Tính năm nhuận. Năm thứ n là nhuận nếu nó chia hết cho 4, nhưng không chia hết cho 100 hoặc chia hết 400. Chú ý: một số nguyên a là chia hết cho b nếu phần dư của phép chia bằng 0, tức a%b == 0.
#include <iostream.h>
void main()                                
{
     int nam;
     cout << “Nam = “ ; cin >> nam ;
     if (nam%4 == 0 && year%100 !=0 || nam%400 == 0)
cout << nam << "la nam nhuan” ;
else
cout << nam << "la nam khong nhuan” ;
}
Ví dụ 3 : Giải phương trình bậc 2. Cho phương trình ax2 + bx + c = 0 (a ¹ 0), tìm x.
#include <iostream.h>                         // tệp chứa các phương thức vào/ra
#include <math.h>                                           // tệp chứa các hàm toán học
void main()                                
{
float a, b, c;                                                // khai báo các hệ số
float delta;                                                
     float x1, x2;                                        // 2 nghiem
     cout << “Nhap a, b, c:\n” ; cin >> a >> b >> c ;     // qui ước nhập a ¹ 0
     delta = b*b - 4*a*c ;
     if (delta < 0) cout << “ph. trình vô nghiệm\n” ;
     else if (delta==0) cout<<“ph. trình có nghiệm kép:" << -b/(2*a) << '\n';
     else
     {
                 x1 = (-b+sqrt(delta))/(2*a);
                 x2 = (-b-sqrt(delta))/(2*a);
                 cout << “nghiem 1 = " << x1 << " và nghiem 2 = " << x2 ;
     }
}

Chú ý

C++ quan niệm "đúng" là một giá trị khác 0 bất kỳ và "sai" là giá trị 0 nên thay vì viết if (x != 0) hoặc if (x == 0) ta có thể viết gọn thành if (x) hoặc if (!x).

Post a Comment

0 Comments