10/26/2025
1
Trường Đại học Thủ Dầu Một
Viện Công nghệ s
CƠ SỞ LẬP TRÌNH
Chương III
Cấu trúc điều khiển
Cấu trúc điều khiển
Cấu trúc tuần tự
Cấu trúc lựa chọn
Cấu trúc lặp
2
Chương 3. Cấu trúc điều khiển
Cấu trúc tuần tự
3
Ø Các lệnh trong chương trình
thực hiện tuần tự từ trên
xuống.
Chương 3. Cấu trúc điều khiển
Cấu trúc tuần tự
4
void main()
{
int a, b, tong, hieu, tich;
float thuong;
printf("Nhap vao a: ");
scanf("%d",&a);
printf("Nhap vao b: ");
scanf("%d",&b);
tong = a + b;
hieu = a - b;
tich = a * b;
thuong = (float)a / b; //Ép kiểu
printf("Tong=%d ",tong);
printf("\nHieu=%d",hieu);
printf("\nTich=%d",tich);
printf("\nThuong= %f",thuong);
}
Bt đu
Kết thúc
1 2
3 4
10/26/2025
2
Cấu trúc lựa chọn
Cấu trúc lựa chọn cho phép máy tính chọn
thực hiện một khối lệnh nào đó dựa vào
kết quả của biểu thức điều kiện.
Có hai dạng:
if
if … else
5
Chương 3. Cấu trúc điều khiển
Cấu trúc lựa chọn if
6
if (biểu thức điều kiện)
{
<khối lệnh> ;
}
Nếu biểu thức điều kiện cho kết
quả true thi thực hiện khối lệnh
bên trong if.
Chương 3. Cấu trúc điều khiển
Cấu trúc lựa chọn if
7
void main()
{
int k;
printf("Nhap mot so [1..10]: ");
scanf("%d",&k);
if (k < 1 || k > 10)
{
printf("So vua nhap khong hop
le");
}
}
Ø Ví dụ: Viết chương trình nhập vào một số nguyên từ 1
đến 10, nếu nhập sai thì hiển thị thông báo
Bt đu
Kết thúc
Chương 3. Cấu trúc điều khiển
Cấu trúc lựa chọn
8
if (biểu thức điều kiện)
{
<khối lệnh 1>;
}
else
{
<khối lệnh 2>;
}
Nếu biểu thức điều kiện cho kết qu true thithc hin khi
lệnh 1, ngược lại thi thực hiện khi lnh 2
Ø Cấu trúc if … else
5 6
7 8
10/26/2025
3
Chương 3. Cấu trúc điều khiển
Cấu trúc lựa chọn
9
Ø Ví dụ: Nhập vào số nguyên a và b, nếu a là bội số của b
thì in thông báo "a là bội số của b", ngược lại in "a không
là bội số của b"
Cấu trúc lựa chọn
Chương trình cài đặt:
void main()
{
int a, b;
printf("Nhap so a:");
scanf("%d",&a);
printf("Nhap so b:");
scanf("%d",&b);
if(a%b==0)
printf("%d la boi so cua %d",a,b);
else
printf("%d khong la boi so cua %d",a,b);
}
10
Chương 3. Cấu trúc điều khiển
Cấu trúc lựa chọn
11
Ø Giải và biện luận phương trình bậc1 ax+b=0
Cấu trúc lựa chọn
void main()
{
float a, b;
printf("Nhap so a:");
scanf("%f",&a);
printf("Nhap so b:");
scanf("%f",&b);
if (a==0)
if (b==0)
printf("Phuong trinh vo so nghiem");
else
printf("Phuong trinh vo nghiem");
else
printf("Phuong trinh co nghiem x = %.2f", -b/a);
}
12
9 10
11 12
10/26/2025
4
Chương 3. Cấu trúc điều khiển
Cấu trúc switch
13
switch (biểu thức)
{
case n1:
các câu lệnh ;
break ;
case n2:
các câu lệnh ;
break ;
………
case nk:
<các câu lệnh> ;
break ;
[default: các câu lệnh]
}
Giá trị biểu thức = n1
Giá trị biểu thức = n2
Các trường hợp còn lại
Cấu trúc switch
n
i
là các hằng sô nguyên hoặc ký tư.
n
i
phụ thuộc vào giá tr của biểu thức sau
switch
- Nếu: giá trị của biểu thức = n
i
thi thực hiện câu lệnh
sau case n
i
.
- Nếu gia trbiểu thức không thỏa các n
i
thi thực hiện
câu lệnh sau default nếu có, hoặc thoát khỏi câu
lệnh switch.
- Mặc định chương trình thực hiện tuần tự các câu
lệnh của các case n
i
, do đó sau mỗi case phải dùng
lệnh break để thoát khỏi switch.
14
Nhập vào số nguyên n có giá trị từ 1 đến 12. In ra màn hình tháng tương ứng,
nếu n có giá trị <1 hoặc >12 thì in ra chuỗi "tháng không hợp lệ".
void main()
{
int n;
printf("Nhap vao n (1<=n<=12): ");
scanf("%d", &n);
switch (n)
{
case 1: printf("thang mot"); break;
case 2: printf("thang hai"); break;
case 3: printf("thang ba"); break;
case 12: printf("thang 12"); break;
default : printf("thang khong hop le");
}
}
15
Cấu trúc lặp
16
13 14
15 16
10/26/2025
5
Chương 3. Cấu trúc điều khiển
Cấu trúc lặp For
17
for (<khởi gán> ; <điều kiện lặp> ; <cập nhật>)
{
<khối lệnh>;
}
Cấu trúc lặp For
Cấu trúc For
Khởi gán: khởi gán giá trị ban đầu cho biến
điều khiển vòng lặp
Điều kiện lặp: kiểm tra điều kiện thực hiện
vòng lặp
Cập nhật: cập nhật gtrị của biến điều khiển
vòng lặp
Bất kỳ đối số nào trong câu lệnh for đều thể
thiếu nhưng phải dấu chấm phẩy (;) để phân
cách.
18
Cấu trúc lặp For
Các bước thực hiện vòng lặp for
Bước 1: Khởi gán
Bước 2: Kiểm tra điều kiện
- Nếu giá trị của biểu thức điều kiện bằng true thi
- Thực hiện các lệnh của vòng lặp
- Cập nhật biến điều khiển ng lặp. Quay trơ
lại bước 2.
- Ngược lại thoát khỏi lặp.
19
Chương 3. Cấu trúc điều khiển
Cấu trúc lặp For
20
Ø Ví dụ: viết chương trình
in ra bảng cửu chương n,
với n là số nguyên
dương nhập từ bàn phím.
17 18
19 20
10/26/2025
6
Cấu trúc lặp For
21
Chương 3. Cấu trúc điều khiển
22
Ø Ví dụ: viết chương
trình nhập số n nguyên
dương từ bàn phím.
Tính tổng các số từ 1
đến n
Cấu trúc lặp For
23
Cấu trúc lặp For
24
21 22
23 24
10/26/2025
7
Cấu trúc lặp - While
< Khởi gán>
while (<điều kiện lặp>)
{
lệnh/ khối lệnh;
<cập nhật>
}
@
Lưu ý: Cách hoạt động của while giống
for
25
Chương 3. Cấu trúc điều khiển
Cấu trúc lặp - While
26
Ø Ví dụ: viết chương trình nhập số n nguyên dương từ bàn phím. Tính
tổng các số từ 1 đến n
Chương 3. Cấu trúc điều khiển
Cấu trúc lặp Do … While
27
<Khởi gán>
do
{
<khối lệnh>;
<cập nhật>;
} while (điều kiện);
ØThực hiện lệnh trước, sau đó
kiểm tra điều kiện
ØLệnh được thực hiện đến khi biểu
thức có giá trị sai
Chương 3. Cấu trúc điều khiển
Cấu trúc lặp Do … While
28
Ø Ví dụ: nhập các số nguyên dương giá trị <=10,
xuất ra tổng các số hợp lệ.
25 26
27 28
10/26/2025
8
Cấu trúc lặp Do … While
Nhận xét
Cấu trúc For và While: kiểm tra điều kiện
trước khi thực hiện lệnh lặp, do đó các lệnh
lặp có thể không thực hiện lần nào.
Cấu trúc do … while: thực hiện lệnh trước,
kiểm tra điều kiện sau, do đó các lệnh có thể
được thực hiện ít nhất là 1 lần.
29
Lệnh break và return
break: thoát khỏi cấu trúc lệnh switch,
while, for, do…while đang chứa nó.
return: thoát khỏi chương trình đồng thời
cũng thoát khỏi các vòng lặp và trả về kết
quả.
30
Lệnh continue
Lệnh continue được sử dụng trong các
vòng lặp while, for, do…while.
Khi lệnh continue được gọi thì chương
trình sẽ kết thúc vòng lặp hiện tại và bắt
đầu vòng lặp mới tiếp theo.
31
Chương 3. Cấu trúc điều khiển
Lệnh break và return
32
Ø Ví dụ: Cho phép người dùng nhập liên tục số nguyên
dương, nếu nhập số nguyên âm thì dừng
29 30
31 32
10/26/2025
9
Chương 3. Cấu trúc điều khiển
Lệnh continue
33
Ø Ví dụ: In ra màn hình giá trị từ 10 đến 20 trừ đi sô 13
và sô 17.
Bài tập
1. Viết chương trình tính tổng các số chính
phương nhỏ hơn N (N nguyên dương)
2. Viết chương trình
a) Tính n! bằng cách sử dụng vòng lặp, n
nguyên dương
b) Tính e
n
bằng cách sử dụng vòng lặp, n
nguyên dương
34
Bài tập
3. Viết chương trình nhập vào 2 số nguyên dương a và b.
- Nếu cả a và b đều là số chẵn thì xuất câu:
“a va b la hai so chan”
- Nếu trong 2 số a và b chỉ có một số chẵn thì xuất câu:
“chi co mot so chan”
- Nếu trong 2 số a và b không có số chẵn thì xuất câu:
“a, b la hai so le”
4. Giải phương trình dạng: ax
2
+bx+c = 0
5. Trong mặt phẳng tọa độ OXY cho hai đường tròn, mỗi
đường tròn biết tọa độ tâm và bán kính. Hãy kiểm tra
xem hai đường tròn này giao nhau, cắt nhau hay tiếp
xúc nhau.
35
Bài tập
6. Cho một hình chữ nhật có các cạnh song song với
các trục tọa độ, tọa độ góc trái dưới là (x1, y1)
tọa độ góc phải trên là (x2, y2). Hãy kiểm tra xem
điểm M(x, y) có nằm trong hình chữ nhật trên hay
không? (nằm trên cạnh được xem như nằm trong).
Giả sử tọa độ các điểm là các số nguyên.
7. Tính tổng S = 1 +
+
+ +

