Cấu trúc IF-ELSE

0
2635

Trong cuộc sống chúng ta rất hay gặp phải những tình huống đòi hỏi chúng ta phải đưa ra lựa chọn, hoặc là cái này hoặc là cái kia. Cấu trúc IF-ELSE cũng tương tự như vậy: là tại một thời điểm sẽ có nhiều lựa chọn có thể xảy ra nhưng chỉ chọn một trường hợp duy nhất….

Ở bài viết trước chúng ta đã làm quen với Biến-Hằng-Câu lệnh và biểu thức trong C/C++

nay chúng ta sẽ làm quen với câu lệnh rẽ nhánh IF-ELSE.

Rẽ nhánh: là tại một thời điểm sẽ có nhiều lựa chọn có thể xảy ra nhưng xảy ra một trường hợp duy nhất.

Các câu lệnh rẽ nhánh cho phép chúng ta thay đổi hướng thực hiện của chương trình
Một câu lệnh rẽ nhánh trả về giá trị đúng hoặc sai
Ví dụ: Để xác định một số là số chẵn hay số lẻ chúng ta tiến hành như sau:
  1. Nhập vào một số
  2. Chia số đó cho 2 để xác định số dư
  3. Nếu số dư là 0, số đó là “SỐ CHẴN”
  4. Ngược lại số dư không bằng 0, số đó là “SỐ LẺ”

Câu lệnh if

Điều kiện sử dụng:

Sử dụng khi rẽ nhánh chỉ có một trường hợp duy nhất. Nếu thỏa điều kiện thì thực hiện, còn không thỏa thì không thực hiện (không làm gì hết).
Ví dụ: Sinh viên có điểm trung bình lớn hơn 8.0 được nhận học bổng.
Sinh viên có điểm trung bình lơn hơn 8.0:  được nhận học bổng.
Trường hợp khác (có điểm trung bình không lơn hơn 8.0):  không có yêu cầu gì cả.
Cú pháp:
if (expression)

statement;

image002
Ví dụ:
image004

Câu lệnh if…else…

Điều kiện sử dụng:
Sử dụng khi rẽ nhánh chỉ có 2 trường hợp trái ngược nhau xảy ra. Nếu không thực hiện trường hợp này thì phải thực hiện trường hợp kia và ngược lại.
Ví dụ: Nếu sinh viên có điểm trung bình lớn hơn hoặc bằng 4.0 thì đậu, ngược lại thì rớt. Ta thấy trong ví dụ này, bất kỳ sinh viên nào cũng chỉ có thể rơi vào trường hợp “đậu” hoặc “rớt” mà thôi, không có trường hợp khác.
Sinh viên có điểm trung bình lớn hơn hoặc bằng 5.0:  “đậu”.
Ngược lại:  “rớt”.

Cú pháp:

if (expression)

statement1;

else

statement2;

Chi tiết hơn

image005

Ví dụ:

image007

Ví dụ: Yêu cầu người thực hiện chương trình nhập vào một số thực a. In ra màn hình kết quả nghịch đảo của a khi a ≠0, khi a =0 in ra thông báo “Khong the tim duoc nghich dao cua a”

#include <stdio.h>  
#include <conio.h>  
int main ()  
{  
	float a;  
	printf("Nhap a = "); 
	scanf("%f",&a);  
	if (a !=0 )  
		printf("Nghich dao cua %f la %f",a,1/a);  
	else  printf("Khong the tim duoc nghich dao cua a");  
	getch();  
	return 0;  
}

Giải thích:

  • Nếu chúng ta nhập vào a ≠0 thì câu lệnh printf(“Nghich dao cua %f la %f”,a,1/a) được thực hiện, ngược lại câu lệnh printf(“Khong the tim duoc nghich dao cua a”) được thực hiện.
  • Lệnh getch() luôn luôn được thực hiện.
  • Chạy từng bước dạng Debug, có thể xem các biến a, b và biểu thức a>b

Nếu bạn chưa biết debug thì xem thêm ở đây Hướng dẫn Tạo Project Visual C++ trong Visual Studio 2012

Câu if–else–if

Điều kiện sử dụng:
Sử dụng khi rẽ nhánh có từ 3 trường hợp trở lên.
Ví Dụ: Căn cứ vào điểm trung bình ta xếp loại sinh viên như sau:
Nếu đtb>=8.0 thì xếp loại giỏi
Nếu 8.0>dtb>=6.5 thì xếp loại khá
Nếu 6.5>dtb>=5.0 thì xếp loại trung bình
Còn lại thì xếp loại yếu

Cú pháp

if (expression1)
                             statement1;
else if (expression2)
                             statement2;
else if (expression3)
                             statement3;
                                         …
else statementn;
Chi tiết hơn: 

 image009

Vd: Chương trình hiển thị thông báo dựa vào một giá trị

#include <stdio.h>
#include <conio.h>
void main()
{
	int x;
	x = 0;
	printf("Enter Choice (1 - 3) : ");
	scanf("%d", &x);
	if (x == 1)
		printf ("\nChoice is 1");
	else if ( x == 2)
		printf ("\nChoice is 2");
	else if ( x == 3)
		printf ("\nChoice is 3");
	else printf ("\nInvalid Choice ");
	getch();
}

