Nếu đúng, ta thực hiện việc hiển thị thông báo đó là số chẵn. Nếu số dư đó khác 0, ta thực hiện việc hiển thị thơng báo đó là số lẻ.
Trong C một điều kiện được coi là đúng (true) khi nó có giá trị khác 0, là sai (false) khi nó có giá trị bằng 0.
5.2. Các câu lệnh lựa chọn:
C cung cấp hai dạng câu lệnh lựa chọn: Câu lệnh if
Câu lệnh switch
Chúng ta hãy tìm hiểu hai câu lệnh lựa chọn này.
5.2.1 Câu lệnh ‘if’:
Câu lệnh if cho phép ta đưa ra các quyết định dựa trên việc kiểm tra một điều kiện nào đó là đúng
(true) hay sai (false).
Các điều kiện gồm các toán tử so sánh và logic mà chúng ta đã thảo luận ở bài 4. Dạng tổng quát của câu lệnh if:
if (biểu thức) Các câu lệnh;
Biểu thức phải luôn được đặt trong cặp dấu ngoặc (). Mệnh đề theo sau từ khoá if là một điều kiện (hoặc một biểu thức điều kiện) cần được kiểm tra. Tiếp đến là một lệnh hay một tập các lệnh sẽ được thực thi khi điều kiện (hoặc biểu thức điều kiện) có kết quả true.
Ví dụ 5.2: #include <stdio.h> int main() { int x, y; char a = ‘y’; x = y = 0; if (a == ‘y’) { x += 5;
printf(“The numbers are %d and \t%d”, x, y); }
}
Kết quả của chương trình như sau:
The numbers are 5 and 0 Có kết quả này là do biến a đã được gán giá trị 'y'.
Chú ý rằng, khối lệnh sau lệnh if được đặt trong cặp ngoặc nhọn {}. Khi có nhiều lệnh cần được thực hiện, các câu lệnh đó được coi như một block (khốI lệnh) và phảI được đặt trong cặp dấu {}. Nếu trong ví dụ trên ta khơng đưa vào dấu ngoặc nhọn ở câu lệnh if, chỉ có câu lệnh đầu tiên (x += 5) được thực hiện khi điều kiện trong câu lệnh if là đúng.
Ví dụ dưới đây sẽ kiểm tra một năm có phải là năm nhuận hay không. Năm nhuận là năm chia hết cho 4 hoặc 400 nhưng không chia hết cho 100. Chúng ta sử dụng lệnh if để kiểm tra điều kiện.
Ví dụ 5.3:
/* To test for a leap year */ #include <stdio.h>
int main() {
int year;
printf(“\nPlease enter a year:”); scanf(“%d”, &year);
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
printf(“\n%d is a leap year!”, year); }
Chương trình trên cho ra kết quả như sau: Please enter a year: 1988 1988 is a leap year!
Điều kiện year % 4 == 0 && year % 100 != 0 || year % 400 == 0 trả về giá trị 1 nếu năm đó là năm nhuận. Khi đó, chương trình hiển thị thơng báo gồm biến year và dòng chữ “is a leap year”.
Nếu điều kiện trên khơng thỏa mãn, chương trình khơng hiển thị thơng báo nào.
5.2.2 Câu lệnh ‘if … else’:
Ở trên chúng ta đã biết dạng đơn giản nhất của câu lệnh if, cho phép ta lựa chọn để thực hiện hay không một câu lệnh hoặc một chuỗI các lệnh. C cũng cho phép ta lựa chọn trong hai khốI lệnh để thực hiện bằng cách dùng cấu trúc if – else. Cú pháp như sau:
if (biểu thức)
câu_lệnh – 1; else
câu_lệnh – 2;
Nếu biểu thức điều kiện trên là đúng (khác 0), câu lệnh 1 được thực hiện. Nếu nó sai (khác 0) câu lệnh 2 được thực hiện. Câu lệnh sau if và else có thể là lệnh đơn hoặc lệnh phức. Các câu lệnh đó nên được lùi vào trong dịng mặc dù khơng bắt buộc. Cách viết đó giúp ta nhìn thấy ngay những lệnh nào sẽ được thực hiện tùy theo kết quả của biểu thức điều kiện.
Bây giờ chúng ta viết một chương trình kiểm tra một số là số chẵn hay số lẻ. Nếu đem chia số đó cho 2 được dư là 0 chương trình sẽ hiển thị dịng chữ “The number is Even”, ngược lại sẽ hiển thị dòng chữ “The number is Odd”.
Ví dụ 5.4:
#include <stdio.h> int main()
int num, res;
printf(“Enter a number: ”); scanf(“%d”, &num);
res = num % 2; if (res == 0)
printf(“The number is Even”); else
printf(“The number is Odd”); }
Xem một ví dụ khác, đổi một ký tự hoa thành ký tự thường. Nếu ký tự khơng phải là một ký tự hoa, nó sẽ được in ra mà khơng cần thay đổi. Chương trình sử dụng cấu trúc if-else để kiểm tra xem một ký tự có phải là ký tự hoa khơng, rồI thực hiện các thao tác tương ứng.
Ví dụ 5.5:
/* Doi mot ky tu hoa thanh ky tu thuong */ #include <stdio.h>
int main() {
char c;
printf(“Please enter a character: ”); scanf(“%c”, &c);
if (c >= ‘A’ && c <= ‘Z’)
printf(“Lowercase character = %c”, c + ‘a’ – ‘A’);
else
printf(“Character Entered is = %c”, c); }
Biểu thức c >= ‘A’ && c <= ‘Z’ kiểm tra ký tự nhập vào có là ký tự hoa không. Nếu biểu thức trả về true, ký tự đó sẽ được đổi thành ký tự thường bằng cách sử dụng biểu thức c + ‘a’ – ‘A’, và được in ra màn hình qua hàm printf(). Nếu giá trị của biểu thức là false, câu lệnh sau else được chạy và chương trình hiển thị kí tự đó ra màn hình mà khơng cần thực hiện bất cứ sự thay đổI nào.
5.2.3 Nhiều lựa chọn – Các câu lệnh ‘if … else’:
Câu lệnh if cho phép ta lựa chọn thực hiện một hành động nào đó hay khơng. Câu lệnh if – else cho phép ta lựa chọn thực hiện giữa hai hành động. C cho phép ta có thể đưa ra nhiều lựa chọn hơn. Chúng ta mở rộng cấu trúc if – else bằng cách thêm vào cấu trúc else – if để thực hiện điều đó. Nghĩa là mệnh đề else trong một câu lệnh if – else lạI chứa một câu lệnh if – else khác. Do đó nhiều điều kiện hơn được kiểm tra và tạo ra nhiều lựa chọn hơn.
Cú pháp tổng quát trong trường hợp này như sau: if (biểu thức) câu_lệnh; else
if (biểu thức) câu_lệnh; ……
else câu_lệnh;