với n là số tự
nhiên 0.
8. Tính tổng S =
+
+ +

với n là số tự nhiên
1.
36
33 34
35 36
10/26/2025
10
Bài tập
9. Tính tổng S(x,n) = +

+

+ +
...
với n là số
tự nhiên 1
10. Tính tổng S =− +
!
!
+ + (−1)
!
với n là số tự
nhiên 0
11. Giả sử n0 và x là số thực. Hãy viết hàm tính giá trị của biểu
thức sau đây:
S = 1

+

+ (−1)
()
12. Tính S = 1.2 + 2.3.4 + + + 1 (2)
13. Cho tổng S=1+3+5+...+(2n+1) với n0 và số nguyên M. Hãy
tìm giá trị n nhỏ nhất sao cho S>M
37
Bài tập
14.Nhập số nguyên tố n. Hãy tìm số nguyên tố kế tiếp sau
số n
15.Nhập số nguyên n. Hãy tìm số nguyên tố gần nhất
16.Có 100 bó cỏ biết: trâu đứng ăn năm, trâu nằm ăn ba,
lọm khọm trâu già ba con một bó. Viết chương trình liệt
kê các phương án có thể
17.Cần có 200000 đồng từ ba loại giấy bạc 1000 đồng,
2000 đồng, 5 đồng. Viết chương trình tìm tất cả các
phương án có thể.
18.Viết chương trình hiển thị tất cả các số có 3 chữ số sao
cho tổng các chữ số bằng tích của chúng
38
Bài tập
19.Viết hàm kiểm tra xem một số nguyên
dương cho trước có phải là chứa toàn
các chữ số nguyên tố hay không? Ví dụ:
23527, 22, ...
20.Viết hàm kiểm tra xem một số nguyên
dương n có phải là số đối xứng hay
không? Ví dụ: 12521, 797, ...
39
37 38
39

