Professional Documents
Culture Documents
Chương 3
Chương 3
1
&
VC
BB
Nội dung
3.1.1 Toán tử if
a. If thiếu
❖ Ý nghĩa:
❖ Cú pháp • Expression: biểu thức điều
kiện
if (expression)
• Statement: lệnh
statement 1;
• Nếu expression đúng thì
if (expression) statement được thực hiện.
{ Nếu sai thì bỏ qua lệnh
statement 1;
statement 2; ❖ Sơ đồ khối
…
}
S
<expression>
Đ
<statement 1>
4
&
VC
BB
Câu lệnh if (thiếu)
vd 1: if (a > 0)
printf(“a lon hon 0”);
• ???
Nếu a=5 a lon hon 0
• ???
Nếu a=-5 Bỏ qua lệnh
5
&
VC
BB
Câu lệnh if (thiếu)
vd 2:
if (a == 0)
{
printf(“a bang 0”);
a = 2912;
}
• ????
Nếu a=-5 Bỏ qua lệnh
b. If đủ: if … else
❖ Ý nghĩa:
• Expression: biểu thức điều
❖ Cú pháp kiện
• Statement: lệnh, block:khối
if (expression)
statement 1;
• Nếu expression đúng thì
else statement 1 được thực hiện.
statement 2; Nếu sai thì statement 2
thực hiện
if (expression)
{ ❖ Sơ đồ khối
statement block 1;
}
else S
<expresstion> <statement 2>
{
statement block 2: Đ
}
<statement 1>
7
&
VC
BB
Câu lệnh if (đủ)
vd 3:if (a == 0)
printf(“a bang 0”);
else
printf(“a khac 0”);
vd 4:
if (a == 0)
{
Nếu a=3 •??? a khac 0
printf(“a bang 0”);
a = 2912;
}
else
a=0 •???
Nếu printf(“a khaca 0”);
bang 0
8
&
VC
BB
4.1.1 Câu lệnh điều kiện if
Cú pháp:
Biện
luận a
Nếu Nếu
X=-b/a
b=0 b<>0
ptvsn ptvn
10
&
VC
BB
Ví dụ 5
❖ Giải phương trình dạng ax + b=0
Nếu b=0 ptvsn
Nếu a=0
Nếu
Biện luận b!=0 ptvn
a
Nếu a
X=-b/a
khác 0
11
&
VC
BB
Ví dụ 5
❖ Giải phương trình dạng ax + b=0
Nếu b=0 ptvsn
Nếu a=0
Nếu
Biện luận b!=0 ptvn
a
Nếu a
If (a==0) X=-b/a
khác 0
if(b==0)
printf(“ptvsn”);
Else
printf(“ptvn”);
Else
printf(“pt có nghiệm %f”,-b/a); 12
&
VC 4.1.2 Toán tử else if
BB
Có dạng if…else if
❖ Viết chương trình xếp loại kết quả học tập dựa vào
điểm trung bình khoá học theo tiêu chí sau:
0 Yếu 4 Tb yếu 5.5 Tb 7 khá 8.5 Giỏi 10
14
&
VC
BB
Ví dụ 6:
❖ Viết chương trình xếp loại kết quả học tập dựa vào
điểm trung bình khoá học theo tiêu chí sau:
Xét dtb
0 Yếu 4 Tb yếu 5.5 Tb 7 khá 8.5 Giỏi 10
15
&
VC
BB
Ví dụ 6:
//Trường hợp thứ nhất
if(dtb<4) {
printf("Loại yếu");
//Trường hợp thứ hai
} else if(dtb<5.5) {
printf("Loại trung bình yếu");
//Trường hợp thứ ba
} else if(dtb<7) {
printf("Loại tb");
//Trường hợp thứ tư
} else if(dtb<8.5) {
printf("Loại khá");
//Trường hợp thứ năm
} else {
printf("Loại giỏi");
}
16
&
VC
BB
Bài tập
Bài 1: Giải phương trình bậc 2: ax2+bx+c=0
Thứ 6
Thứ 7
Chủ nhật Câu lệnh điều kiện và rẽ nhánh
19
&
VC
BB
Đặt vấn đề
Kiểm tra bài cũ
Thứ 2
Thứ 3
Thứ 4
Thứ 5
n
Thứ 6
Thứ 7
Chủ nhật Câu lệnh điều kiện và rẽ nhánh
20
&
VC
BB
Đặt vấn đề
Kiểm tra bài cũ
#include<stdio.h>
Nhập vào một số nguyên, kiểm tra xem đó là thứ mấy
main(){
trong tuần
int n;
printf("nhap n= "); If (n==2) printf(“ Thu 2\n”
scanf("%d",&n);
if (n==2) printf ("thu 2\n");
else if (n==3) printf ("thu 3\n"); Else
else if (n==4) printf ("thu 4\n");
else if (n==5) printfelse If (n==4)
("thu 5\n"); printf(“ Thu
4\n”6\n");
else if (n==6) printf ("thu
else if (n==7) printf ("thu 7\n");
else printf ("cn\n");
}
Cú pháp Trong đó
switch (biến/biểu thức) - biến/ biểu thức
{ phải trả về là
case <gt1>: lệnh 1;break; hằng nguyên
case <gt2>: lệnh 2;break; hoặc kí tự
…. - gt1, gt2,..., gtn
case <gtn>: lệnh n;break; là các biểu thức
[default: lệnh n;] hằng nguyên
} hoặc ký tự và
chúng phải khác
nhau.
23
&
VC Toán tử switch
BB
begin
Cú pháp
<Biến/BT> Đ <Lệnh 1>
switch (biến/biểu thức) = <GT1> break;
{ S
case <gt1>: lệnh 1;break;
<Biến/BT> Đ <Lệnh 2>
case <gt2>: lệnh 2;break; = <GT2> break;
….
S
case <gtn>: lệnh n;break;
[default: lệnh n;]
} <Lệnh n>
Sơ đồ khối
end 24
&
VC Toán tử switch
BB
Đọc a
1 2 3 4 5
26
&
VC
BB
Ví dụ 1
Nhập vào 1 số từ 1->5 và in ra cách đọc tương ứng:
❖ Câu lệnh if ❖ Câu lệnh switch
if (a == 1) switch (a)
printf(“Mot”); {
if (a == 2) case 1: printf(“Mot”);
printf(“Hai”); break;
if (a == 3) case 2: printf(“Hai”);
printf(“Ba”); break;
if (a == 4) case 3: printf(“Ba”);
printf(“Bon”); break;
if (a == 5) case 4: printf(“Bon”);
printf(“Nam”); break;
case 5: printf(“Nam”);
}
27
&
VC
BB
Một số lưu ý
Ví dụ 2:
{
switch (a)
{
case 1 : printf(“Mot”); break;
case 2 : switch (b)
{
case 1 : printf(“A”); break;
case 2 : printf(“B”); break;
} break;
case 3 : printf(“Ba”); break;
default : printf(“Khong biet doc”);
}
28
}
&
VC
BB
Một số lưu ý
❖Các giá trị trong mỗi trường hợp phải khác nhau.
Ví dụ 3
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”);
}
❑ Cú pháp
goto nhãn;
nhãn : dòng lệnh;
❑ Hoạt động
int i=0;
quaylai: printf("i= %d", i,"\t");
i=i+1;
if (i<10)
goto quaylai;
Bài 1: Nhập vào tháng và năm. Cho biết tháng đó có bao nhiêu ngày.
Bài 2: 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ì?
3.2.2 Ví dụ
❖Đáp án:
printf(“Chào bạn\n”);
printf(“Chào bạn\n”);
printf(“Chào bạn\n”);
printf(“Chào bạn\n”);
printf(“Chào bạn\n”);
printf(“Chào bạn\n”);
printf(“Chào bạn\n”);
printf(“Chào bạn\n”);
printf(“Chào bạn\n”);
printf(“Chào bạn\n”);
Câu lệnh lặp
37
&
VC
BB
Đặt vấn đề
❑ Cú pháp:
for (Exp1; Exp2; Exp3)
statement;
❑ Giải thích:
Exp= Expression
Statement: lệnh
Exp1: khai báo và khởi
tạo giá trị ban đầu cho Ví dụ : i: =1
biến
Exp2: biểu thức điều Ví dụ :
kiện i<=10
Exp3:cập nhật biến
vòng lặp, thay đổi giá
Ví dụ i++
trị biến vòng lặp
❑ Cú pháp:
❑ Sơ đồ khối
for (Exp1; Exp2; Exp3)
statement;
begin
<Exp1>
<Exp3>
Đ
<Exp2> <statement>
S
end 41
Câu lệnh lặp
&
VC 3.2.1 Cấu trúc vòng lặp for
BB
❑ Cú pháp:
for (Exp1; Exp2; Exp3)
statement;
❑ Hoạt động:
Ví dụ 1: In ra các số từ 0-9
i=0 in ra i
Exp1: i=0
i=1 in ra i
int i;
i= 2 in ra i Exp 2: i<10 Lệnh: in i
for (i = 0; i < 10; i++)
… Exp 3: i++
printf(“%d\n”, i);
i=9 in ra i
Ví dụ 1: In ra các số từ 0-9
i=0 in ra i
Exp1: i=0
i=1 in ra i
int i;
i= 2 in ra i Exp 2: i<10 Lệnh: in i
for (i = 0; i < 10; i++)
… Exp 2: i++
printf(“%d\n”, i);
i=9 in ra i
int i;
for (i = 0; i < 10;++i)
printf(“%d\n”, i);
Ví dụ 1: In ra các số từ 0-9
i=0 in ra i
Exp1: i=0
i=1 in ra i
int i;
i= 2 in ra i Exp 2: i<10 Lệnh: in i
for (i = 0; i < 10; i++)
… Exp 2: i++
printf(“%d\n”, i);
i=9 in ra i
Ví dụ 2: int i;
for (i = 0; i < 10; i=i+1)
printf(“%d\n”, i);
Ví dụ 3: int i;
for (i = 0; i < 10; i+=1)
printf(“%d\n”, i);
Câu lệnh lặp
45
&
VC
BB
Một số lưu ý
Câu lệnh for lồng vào nhau
Ví dụ 4:
0 1 2 3 456 7 8 9
0 **********
1 **********
2 **********
3 **********
4 **********
Ví dụ 4:
0 1 2 3 456 7 8 9
0 **********
1 **********
2 **********
3 **********
4 **********
Ví dụ 4:
0 1 2 3 456 7 8 9
0 **********
1 **********
2 **********
3 **********
4 **********
int i;
for
int (i
i; = 0; i < 10; i++)
i=0; printf(“%d\n”, i);
for (; i < 10; i++)
printf(“%d\n”, i);
int i;
for (i = 0; i < 10; )
i++)
{
printf(“%d\n”, i);
printf(“%d\n”, i);
i=i+1;
}
Cú pháp:
while (biểu thức điều kiện)
Lệnh;
S
end
…
S=S*(n-1)
S=S*n;
int s=1,n;
printf("n= ");scanf("%d",&n);
for(int i=1; i<=n ;i++)
s=s*i;
printf("s=1*2*3*...*%d= %d",n,s);
67
&
VC
BB
3.3.2 Cấu trúc lặp do…while
Cú pháp: Sơ đồ khối
do
{ begin
Lệnh;
}
while (biểu thức điều kiện);
<Lệnh>
Hoạt động Đ
<BT đk>
B1: thực hiện lệnh
B2: kiểm tra điều kiện, S
chừng nào điều kiện còn
end
đúng thì thực hiện lệnh,
điều kiện sai thì thoát khỏi
vòng lặp 68
Câu lệnh lặp
&
VC
BB
Ví dụ 1:
In các số từ 0-9
int i;
for (i = 0; i < 10; i++)
printf(“%d\n”, i);
int i = 0;
while (i < 10)
{
printf(“%d\n”, i);
i++;
}
int i = 0;
do
{
printf(“%d\n”, i);
i++;
} 69
Câu lệnh lặp
while (i < 10);
&
VC
BB
Ví dụ 2
Ví dụ 4: int a = 1, b;
do
{
b = 1;
do
{
printf(“%d\n”, a + b);
b = b + 2;
}
while (b < 20);
a++;
}
while (a < 20);
Câu lệnh lặp
71
&
VC
BB
Một số lưu ý
❑ Ý nghĩa
Lệnh break cho phép thoát ra khỏi vòng
lặp chứa nó ngay lập tức.
- Break
Ví dụ dung
1: trong vòng lặp và câu lệnh switch
for (int i=1; i < =12;i++ )
{ if (i==5) break;
printf(“Day la thang %d\n", i);
}
75
&
VC 3.4.2 Câu lệnh continue
BB
❑ Ý nghĩa
Ví dụ 2:
for (int i=1; i < =12;i++ )
{ if (i==5) continue;
printf(“Day la thang %d\n", i);
}
Câu lệnh lặp
76
&
VC
BB
Ví dụ 3
main(){
int pass, n;
printf("Nhap n= "); scanf("%d",&n);
for (int i=0;i<n;i++)
{
printf("Nhap pass= "); scanf("%d",&pass);
if (pass==1) break;
printf("Ban nhap sai\n");
}
}
Câu lệnh lặp
79
&
VC
BB
Bài tập
Cho biết kết quả sau khi thực hiện đoạn code sau
int i, a=5;
for(i=0;i<=3;i++)
{
if (i==2)
continue;
a+=1;
if(i>1)
break;
printf("%d",a);
}