You are on page 1of 34

BÀI 3:

CẤU TRÚC RẼ NHÁNH


2
Nội dung:
 Nhắc lại toán tử so sánh và toán tử logic
 Cấu trúc rẽ 2 nhánh
 if …
 if … else …
 if … else lồng nhau
 Cấu trúc rẽ nhiều nhánh
 switch…case

BUSINESS INFORMATION TECHNOLOGY


3
Toán tử so sánh
Toán tử Ký hiệu C#
Bằng ==
Không bằng !=
L ớ n h ơn >
Lớn hơn hoặc bằng >=
Nhỏ hơn <
Nhỏ hơn hoặc bằng <=

 Ví dụ:
bool ketqua = 5 <= 6;
Console.WriteLine(ketqua); // True

BUSINESS INFORMATION TECHNOLOGY


3
4
Toán tử logic
Toán tử Ký hiệu C#
Phủ định (NOT) !
Và (AND) &&
Hoặc (OR) ||
Exclusive OR (XOR) ^

 Luật De Morgan:
 !!A  A
 !(A || B)  !A && !B
 !(A && B)  !A || !B

BUSINESS INFORMATION TECHNOLOGY


4
5

Lệnh if và if … else

Kiểm tra điều kiện và thi hành lệnh

BUSINESS INFORMATION TECHNOLOGY


6
Lệnh if

 Cú pháp
 if (<điều kiện>) <lệnh> ;

 if (<điều kiện>)
{
<lệnh 1> ;
<lệnh 2> ;

}

BUSINESS INFORMATION TECHNOLOGY


7
Điều kiện và Lệnh
 <Điều kiện> có thể là:
Biến Bool
Biểu thức Bool
Biểu thức so sánh
 <Điều kiện> không thể là biến nguyên (như
trong C/ C++)
 <Lệnh> có thể là:
Một lệnh, kết thúc bởi dấu ;
Một khối các lệnh đặt trong cặp {…}
BUSINESS INFORMATION TECHNOLOGY
7
8
Sơ đồ khối

false
Điều kiện

true

Lệnh

Ý nghĩa: Kiểm tra điều kiện,


 Nếu <điều kiện> là true thì thi hành lệnh.
 Nếu <điều kiện> là false thì lệnh bỏ qua.

BUSINESS INFORMATION TECHNOLOGY


