&

VC

N i dung

BB

Câu lệnh tuần tự

1

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

2

Câu lệnh rẽ nhánh switch

3

Một số kinh nghiệm lập trình

4

Một số ví dụ minh họa

5

11

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

&

VC

ầ ự

C u trúc tu n t

BB

 Các câu lệnh được thực hiện lần lượt theo thứ tự

tuyến tính từ trên xuống và từ trái sang phải.

 Mỗi lệnh kết thúc bằng dấu ;  Khối lệnh là có từ hai lệnh trở lên và được đặt

trong cặp dấu {…}.

Kh iố L nhệ

 Ví dụ: #include void main() {

int a, b, c; printf(“Nhap 3 so a, b, c : ”; cin >> a >> b >> c; printf(“MAX = ” << (a>b ? (a>c ? a : c) : (b>c ? b : c));

22

}

&

VC

BB

ọ ự   C u trúc ch n l a

 Dựa vào kết quả của biểu thức điều kiện. Tùy theo sự chỉ định của biểu thức này mà những lệnh tương ứng sẽ được thực hiện.

 Các cấu trúc chọn lựa:  Phát biểu if  Phát biểu if-else  Phát biểu if-else lồng  Phát biển switch  Biểu thức điều kiện

33

&

VC

ế

Câu l nh if (thi u)

BB

S

Đ ệ

Trong ( ), cho k t quế (sai = 0, đúng ≠ 0)

if () ;

44

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

đơn ho cặ Câu l nh ệ ẹ ệ Câu l nh ph c (k p gi a ữ { và })

&

VC

ế

Câu l nh if (thi u)

BB

S TAR T

int n =16; if (n%2= =0)

IN P U T n u m

printf(“Number is Event”);

printf(“\n”);

r = n u m M OD 2

%

 Ví d :ụ

if (n%2= =0) {

r = 0

printf(“Number is Event”); printf(“\n”);

}

D IS P L AY "N u m b e r i s E ve n "

S TOP

5

 Chú ý:

&

VC

ế

Câu l nh if (thi u)

BB

void main() {

if (a == 0)

printf(“a bang 0”);

if (a == 0) {

printf(“a bang 0”); a = 2912;

}

66

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

}

&

VC

ủ Câu l nh if (đ )

BB

S

Đ ệ

Trong ( ), cho k t quế (sai = 0, đúng ≠ 0)

if () ;

else

;

77

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

đơn ho cặ Câu l nh ệ ẹ ệ Câu l nh ph c (k p gi a ữ { và })

&

VC

ủ Câu l nh if (đ )

BB

S TA RT

 Ví dụ:

INP UT num

int n =16; if (n %2= =0)

printf(“Number is event”);

% r = num M O D 2

else

Yes

No

printf(“Number is Odd”);

r = 0

DIS P LAY "Num ber is E ven"

DIS PLA Y "Num ber is O dd"

S TOP

88

&

VC

ủ Câu l nh if (đ )

BB

void main() {

if (a == 0)

printf(“a bang 0”);

else

printf(“a khac 0”);

if (a == 0) {

printf(“a bang 0”); a = 2912;

} else

printf(“a khac 0”);

99

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

}

&

VC

ộ ố ư

Câu l nh if ­ M t s  l u ý

BB

Câu lệnh if và câu lệnh if… else là một câu lệnh

đơn.

1010

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

&

VC

ộ ố ư

Câu l nh if ­ M t s  l u ý

BB

 Thiếu cặp dấu (<ĐK>) sau từ khóa if.

if n%2= =0 printf(“Số chẵn”);

if BTĐK S1;  Dư dấu ‘;’

if (BTĐK) ;

S1;

if (n%2= =0); printf(“Số chẵn”);

 Thiếu cặp dấu bao quanh {}

int tongchan; if (n %2= =0) printf(“Số chẵn”); tong = tong +n; printf(“Tổng =“,Tong);

if (ĐK) S1; S2; S3; …

1111

&

VC

ọ ự  if…else l ngồ

BB

C u trúc ch n l a

 Cú pháp:

if ()

;

else if () ;

else if ()

;

else

;

1212

&

VC

ọ ự  if…else l ngồ

BB

C u trúc ch n l a

Ví dụ:

#include #include void main() int m; { printf("Input month: “); scanf(“%d”,&m); if(m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12) printf("Month “ << m << ” has 31 days.“); else if(m==4 || m==6 || m==9 || m==11)

printf("Month “ << m << ” has 30 days.“);

else

if(m==2)

printf("Month “ << m << ” has 28 or 29 days.“);

else

printf("This is not a valid month: ”) << m;

getch();

}

1313

&

VC

ọ ự  if…else l ngồ

BB

C u trúc ch n l a

Ví dụ:

#include #include void main() char ch; {

printf(“Nhập ký tự :”); scanf(“%c”,&ch); if (ch >= '0' && ch <= '9') printf(“Ký tự nhập dạng số”); else if (ch >= 'A' && ch <= 'Z')

printf(“Ký tự nhập là chữ hoa”)

else if (ch >= 'a' && ch <= 'z')

printf(“Ký tự nhập dạng chữ thường”); else printf(“Ký tự nhập là ký tự đặc biệt”)

Bài tập: Tìm số nhỏ nhất trong ba số nhập vào

1414

getch(); }

&

VC

ộ ố ư

Câu l nh if ­ M t s  l u ý

BB

Câu lệnh if có thể lồng vào nhau và else sẽ

tương ứng với if gần nó nhất.

if (a != 0)

if (b > 0)

printf(“a != 0 va b > 0”);

else

printf(“a != 0 va b <= 0”);

if (a !=0) {

if (b > 0)

printf(“a != 0 va b > 0”);

else

printf(“a != 0 va b <= 0”);

1515

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

}

&

VC

ộ ố ư

Câu l nh if ­ M t s  l u ý

BB

Nên dùng else để loại trừ trường hợp.

if (delta < 0)

printf(“PT vo nghiem”);

if (delta == 0)

printf(“PT co nghiem kep”);

if (delta > 0)

printf(“PT co 2 nghiem”);

if (delta < 0)

else

printf(“PT vo nghiem”); // delta >= 0 if (delta == 0)

printf(“PT co nghiem kep”);

else

1616

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

printf(“PT co 2 nghiem”);

&

VC

ế

Câu l nh switch (thi u)

BB

ế

switch () {

Đ

ế

case :;break; case :;break; …

S

Đ

ế

ế

ế

S

}   là  ứ ể bi n/bi u th c cho  ị ờ ạ . giá tr  r i r c

đơn ho c ặ

 :  ệ ố ệ

kh i l nh {}.

1717

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

&

VC

ế

Câu l nh switch (thi u)

BB

void main() {

int a; printf(“Nhap a: ”); scanf(“%d”,&a);

switch (a) {

case 1 : printf(“Mot”); break; case 2 : printf(“Hai”); break; case 3 : printf(“Ba”); break;

}

1818

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

}

&

VC

ủ Câu l nh switch (đ )

BB

ế

switch () {

Đ

ế

ệ ệ ;break; ;break;

S

Đ

ế

: : … default:

;

S

}

1919

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

&

VC

ủ Câu l nh switch (đ )

BB

void main() {

int a; printf(“Nhap a: ”); scanf(“%d”,&a);

switch (a) {

case 1 : printf(“Mot”); break; case 2 : printf(“Hai”); break; case 3 : printf(“Ba”); break; default : printf(“Ko biet doc”);

}

2020

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

}

&

VC

ủ Câu l nh switch (đ )

BB

Ví dụ:

case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("tháng này có 31 ngày" ; break ;

case 2: printf("tháng này có 28 ngày" ; break; case 4: case 6: case 9: case 11: printf("tháng này có 30 ngày" ; break; default: printf("Bạn đã nhập sai tháng, không có tháng này" );

} getch();

#include #include void main () { clrscr(); int th; printf(“Cho biết tháng cần tính: “ ; scanf(“%d”,&th) ; switch (th) {

2121

}

&

VC

ộ ố ư

Câu l nh switch ­ M t s  l u ý

BB

Câu lệnh switch là một câu lệnh đơn và có thể

lồng nhau.

2222

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

&

VC

ộ ố ư

Câu l nh switch ­ M t s  l u ý

BB

Các giá trị trong mỗi trường hợp phải khác nhau.

switch (a) {

case 1 : printf(“Mot”); break; case 1 : printf(“MOT”); break; case 2 : printf(“Hai”); break; case 3 : printf(“Ba”); break; case 1 : printf(“1”); break; case 1 : printf(“mot”); break; default : printf(“Khong biet doc”);

2323

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

}

&

VC

ộ ố ư

Câu l nh switch ­ M t s  l u ý

BB

switch nhảy đến case tương ứng và thực hiện đến khi nào gặp break hoặc cuối switch sẽ kết thúc.

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

2424

&

VC

ộ ố ư

Câu l nh switch ­ M t s  l u ý

BB

Tận dụng tính chất khi bỏ break;

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

2525

&

VC

ệ Kinh nghi m l p trình

BB

 Câu l nh if

 Câu l nh switch ệ

switch (a) { case 1:

case 2:

case 3:

case 4:

if (a == 1) printf(“Mot”); if (a == 2) printf(“Hai”); if (a == 3) printf(“Ba”); if (a == 4) printf(“Bon”); if (a == 5) printf(“Nam”);

printf(“Mot”); break; printf(“Hai”); break; printf(“Ba”); break; printf(“Bon”); break; printf(“Nam”);

2626

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

case 5: }

&

VC

ệ Kinh nghi m l p trình

BB

 Câu l nh switch ệ

 Câu l nh if

if (a == 3.14)

printf(“OK”);

if (a < 10)

printf(“OK”);

if (a == 1)

printf(“OK”);

if (a == 2 || a == 3)

2727

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

printf(“OK”);

&

VC

BB

Câu h i và bài t p

1. Trình bày cú pháp, ý nghĩa, lưu đồ và cho ví dụ về các cấu

trúc:

− if … else … − switch (…) − while (…) − do … while (…) − for (… ; … ; …)

2828

&

VC

BB

Câu h i và bài t p

2. Câu nào sau đây là phần đầu của câu lệnh if hợp lệ? Đối

với câu lệnh không hợp lệ, hãy cho biết tại sao?

− if ( delta => 0 ) … − if ( delta >= 0 ) … − if ( delta != 0 ) … − if (delta ! = 0 ) … − if ( 1 + 2 ) … − if ( 2 – 2 ) …

− if ( delta > 0 ) … − if delta < 0 … − if ( delta == 0 ) … − if ( delta = = 0 ) … − if ( delta =< 0 ) … − if ( delta <= 0 ) …

2929

&

VC

BB

Câu h i và bài t p

3. Hãy rút gọn các đoạn chương trình sau:

if ( a > b ) {

if ( a > b ) {

if ( a > b ) {

c = a;

if ( a > b ) {

a –= b; c = x;

a = 1; c = x;

} else {

} else {

} else {

b = x; a = 1;

c = a; a = 0;

a += b; c = x;

}

b = 2; c = x;

} else {

}

}

b = x; a = 0;

3030

}

&

VC

Bài t p th c hành

BB

1. Nhập một số bất kỳ. Hãy đọc giá trị của số nguyên

đó nếu nó có giá trị từ 1 đến 9, ngược lại thông báo không đọc được.

2. Nhập một chữ cái. Nếu là chữ thường thì đổi sang

chữ hoa, ngược lại đổi sang chữ thường.

3. Giải phương trình bậc nhất ax + b = 0. 4. Giải phương trình bậc hai ax2 + bx + c = 0.

3131

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

&

VC

Bài t p th c hành

BB

5. Nhập 4 số nguyên a, b, c và d. Tìm số có giá trị

nhỏ nhất (min).

6. Nhập 4 số nguyên a, b, c và d. Hãy sắp xếp giá trị

của 4 số nguyên này theo thứ tự tăng dần.

7. Tính tiền đi taxi từ số km nhập vào. Biết:

a. 1 km đầu giá 15000đ b. Từ km thứ 2 đến km thứ 5 giá 13500đ c. Từ km thứ 6 trở đi giá 11000đ d. Nếu trên 120km được giảm 10% tổng tiền.

3232

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

&

VC

Bài t p th c hành

BB

8. Nhập vào tháng và năm. Cho biết tháng đó

có bao nhiêu ngày.

9. Nhập độ dài 3 cạnh 1 tam giác. Kiểm tra đó có phải là tam giác không và là tam giác gì?

3333

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

&

VC

Bài t p 1 (if)

BB

#include

void main() {

int n; printf(“Nhap mot so nguyen: ”); scanf(“%d”,&n); if (n == 1)

printf(“Mot”);

else

if (n == 2)

printf(“Hai”);

… else

printf(“Khong biet doc”);

3434

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

}

&

VC

Bài t p 1 (switch)

BB

#include

void main() {

int n; printf(“Nhap mot so nguyen: ”; scanf(“%d”,&n); switch (n) {

case 1: printf(“Mot”); break; case 2: printf(“Hai”); break; case 3: printf(“Ba”); break; … default: printf(“Ko biet doc”);

}

3535

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

}

&

VC

Bài t p 2ậ

BB

#include

void main() {

char ch; printf(“Nhap mot ky tu: ”; scanf(“%c”,&ch);

if (ch >= ‘a’ && ch <= ‘z’)

ch = ch – 32;

else

if (ch >= ‘A’ && ch <= ‘Z’)

ch = ch + 32;

printf(“Ky tu sau khi doi:”,ch);

3636

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

}

&

VC

Bài t p 3ậ

BB

#include #include

void main() {

int a, b; printf(“Nhap a, b: ”); scanf(“%d%d”,&a,&b; if (a == 0)

if (b == 0)

printf(“Phuong trinh VSN”);

else

printf(“Phuong trinh VN”);

else

printf(“Nghiem = “)<

3737

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

}

&

VC

Bài t p 4ậ

BB

#include

void main() {

int a, b, c; printf(“Nhap a, b, c: ”; scanf(“%d%d%d”,a,b,c); if (a == 0) {

// Giai PT Bac 1 o day

} else {

// Giai PT Bac 2 o day

}

3838

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

}

&

VC

Bài t p 5ậ

BB

#include

void main() {

int a, b, c, d, min; printf(“Nhap a, b, c, d: ”);

scanf(“%d%d%d”,a,b,c);

min = a; if (b < min) min = b; if (c < min) min = c; if (d < min) min = d;

printf(“So nho nhat la”)<< min;

3939

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

}

&

VC

Bài t p 6ậ

BB

#include

void main() {

int a, b, c, d, tam;

printf(“Nhap a, b, c, d: ”); scanf(“%d%d%d”,a,b,c);

if (a > b) { tam = a; a = b; b = tam; } … printf(“Cac so theo thu tu tang dan: ”); printf(“%d&d&d&d”,a,b,c,d);

4040

ề NMLT ­ Câu l nh đi u ki n và r  nhánh

}

&

VC

Bài t p 7ậ

BB

Nên khai báo hằng số lưu giá tiền và km

 #define G1 15000  #define G2 13500  #define G3 11000

Cách tính tiền dựa trên số km n

 n = 1  T = G1  2 ≤ n ≤ 5  T = G1 + (n – 1)*G2;  n > 5  T = G1 + 4*G2 + (n – 1 – 4)*G3;

n > 120  T = T*0.9;

4141

ề NMLT ­ Câu l nh đi u ki n và r  nhánh