Professional Documents
Culture Documents
Module03 Cau Truc Dieu Khien
Module03 Cau Truc Dieu Khien
Design by Minh An
Nội dung
Design by Minh An
1
1. Cấu trúc rẽ nhánh
Design by Minh An
Design by Minh An
2
1.2. Cấu trúc if …
• Cú pháp:
if (biểu_thức_bool){
Lệnh_S;
}
• Trong đó:
✓ if là từ khóa của lệnh rẽ nhánh.
✓ biểu_thức_bool trả về một trong 2 giá trị 1 (đúng)
hoặc 0 (sai).
✓ Lệnh_S là một câu lệnh hoặc một khối lệnh.
Design by Minh An
biểu_thức_bool 0
1
Lệnh_S
Design by Minh An
3
Cấu trúc if … (tt) – Ví dụ
Bắt đầu
◼ Viết chương trình:
Nhập 2 số a, b
✓ Nhập vào 2 số thực
a, b. tich = a * b;
Kết thúc
Design by Minh An
Design by Minh An
4
1.3. Cấu trúc if … else …
• Cú pháp:
if (biểu_thức_bool) {
Lệnh_S1;
} • Hoạt động:
else {
Lệnh_S0;
} 0
biểu_thức_bool
Lệnh_S0
1
Lệnh_S1
Design by Minh An
Bắt đầu
Nhập số nguyên n
du = n % 2;
0
du == 0
1 Thông báo: la so le
Kết thúc
Design by Minh An
5
Cấu trúc if … else … (tt) – Ví dụ
Design by Minh An
Design by Minh An
6
Cấu trúc if … else … bậc thang (tt)
• Hoạt động
biểu_thức_bool_1 1
Lệnh_1;
0
1
biểu_thức_bool_2 Lệnh_2;
0
... ...
0
1
biểu_thức_bool_n Lệnh_n;
0
Lệnh_n+1;
Design by Minh An
Design by Minh An
7
Cấu trúc if … else … bậc thang (tt) – Ví dụ
Bắt đầu
Nhập ký tự ch
1
ch==‘a’||ch==‘A’ TB: la nguyen am a
0
1
ch==‘e’||ch==‘E’ TB: la nguyen am e
0
...
...
0
1
ch==‘u’||ch==‘U’ TB: la nguyen am u
0
TB: khong la nguyen am
Kết thúc
Design by Minh An
Design by Minh An
8
1.5. Cấu trúc if … else … lồng nhau
• Cú pháp: if (biểu_thức_bool_1) {
Lệnh_S1;
if (biểu_thức_bool_2)
Lệnh_2;
else
Lệnh_3;
... ...
}else{
Lệnh_S2;
if (biểu_thức_bool_k)
Lệnh_k;
... ...
}
Design by Minh An
• Hoạt động:
biểu_thức_bool_1 1
Lệnh_S1;
0
Lệnh_S2;
biểu_thức_bool_2 1
1 biểu_thức_bool_k 0
Lệnh_3; Lệnh_2;
0
Lệnh_k;
Design by Minh An
9
Cấu trúc if … else … lồng nhau (tt) – Ví dụ
✓ Nhập vào điểm trung bình cuối năm (dtb) của một học
sinh.
✓ Cho biết có phải là giá trị điểm trung bình hợp lệ hay
không? Nếu hợp lệ thì học sinh có được lên lớp hay
không?
Design by Minh An
Nhập dtb
1
dtb>=0&&dtb<=10
TB: dtb hop le
0
1
TB: HS duoc len lop
Kết thúc
Design by Minh An
10
Cấu trúc if … else … lồng nhau (tt) – Ví dụ
Design by Minh An
if (biểu_thức_bool_1)
Lệnh_1;
if (biểu_thức_bool_2)
Lệnh_2;
...
if (biểu_thức_bool_n)
Lệnh_n;
Design by Minh An
11
Cấu trúc nhiều if … (tt)
• Hoạt động:
biểu_thức_bool_1 1 Lệnh_1;
biểu_thức_bool_2 1 Lệnh_2;
0
...
biểu_thức_bool_n 1 Lệnh_n;
Design by Minh An
Design by Minh An
12
Bắt đầu
Ví dụ
Nhập 5 số a, b, c, d, e
max = a;
1
max < b max = b;
0
1
max < c max = c;
0
1
max < d max = d;
0
1
max < e max = e;
0
TB:max
Kết thúc
Design by Minh An
Ví dụ
Design by Minh An
13
1.7. Cấu trúc switch …
• Cú pháp
switch (biểu_thức_nguyên)
{
case hằng_1: Lệnh_1; break;
case hằng_2: Lệnh_2; break;
...
case hằng_n: Lệnh_n; break;
[default: Lệnh_F;]
}
Design by Minh An
biểu_thức_nguyên==hằng_2 1
Lệnh_2;
0
...
0
biểu_thức_nguyên==hằng_n 1
Lệnh_n;
0
Lệnh_F;
Design by Minh An
14
Cấu trúc switch … (tt) – Ví dụ 1
Design by Minh An
Nhập ký tự ch
1
ch==‘a’||ch==‘A’ TB: la nguyen am a
0
1 TB: la nguyen am e
ch==‘e’||ch==‘E’
0
... ...
0
1 TB: la nguyen am u
ch==‘u’||ch==‘U’
0
TB: khong la nguyen am
Kết thúc
Design by Minh An
15
Cấu trúc switch … (tt) – Ví dụ 1
Design by Minh An
Design by Minh An
16
Cấu trúc switch … (tt) – Ví dụ 2
Bắt đầu
Nhập chữ số ch
1
ch == ‘0’ TB: la chu so khong
0
1 TB: la chu so mot
ch == ‘1’
0
... ...
0
1 TB: la chu so chin
ch == ‘9’
0
TB: khong la chu so
Kết thúc
Design by Minh An
Design by Minh An
17
2.1. Đặt vấn đề
• Viết đoạn chương trình hiển thị lên màn hình dãy số tự
nhiên {1 2 3 4 5} với giá trị các số lần lượt được lưu trong
biến i.
void hien_thi() {
int i = 1;
printf("%d ",i); i++;
printf("%d ",i); i++;
printf("%d ",i); i++;
printf("%d ",i); i++;
printf("%d ",i); i++;
}
Design by Minh An
Design by Minh An
18
2.3. Cấu trúc lặp for …
• Cú pháp:
for ([BT_1]; [BT_2]; [BT_3]){
<Lệnh_S;>
}
Design by Minh An
• Hoạt động:
– Bước 1: [BT_1] (Biến điều khiển được gán giá trị khởi tạo)
– Bước 2: [BT_2] Kiểm tra giá trị của biểu thức quan hệ.
• Biểu thức quan hệ cho giá trị "đúng" sang bước 3
• Biểu thức quan hệ cho giá trị "sai" sang bước 4
– Bước 3:
• Thực hiện Lệnh_S
• [BT_3] (thay đổi giá trị của biến điều khiển)
• Quay lại bước 2
– Bước 4: Kết thúc vòng lặp
Design by Minh An
19
Cấu trúc lặp for … (tt)
Bắt đầu
[BT_1]
0
[BT_2]
1
Kết thúc
Lệnh_S;
[BT_3]
Design by Minh An
void hien_thi() { 1
for (i=1; i<=5; i++){ printf("%d ",i); Kết
thúc
printf("%d ",i);
} i++;
}
Design by Minh An
20
Cấu trúc lặp for … (tt) – Ví dụ 2
• Ví dụ 2: Viết đoạn chương trình hiển thị lên màn hình dãy
số: 5 4 3 2 1 0 -1 -2 -3 -4 -5
✓ Biểu thức 1: i = 5
void hien_thi() {
✓ Biểu thức 2: i >= -5
for (i=5; i>=-5; i--){
✓ Biểu thức 3: i--
printf("%d ",i);
✓ Lệnh_S: printf("%d ",i);
}
}
Design by Minh An
• Viết chương trình nhập số tự nhiên n, tính và hiển thị lên màn
hình:
– Tổng của n số tự nhiên đầu tiên: 1 + 2 + ... + n;
– n! = n x (n – 1) x (n – 2) x ... x 2 x 1
• Một người gửi tiết kiệm n tháng, số tiền gửi ban đầu là m, lãi
suất gửi tiết kiệm là r% / tháng. Viết chương trình nhập vào n,
m, r sau đó tính và in ra màn hình tổng số tiền người đó nhận
được sau n tháng gửi nếu:
– Sau mỗi tháng người đó rút lãi về sử dụng.
– Tiền lãi sau mỗi tháng được đưa vào tiền gốc để gửi tiếp
tháng sau.
Design by Minh An
21
4. Cấu trúc lặp for lồng nhau
• Các vòng lặp for lồng nhau khi nó có dạng như sau:
Design by Minh An
Design by Minh An
22
5. Cấu trúc lặp while …
• Cú pháp:
while (biểu_thức_đk)
{
Lệnh_S;
}
Design by Minh An
BEGIN
0
biểu_thức_đk
1 END
Lệnh_S;
Design by Minh An
23
Cấu trúc lặp while … (tt) – Ví dụ 1
• Bài toán:
✓ Nhập số nguyên dương N.
✓ Cho biết N có bao nhiêu chữ số, tổng các chữ số của N.
• Cách giải quyết:
✓ Chia liên tiếp N cho 10 cho đến khi được kết quả bằng 0
thì dừng lại.
✓ Số lần chia 10 là số chữ số của N.
✓ Tổng các số dư trong mỗi lần chia là tổng các chữ số
của số nguyên dương N.
Design by Minh An
24
Cấu trúc lặp while … (tt) – Ví dụ 2
BEGIN
dem = 0; tong = 0;
0
N > 0
1 TB: tong, dem
dem++;
tong = tong + N % 10;
N = N / 10; END
Design by Minh An
Design by Minh An
25
6. Cấu trúc lặp do … while …
• Cú pháp
do{
Lệnh_S;
} while (biểu_thức_đk);
Design by Minh An
BEGIN
Lệnh_S;
0
biểu_thức_đk
1
END
Design by Minh An
26
Cấu trúc lặp do … while … (tt) _ Ví dụ 1
Design by Minh An
Design by Minh An
27
Cấu trúc lặp do … while … (tt) _ Ví dụ 2
BEGIN
dem = 0; tong = 0;
Nhập số nguyên n
dem++;
tong = tong + n;
n != -1 0
1 dem--; tong++;
END
Design by Minh An
Design by Minh An
28
7. Toán tử chuyển điều khiển
break;
• Lệnh break được sử dụng để kết thúc một mệnh đề
case trong cấu trúc switch (…).
• Nó cũng có thể được sử dụng để kết thúc ngang vòng
lặp.
• Khi gặp lệnh break; , vòng lặp sẽ kết thúc ngay và điều
khiển được chuyển đến lệnh kế tiếp bên ngoài vòng
lặp.
Design by Minh An
#include <stdio.h>
int main (){
int i, j = 0;
for (i = 1; i <= 100; i++) {
printf("Nhap j: ");
scanf("%d", &j);
if (j == 100) {
break;
}
}
}
Design by Minh An
29
Các lệnh chuyển điều khiển (tt)
continue;
• Lệnh continue dùng để bắt đầu thực hiện lần lặp kế
tiếp của vòng lặp.
• Khi gặp lệnh continue, các câu lệnh còn lại trong
thân vòng lặp bị bỏ qua và điều khiển được chuyển
đến lần lặp kế tiếp.
Design by Minh An
#include <conio.h>
#include <stdio.h>
int main () {
int i;
for (i = 1; i <= 100; i++) {
if (i % 9 == 0) {
continue;
}
printf("%d ", i);
}
}
Design by Minh An
30
Thank you…!
Design by Minh An
31