8
9
Ví dụ:
static void Main()
{
Console.WriteLine(“Nhap 2 so :”);

int sobe = int.Parse(Console.ReadLine());


int solon = int.Parse(Console.ReadLine());

if (sobe > solon)


{
solon = sobe;
}

Console.WriteLine(“So lon hon la : {0}", solon);


}

BUSINESS INFORMATION TECHNOLOGY


9
10
Lệnh if … else

 Cú pháp
if (điều kiện)
{
<lệnh 1> ;
}
else
{
<lệnh 2> ;
}

BUSINESS INFORMATION TECHNOLOGY


11
Sơ đồ khối

false
Điều kiện Lệnh 2

true

Lệnh 1

Ý nghĩa: Kiểm tra <điều kiện>,


 N ếu <điều kiện> là true thì thi hành <lệnh 1>
 N ếu <điều kiện> là false thì thi hành <lệnh 2>

BUSINESS INFORMATION TECHNOLOGY


11
12
Lưu ý:
 Từ khóa if và else phải viết ở dạng chữ thường
(thường hay mắc sai sót khi viết IF, iF, If, Else,
ELSE,...)
 Điều kiện phải đặt trong cặp ngoặc tròn (….)
 Dấu chấm phẩy phải có để kết thúc 1 lệnh
 Nếu sau <điều kiện> hoặc sau else cần thực hiện
nhiều lệnh thì các lệnh này bắt buộc đặt trong
cặp dấu ngoặc nhọn {…} (nếu một lệnh thì có thể
bỏ qua)

BUSINESS INFORMATION TECHNOLOGY


13
Ví dụ:
 Kiểm tra một số đọc vào là số chẵn hay lẻ
Console.WriteLine(“Nhap so : “);
int n= int.Parse(Console.ReadLine());

if (n % 2 == 0)
{
Console.WriteLine(“Day la so chan.");
}
else
{
Console.WriteLine(“Day la so le.");
} //các cặp dấu ngoặc có thể bỏ vì thực hiện 1 lệnh

BUSINESS INFORMATION TECHNOLOGY


13
14
Ví dụ báo lỗi:
int a=0, b=1,c=2;
if (a>b) && (a>c)
Console.WriteLine(a+b+c);
// báo lỗi vì thiếu cặp dấu ngoặc
// invalid expression term ‘&&’
//; expected

if (a=b) a+=2*b; // C# báo lỗi vì toán tử so sánh là ==


// Cannot implicitly convert type ‘int’ to
‘bool

if (a==b) a+=2*b // C# báo lỗi vì thiếu dấu ;


//; expected

BUSINESS INFORMATION TECHNOLOGY


14
15
Lệnh if lồng nhau
 Lệnh đứng sau <điều kiện> và sau else có thể là
lệnh if, ta gọi là lệnh if lồng vào nhau
 Mỗi else tương ứng với if gần nó nhất.
if (<điều kiện>)
{
if (<điều kiện>)
{
<lệnh 1>;
}
else
{
<lệnh 2>;
}
}
else
<lệnh 3>;

BUSINESS INFORMATION TECHNOLOGY


15
Lưu ý khi dùng lệnh if lồng nhau 16

 Luôn dùng khối { … } để tránh nhầm lẫn


(Kể cả khi chỉ có 1 lệnh)
 Tránh dùng hơn 3 cấp lồng nhau
 Sắp xếp các lệnh để CT dễ đọc hơn

BUSINESS INFORMATION TECHNOLOGY


16
17
Ví dụ:
Console.WriteLine(“Nhap 2 so : “);
int so1 = int.Parse(Console.ReadLine());
int so2 = int.Parse(Console.ReadLine());
if (so1 == so2)
{
Console.WriteLine(“Hai so bang nhau.");
}
else
{
if (so1 > so2)
{
Console.WriteLine(“So thu nhat lon hon.");
}
else
{
Console.WriteLine(“So thu hai lon hon.");
}
}

BUSINESS INFORMATION TECHNOLOGY


17
18
Ví dụ: if … else lồng nhiều cấp
Console.WriteLine(“Nhap 1 ký tu : “);
int ch = char.Parse(Console.ReadLine()); //int ch hoặc char ch
if (ch == 'A' || ch == 'a')
{
Console.WriteLine(“Nguyen am [ei]");
}
else if (ch == 'E' || ch == 'e')
{
Console.WriteLine(“Nguyen am [i:]");
}
else if (ch == ‘U' || ch == ‘u')
{
Console.WriteLine(“Nguyen am [u]");
}
else …

BUSINESS INFORMATION TECHNOLOGY


18
Ví dụ: Giải phương trình ax+b=0 19

Console.WriteLine(“Nhap 2 so a va b : ”);
float a= float.Parse(Console.ReadLine());
float b= float.Parse(Console.ReadLine());
if (a ==0 )
if (b==0)
Console.WriteLine(“Vo So
Nghiem”);
else
Console.WriteLine(“Vo Nghiem”);

else
{
float x=-b/a;
Console.WriteLine( “Nghiem x =
“+x ) INFORMATION
BUSINESS ; TECHNOLOGY
} //lưu ý: 2 lệnh nên phải dùng {…} 19
Ví dụ: Giải phương trình ax2+bx+c=0 20

if (a == 0)
if (b == 0)
if (c == 0) Console.WriteLine(“Vo So Nghiem”);
else Console.WriteLine(“Vo Nghiem”);
else Console.WriteLine(“ Nghiem x = {0} “, -c/b);
else
{
double delta = b*b - 4*a*c;
if (delta<0) Console.WriteLine(“VN”);
else if (delta == 0)
Console.WriteLine(“N kep:
x1=x2=” + (-b/(2*a)));
else
{
double x1 = (-b + Math.Sqrt(delta))/(2*a) ;
double x2 = (-b -
Math.Sqrt(delta))/(2*a) ;
Console.WriteLine(“x1 = {0} va x2 =
{1}“,x1,x2);
}
}
BUSINESS INFORMATION TECHNOLOGY
20
21

Lệnh switch … case


So sánh nhiều giá trị khác nhau

BUSINESS INFORMATION TECHNOLOGY


22
Lệnh switch … case
Cú pháp
switch (<biểu thức>)
{
case <giá trị 1> : <lệnh1> ;
break;
case <giá trị 2> : <lệnh2> ;
break;
…...
[default : <lệnh> ;
break;]
}

BUSINESS INFORMATION TECHNOLOGY


Lệnh switch làm việc như thế nào? 23

1. <biểu thức> được xác định giá trị


2. Khi <biểu thức> bằng một trong các <giá trị>
được chỉ định sau case:
 Lệnh tương ứng với case đó được thi hành
3. Nếu không có <giá trị> nào bằng với biểu thức:
 Nếu có default, lệnh sau default được thi hành
 Ngược lại, ra khỏi lệnh switch

BUSINESS INFORMATION TECHNOLOGY


23
24
Ví dụ:
 Nhập số ứng với thứ. Cho biết thứ bằng tiếng Anh tương ứng
Console.WriteLine(“Nhap thu (1->7) : ");
int thu =int.Parse(Console.ReadLine());
switch (thu)
{
case 2: Console.WriteLine("Monday"); break;
case 3: Console.WriteLine("Tuesday"); break;
case 4: Console.WriteLine("Wednesday"); break;
case 5: Console.WriteLine("Thursday"); break;
case 6: Console.WriteLine("Friday"); break;
case 7: Console.WriteLine("Saturday"); break;
case 1: Console.WriteLine("Sunday"); break;
default: Console.WriteLine("Error!"); break;
}

BUSINESS INFORMATION TECHNOLOGY


24
25
Lưu ý:
 Các từ khóa switch, case, default, break phải viết ở dạng chữ
thường
 Kiểu của <biểu thức> và kiểu của các <giá trị> có thể là kiểu nguyên,
string, enum
 Từ khóa break thoát khỏi lệnh switch
 Nhớ sử dụng break; sau mỗi case có lệnh cần thực hiện
 Cho phép nhiều case khác nhau cùng thực hiện l ệnh (c ơ ch ế fall
through)
 Ý nghĩa của default : dùng khi biểu thức không bằng với bất kỳ
giá trị nào. Có thể bỏ qua từ khóa này
 Lệnh sau case và default có thể là lệnh switch … case
 Nếu sau mỗi case/default muốn thực hiện nhiều lệnh thì không
cần cặp dấu { ….}

BUSINESS INFORMATION TECHNOLOGY


25
Ví dụ: Nhiều case khác nhau thi hành cùng lệnh 26
 Đọc tháng, cho biết tháng đó có bao nhiêu ngày
int t = int.Parse(Console.ReadLine());
switch (t)
{
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 : Console.WriteLine(“Thang {0} co {1} ngay”,t,31);
break;
case 4 :
case 6 :
case 9 :
case 11: Console.WriteLine(“Thang {0} co {1} ngay”,t,30);
break;
case 2: Console.WriteLine("Thang {0} co 28 hoac 29 ngay”,t);
break;
default : Console.WriteLine(“Nhap thang bi sai !!!");
break;
}

BUSINESS INFORMATION TECHNOLOGY


26
Cách dùng lệnh switch … case hiệu quả 27

 Tách thành các case khác nhau cho mỗi tình


huống
 Cách sắp xếp thứ tự các case
 Đặtcác trường hợp được thực hiện thường xuyên nhất
lên trên và các trường hợp ít thực hiện nhất ở dưới
 Xếp các case theo thứ tự alphabet hoặc thứ tự số
 Dùng default trong trường hợp không thể đạt
được các trường hợp bình thường

BUSINESS INFORMATION TECHNOLOGY


27
28
Tóm tắt
 Toán tử so sánh và toán tử logic được sử dụng
để tạo các <điều kiện> logic
 Lệnh if và if … else cho phép thi hành một
lệnh/khối lệnh khi <điều kiện> đúng hoặc sai
 Thường sử dụng trong lập trình
 Các lệnh if … else có thể được lồng vào nhau
 Lệnh switch dễ dàng kiểm tra một <biểu thức>
với một dãy các <giá trị>

BUSINESS INFORMATION TECHNOLOGY


28
29
Bài tập tại lớp (1)
1. Viết một câu lệnh if kiểm tra hai biến số
nguyên và trao đổi giá trị của chúng nếu giá
trị đầu tiên lớn hơn giá trị thứ hai.
2. Viết một chương trình cho biết dấu của tích
ba số thực mà không cần tính tích của chúng.
Sử dụng một chuỗi các câu lệnh if.
3. Viết một chương trình tìm ra số lớn nhất trong
ba số nguyên nhập vào, sử dụng câu lệnh if
lồng nhau.

BUSINESS INFORMATION TECHNOLOGY


29
30
Bài tập tại lớp (2)
4. Sắp xếp 3 số thực theo thứ tự giảm dần sử
dụng câu lệnh if lồng nhau.
5. Viết chương trình nhập một chữ số (0->9) và
cho biết chữ tiếng Anh tương ứng, bằng cách
sử dụng câu lệnh switch.
6. Viết chương trình tìm ra số lớn nhất trong 5 số
nhập vào.

BUSINESS INFORMATION TECHNOLOGY


30
31
Bài tập tại lớp (3)
7. Viết chương trình áp dụng điểm thưởng cho
điểm trong phạm vi [1..9]. Chương trình đọc
một chữ số. Nếu chữ số từ 1 đến 3, chương
trình sẽ nhân nó cho 10; nếu chữ số từ 4 đến
6, nhân nó cho 100; nếu chữ số từ 7 đến 9,
nhân nó cho 1000. Nếu nó là số không hoặc
nếu giá trị không phải là một chữ số, chương
trình phải báo cáo lỗi.
Sử dụng câu lệnh switch và ở cuối in ra màn
hình giá trị đã được tính toán mới.

BUSINESS INFORMATION TECHNOLOGY


31
Bài tập tại lớp (4) 32

8. * Viết một chương trình chuyển đổi một số trong


phạm vi [0 ... 999] sang một chuỗi tương ứng.
(có thể viết tiếng Việt không dấu).
Ví dụ:
0  “không"
273  “Hai trăm bảy mươi ba"
400  “Bốn trăm"
501  “Năm trăm lẻ một"
711  “Bảy trăm mười một"

BUSINESS INFORMATION TECHNOLOGY


32
Bài tập về nhà 33

Làm các bài tập trong file word


BaiTapReNhanh.docx (gửi trên
LMS)

BUSINESS INFORMATION TECHNOLOGY


33
34

Questions?

BUSINESS INFORMATION TECHNOLOGY


http://academy.telerik.com

You might also like