&
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
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
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
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
Đ
ế
ệ
ệ
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
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
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 } #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 } #include void main()
{ int a, b, c, d, min;
printf(“Nhap a, b, c, d: ”); 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 } #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 } 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&
VC
Bài t p 4ậ
BB
&
VC
Bài t p 5ậ
BB
scanf(“%d%d%d”,a,b,c);
&
VC
Bài t p 6ậ
BB
&
VC
Bài t p 7ậ
BB