Preview text:

10/26/2025 Cấu trúc điều khiển
Trường Đại học Thủ Dầu Một • Cấu trúc tuần tự
Viện Công nghệ số • Cấu trúc lựa chọn • Cấu trúc lặp CƠ SỞ LẬP TRÌNH Chương III
Cấu trúc điều khiển 2 1 2 Cấu trúc tuần tự Cấu trúc tuần tự
Ø Các lệnh trong chương trình void main() Bắt đầu {
thực hiện tuần tự từ trên
int a, b, tong, hieu, tich; xuống. float thuong;
printf("Nhap vao a: ");
scanf("%d",&a);
printf("Nhap vao b: ");
scanf("%d",&b);
tong = a + b;
hieu = a - b;
tich = a * b;
thuong = (float)a / b; //Ép kiểu
printf("Tong=%d ",tong);
printf("\nHieu=%d",hieu);
printf("\nTich=%d",tich);
printf("\nThuong= %f",thuong); Kết thúc }
Chương 3. Cấu trúc điều khiển 3
Chương 3. Cấu trúc điều khiển 4 3 4 1 10/26/2025 Cấu trúc lựa chọn
Cấu trúc lựa chọn if
• Cấu trúc lựa chọn cho phép máy tính chọn
if (biểu thức điều kiện)
thực hiện một khối lệnh nào đó dựa vào {
kết quả của biểu thức điều kiện. ; • Có hai dạng: }
Nếu biểu thức điều kiện cho kết – if
quả true thì thực hiện khối lệnh – if … else bên trong if. 5
Chương 3. Cấu trúc điều khiển 6 5 6
Cấu trúc lựa chọn if
Cấu trúc lựa chọn
Ø Ví dụ: Viết chương trình nhập vào một số nguyên từ 1
Ø Cấu trúc if … else
đến 10, nếu nhập sai thì hiển thị thông báo void main() Bắt đầu
if (biểu thức điều kiện) { { int k; ;
printf("Nhap mot so [1..10]: "); }
scanf("%d",&k); else
if (k < 1 || k > 10) { {
printf("So vua nhap khong hop ; le"); } }
Nếu biểu thức điều kiện cho kết quả true thì thực hiện khối } Kết thúc
lệnh 1, ngược lại thì thực hiện khối lệnh 2
Chương 3. Cấu trúc điều khiển 7
Chương 3. Cấu trúc điều khiển 8 7 8 2 10/26/2025
Cấu trúc lựa chọn Cấu trúc lựa chọn
Ø Ví dụ: Nhập vào số nguyên a và b, nếu a là bội số của b
Chương trình cài đặt:
thì in thông báo "a là bội số của b", ngược lại in "a không là bội số của b" void main() { int a, b;
printf("Nhap so a:");
scanf("%d",&a);
printf("Nhap so b:");
scanf("%d",&b);
if(a%b==0)
printf("%d la boi so cua %d",a,b); else
printf("%d khong la boi so cua %d",a,b); }
Chương 3. Cấu trúc điều khiển 9 10 9 10
Cấu trúc lựa chọn Cấu trúc lựa chọn
Ø Giải và biện luận phương trình bậc1 ax+b=0 void main() { float a, b;
printf("Nhap so a:");
scanf("%f",&a);
printf("Nhap so b:");
scanf("%f",&b);
if (a==0)
if (b==0)
printf("Phuong trinh vo so nghiem"); else
printf("Phuong trinh vo nghiem"); else
printf("Phuong trinh co nghiem x = %.2f", -b/a); }
Chương 3. Cấu trúc điều khiển 11 12 11 12 3 10/26/2025 Cấu trúc switch Cấu trúc switch switch (biểu thức) {
n là các hằng số nguyên hoặc ký tự. i case n1:
n phụ thuộc vào giá trị của biểu thức sau các câu lệnh ; i switch break ;
Giá trị biểu thức = n1 case n2:
- Nếu: giá trị của biểu thức = n thì thực hiện câu lệnh i các câu lệnh ; sau case n .
Giá trị biểu thức = n2 i break ;
- Nếu giá trị biểu thức không thỏa các n thì thực hiện ……… i
câu lệnh sau default nếu có, hoặc thoát khỏi câu case nk: lệnh switch. ; break ;
- Mặc định chương trình thực hiện tuần tự các câu
[default: các câu lệnh]
lệnh của các case n , do đó sau mỗi case phải dùng i }
Các trường hợp còn lại
lệnh break để thoát khỏi switch.
Chương 3. Cấu trúc điều khiển 13 14 13 14
Nhập vào số nguyên n có giá trị từ 1 đến 12. In ra màn hình tháng tương ứng,
nếu n có giá trị <1 hoặc >12 thì in ra chuỗi "tháng không hợp lệ"
. Cấu trúc lặp void main() { int n;
printf("Nhap vao n (1<=n<=12): ");
scanf("%d", &n);
switch (n) {
case 1: printf("thang mot"); break;
case 2: printf("thang hai"); break;
case 3: printf("thang ba"); break;
case 12: printf("thang 12"); break;
default : printf("thang khong hop le"); } } 15 16 15 16 4 10/26/2025 Cấu trúc lặp For Cấu trúc lặp For
for ( ; <điều kiện lặp> ; ) • Cấu trúc For {
– Khởi gán: khởi gán giá trị ban đầu cho biến ; điều khiển vòng lặp }
– Điều kiện lặp: kiểm tra điều kiện thực hiện vòng lặp
– Cập nhật: cập nhật giá trị của biến điều khiển vòng lặp
Bất kỳ đối số nào trong câu lệnh for đều có thể
thiếu nhưng phải có dấu chấm phẩy (;) để phân cách.
Chương 3. Cấu trúc điều khiển 17 18 17 18 Cấu trúc lặp For Cấu trúc lặp For Ø
Các bước thực hiện vòng lặp for
Ví dụ: viết chương trình
in ra bảng cửu chương n,
Bước 1: Khởi gán với n là số nguyên
Bước 2: Kiểm tra điều kiện
dương nhập từ bàn phím.
- Nếu giá trị của biểu thức điều kiện bằng true thì
- Thực hiện các lệnh của vòng lặp
- Cập nhật biến điều khiển vòng lặp. Quay trở lại bước 2.
- Ngược lại thoát khỏi lặp. 19
Chương 3. Cấu trúc điều khiển 20 19 20 5 10/26/2025 Cấu trúc lặp For Ø Ví dụ: viết chương trình nhập số n nguyên dương từ bàn phím. Tính tổng các số từ 1 đến n 21
Chương 3. Cấu trúc điều khiển 22 21 22 Cấu trúc lặp For Cấu trúc lặp For 23 24 23 24 6 10/26/2025 Cấu trúc lặp - While
Cấu trúc lặp - While
Ø Ví dụ: viết chương trình nhập số n nguyên dương từ bàn phím. Tính < Khởi gán>
tổng các số từ 1 đến n
while (<điều kiện lặp>) { lệnh/ khối lệnh; }
• @ Lưu ý: Cách hoạt động của while giống for 25
Chương 3. Cấu trúc điều khiển 26 25 26
Cấu trúc lặp Do … While
Cấu trúc lặp Do … While
Ø Ví dụ: nhập các số nguyên dương có giá trị <=10, do
xuất ra tổng các số hợp lệ. { ; ;
} while (điều kiện);
ØThực hiện lệnh trước, sau đó
kiểm tra điều kiện
ØLệnh được thực hiện đến khi biểu
thức có giá trị sai
Chương 3. Cấu trúc điều khiển 27
Chương 3. Cấu trúc điều khiển 28 27 28 7 10/26/2025 Cấu trúc lặp Do … While Lệnh break và return • Nhận xét
break: thoát khỏi cấu trúc lệnh switch,
– Cấu trúc For và While: kiểm tra điều kiện
while, for, do…while đang chứa nó.
trước khi thực hiện lệnh lặp, do đó các lệnh
return: thoát khỏi chương trình đồng thời
lặp có thể không thực hiện lần nào.
cũng thoát khỏi các vòng lặp và trả về kết
– Cấu trúc do … while: thực hiện lệnh trước, quả.
kiểm tra điều kiện sau, do đó các lệnh có thể
được thực hiện ít nhất là 1 lần. 29 30 29 30 Lệnh continue Lệnh break và return
Ø Ví dụ: Cho phép người dùng nhập liên tục số nguyên
• Lệnh continue được sử dụng trong các
dương, nếu nhập số nguyên âm thì dừng
vòng lặp while, for, do…while.
• Khi lệnh continue được gọi thì chương
trình sẽ kết thúc vòng lặp hiện tại và bắt
đầu vòng lặp mới tiếp theo. 31
Chương 3. Cấu trúc điều khiển 32 31 32 8 10/26/2025 Lệnh continue Bài tập
Ø Ví dụ: In ra màn hình giá trị từ 10 đến 20 trừ đi số 13 và số 17.
1. Viết chương trình tính tổng các số chính
phương nhỏ hơn N (N nguyên dương) 2. Viết chương trình
a) Tính n! bằng cách sử dụng vòng lặp, n nguyên dương
b) Tính en bằng cách sử dụng vòng lặp, n nguyên dương
Chương 3. Cấu trúc điều khiển 33 34 33 34 Bài tập Bài tập
3. Viết chương trình nhập vào 2 số nguyên dương a và b.
6. Cho một hình chữ nhật có các cạnh song song với
- Nếu cả a và b đều là số chẵn thì xuất câu:
các trục tọa độ, tọa độ góc trái dưới là (x1, y1) và
“a va b la hai so chan”
tọa độ góc phải trên là (x2, y2). Hãy kiểm tra xem
- Nếu trong 2 số a và b chỉ có một số chẵn thì xuất câu:
điểm M(x, y) có nằm trong hình chữ nhật trên hay
“chi co mot so chan”
không? (nằm trên cạnh được xem như nằm trong).
- Nếu trong 2 số a và b không có số chẵn thì xuất câu:
Giả sử tọa độ các điểm là các số nguyên. “a, b la hai so le”
4. Giải phương trình dạng: ax2+bx+c = 0
7. Tính tổng S = 1 + + + … + với n là số tự
5. Trong mặt phẳng tọa độ OXY cho hai đường tròn, mỗi nhiên ≥0.
đường tròn biết tọa độ tâm và bán kính. Hãy kiểm tra 8. Tính tổng S = + + … + với n là số tự nhiên
xem hai đường tròn này giao nhau, cắt nhau hay tiếp xúc nhau. ≥1. 35 36 35 36 9 10/26/2025 Bài tập Bài tập 9. Tính tổng S(x,n) = + + + … + với n là số
14. Nhập số nguyên tố n. Hãy tìm số nguyên tố kế tiếp sau ... số n tự nhiên ≥1
15. Nhập số nguyên n. Hãy tìm số nguyên tố gần nhất 10. Tính tổng S =− + − + … + (−1) với n là số tự ! ! ! nhiên ≥0
16. Có 100 bó cỏ biết: trâu đứng ăn năm, trâu nằm ăn ba,
lọm khọm trâu già ba con một bó. Viết chương trình liệt
11. Giả sử n≥0 và x là số thực. Hãy viết hàm tính giá trị của biểu
kê các phương án có thể thức sau đây: S = 1 − + − … + (−1)
17. Cần có 200000 đồng từ ba loại giấy bạc 1000 đồng, ( )
2000 đồng, 5 đồng. Viết chương trình tìm tất cả các
12. Tính S = 1.2 + 2.3.4 + ⋯ + + 1 … (2 ) phương án có thể.
13. Cho tổng S=1+3+5+...+(2n+1) với n≥0 và số nguyên M. Hãy
18. Viết chương trình hiển thị tất cả các số có 3 chữ số sao
tìm giá trị n nhỏ nhất sao cho S>M
cho tổng các chữ số bằng tích của chúng 37 38 37 38 Bài tập
19.Viết hàm kiểm tra xem một số nguyên
dương cho trước có phải là chứa toàn
các chữ số nguyên tố hay không? Ví dụ: 23527, 22, ...
20.Viết hàm kiểm tra xem một số nguyên
dương n có phải là số đối xứng hay
không? Ví dụ: 12521, 797, ... 39 39 10