Một vài chú ý:

  • Biểu thức điều kiện trong cấu trúc if, if…else… phải có giá trị đúng hoặc sai.
  • Biểu thức điều kiện có thể chỉ gồm một biều thức đơn giản hoặc có thể là sự kết hợp của nhiều biều thức điều kiện thông qua các phép toán và (&&), hoặc (||), phủ định (!).

Lệnh if lồng nhau

Lệnh if lồng nhau là một lệnh if được đặt trong một lệnh  if hoặc else khác
Trong C, một lệnh else luôn kết hợp với một lệnh if gần nhất cùng khối lệnh nếu lệnh else đó chưa được kết hợp với một lệnh if nào khác
image011
Lệnh else bên trong được kết hợp với if(exp3)
Theo chuẩn ANSI, một trình biên dịch hỗ trợ ít nhất là 15 mức lồng nhau
#include <stdio.h>
#include <conio.h>
void main ()
{
	int x, y;                    
	x = y = 0;
	printf ("Enter Choice (1 - 3) : ");
	scanf ("%d", &x);
	if (x == 1)
	{
		printf("\nEnter value for y (1 - 5) : ");
		scanf ("%d", &y);
		if (y <= 5)
			printf("\nThe value for y is : %d", y);
		else
			printf("\nThe value of y exceeds 5 ");
	}
	else     printf ("\nChoice entered was not 1");
	getch();
}

Hướng dẫn giải quyết một bài toán
Các bước thực hiện

  • Bước 1: Phân tích bài toán, xác định input, output và các bước xử lý để từ input có thể tạo ra được output.
  • Bước 2: Cài đặt chương trình.
  • Bước 3: Kiểm tra và chạy thử.

Ví dụ: Nhập vào điểm trung bình môn học; Ngôn ngữ lập trình. In ra màn hình cho biết sinh viên đó đậu hay rớt biết rằng nếu điểm trung bình lớn hơn hoặc bằng 4.0 thì đậu ngược lại là rớt.
Bước 1: Phân tích bài toán

Input: Nhập điểm trung bình, 01 biến dtb (điểm trung bình) có kiểu là số thực
Output: Xuất ra kết quả đậu hay rớt dựa vào điểm trung bình đã nhập.
Bài toán có 2 trường hợp là đậu, rớt => sử dụng cấu trúc if…else…
Biều thức điều kiện: dtb>=4.0

Bước 2: Cài đặt chương trình

Tạo project mới (có thể tham khảo ở đây):  File -> new ->Project
Khai báo thư viện và viết hàm main
image013
  • Khai báo và nhập dữ liệu
image015
  • Cài đặt câu lệnh rẽ nhánh
image007

Bước 3: Kiểm tra, sửa lỗi và chạy thử

image020

Bài tập:

  1. Viết chương trình nhập vào 2 số a, b. Tìm số lớn nhất giữa 2 số.
  2. Viết chương trình nhập vào số nguyên, kiểm tra số đã nhập là số âm hay số dương
  3. Viết chương trình nhập vào 2 số nguyên, so sánh 2 giá trị vừa nhập vào (“Bằng nhau, nhỏ hơn, lớn hơn”).
  4. Viết chương trình nhập vào 2 số a,b. Kiểm tra a có là bội số của b không.
  5. Viết chương trình nhập vào đơn giá 1 mặt hàng, và số lượng bán của mặt hàng. Tính tiền khách phải trả, với thông tin như sau:
    • Thành tiền: đơn giá * số lượng
    • Giảm giá: Nếu thành tiền > 100, thì giảm 3% thành tiền, ngược lại không giảm
    • Tổng tiền phải trả: thành tiền – giảm giá.
  6. Viết chương trình hỗ trợ cách giải phương trình bậc 1 (ax + b = 0)
  7. Viết chương trình tính tiền điện sử dụng trong tháng:

Từ     1 – 100KW:  5$

Từ 101 – 150KW:  7$

Từ 151 – 200KW:  10$

Từ 201 – 300KW:  15$

Từ 300KW trở lên: 20$

8. Giải phương trình bậc 2 ax2 + bx + c=0

9. Nhập vào 3 số nguyên a, b,c. In ra màn hình số nguyên lớn nhất và nhỏ nhất

10. Nhập vào điểm thi tốt nghiệp THPT (toán, lý, hóa, văn, anh, sử) của một thí sinh. Cho biết thí sinh đó xếp loại của thí sinh đó. Biết rằng xếp loại thi tốt nghiệp được xác định như sau:

  • Điểm trung bình >=8 và không có môn nào dưới 6.5: loại giỏi
  • Điểm trung bình >=7.0 và không có môn nào dưới 5.0: loại khá
  • Điểm trung bình >=5.0 và không có môn nào dưới 3.5: loại TB
  • Còn các trường hợp còn lại xếp loại Yếu.

Xem thêm Cấu trúc switch – case

This site uses Akismet to reduce spam. Learn how your comment data is processed.