T IN ĐẠI CƯƠNG
Bài 4: CÁC CẤU TRÚC ĐIỀU KHIỂN
Ths. Nguyễn Thị Phương Thảo
Trường Đại học Thủy Lợi
1
Bộ môn Kỹ thuật máy tính và mạng, Khoa CNTT
Các cấu trúc điều khiển
Cấu trúc tuần tự
Cấu trúc rẽ nhánh
Cấu trúc lặp
Từ khoá break và continue
3
Cấu trúc tuần tự
Các lệnh được lần lượt thực hiện Tất cả các chương trình học đến thời điểm này đều theo cấu trúc tuần tự
Câu lệnh rẽ nhánh
Câu lệnh IF
đúng
Điều kiện
sai
Công việc
Cú pháp :
if (<điều kiện>)
{
}
Quá trình thực hiện
1.Kiểm tra <điều kiện> (biểu thức logic).
Nếu sai : bỏ qua
2.Thực hiện
khối lệnh)
Câu lệnh IF-ELSE
Cú pháp: if (<điều kiện>) {
đúng
Điều kiện sai
} else {
Công việc 1
Công việc 2
}
Quá trình thực hiện
1.Kiểm tra <điều kiện>. Nếu sai : chuyển đến bước 3
2.Thực hiện
3.Thực hiện
Bài tập
1. Nhập vào một số n từ bàn phím và kiểm tra xem
n có là số chẵn. In câu trả lời ra màn hình
2. Viết chương trình nhập vào 3 số thực. In ra màn
hình số lớn nhất trong 3 số
3. Viết chương trình tính và in ra màn hình giá trị
biểu thức sau:
𝑥 + 1 3𝑥
Với x là số nguyên được nhập từ bàn phím
Câu lệnh SWITCH
Cú pháp
switch(
break ; break ;
break ;
case
}
Chú ý
-
- Không được phép quên lệnh break đằng sau mỗi
- Không bắt buộc phải có default
- Có thể gom nhiều
Ví dụ
Viết chương trình C++ để nhập số nguyên
dương n và in ra số dư của phép chia n cho
4:
Ví dụ nhập n=13, In ra màn hình dòng
13 chia 4 dư 1
Bài 1
Ví dụ
Bài 2
Viết chương trình nhập vào 1 ký tự (A,B, C,
D, F), hiển thị kết quả điểm đạt của bạn (4,
3, 2, 1, 0) tương ứng với ký tự nhập vào.
Các trường hợp khác ghi “Không phải
là
điểm trong thang điểm 4”.
Bài 2
Bài 2: xử lý khi nhập ký tự in thường
Bài 2: xử lý khi nhập ký tự in thường
Cấu trúc lặp
120 sinh viên lớp N03 và tính điểm trung bình của lớp.
Ví dụ : Nhập dữ liệu điểm môn Tin học đại cương cho
- Khai báo 120 biến để lưu điểm của 120 sinh viên
- Viết 120 lần lệnh nhập dữ liệu
- Viết 120 lần lệnh cộng các biến
Vấn đề : chương trình quá dài, nhàm chán, rất dễ
Nếu dùng cấu trúc tuần tự :
→ Giải pháp : sử dụng cấu trúc lặp, làm lặp đi lặp lại công
phát sinh lỗi, không tổng quát hóa
14
việc nào đó cho đến khi thỏa mãn một điều kiện
Cấu trúc lặp
- lặp sử dụng biến đếm (biết trước số lần lặp), ví dụ : nhập điểm
của 120 sinh viên
- lặp sử dụng điều kiện dừng, ví dụ : nhập mật khẩu cho đến khi
nhập đúng
Có hai kiểu lặp thông dụng
Tương ứng với những kiểu lặp này, C++ cung cấp các
15
lệnh lặp for, while và do-while
Vòng lặp FOR
Khởi tạo
Cú pháp :
for (
sai
}
Điều kiện
đúng
Quá trình thực hiện
1.
khiển
công việệc
2. Kiểm tra <điều kiện> (biểu thức logic). Nếu sai :
dừng lặp
thay đổi
3. Thực hiện
4. Thực hiện
biến điều khiển)
5. Quay về bước 2
for (int a=10; a>=0; a--) { công việc} Hoặc for (int a=0; a<=10; a++) {công việc}
16
Ví dụ: đoạn chương trình sau thực hiện công việc gì
2. Vòng lặp FOR
. . .
vòng lặp, không in -1 ra màn hình
18
Khởi gán a = 10 ; 10 có >= 0 không ? → có → in ra 10 Bớt a đi 1 → a = 9 ; 9 có >= 0 không ? → có → in ra 9 Bớt a đi 1 → a = 0 ; 0 có >= 0 không ? → có → in ra 0 Bớt a đi 1 → a = -1 ; -1 có >= 0 không ? → không → dừng
Ví dụ
Nhập vào một số nguyên
dương n, tính tổng các số
nguyên dương nhỏ hơn n.
Vòng lặp FOR : ví dụ
//tính tổng các số nguyên từ 10 đến 20 for (int i = 10, tong = 0 ; i <= 20 ; i++) {
tong = tong + i ;
} //vòng lặp này làm gì ? for (int i = 10, tich = 1 ; i <= 20 ; i = i+2) {
tich = tich * i ;
}
20
3. Vòng lặp WHILE
Cú pháp :
while (<điều kiện>)
{
sai
Điều kiện
đúng
}
công việc
Quá trình thực hiện
1. Kiểm tra <điều kiện>. Nếu sai : dừng lặp
2. Thực hiện
3. Quay về bước 1
21
Vòng lặp WHILE
Vòng lặp While được dùng khi không biết chính xác số lần
lặp, chỉ biết điều kiện dừng
Chú ý khởi tạo các biến cần thiết trước khi vào vòng lặp
lần nào nếubiểuthức <điều kiện> sai ngay từ đầu
Các lệnh trong khối
đến giá trị của biểu thức <điều kiện>, làm cho biểu thức
Trong
<điều kiện> đang đúng trở thành sai
22
Lỗi hay gặp: vòng lặp vô hạn
Vòng lặp WHILE - ví dụ
int a = 10; while (a > = 0) {
cout << a << endl; a− − ; }
Khởi tạo giá trị của abằng10
1. In ra màn hình giá trị của a
2. Bớt a đi 1, lệnh này ảnh hưởng đến giá trị của biểu thức <điều kiện>
23
Khi a vẫn còn lớn hơn hoặc bằng 0 thì làm công việc sau
Vòng lặp WHILE - ví dụ
Vòng lặp vô hạn int a = 10; while (a > = 0)
{ cout << a << endl; }
Chương trình sau đây làm gì ? int a = n-1 ;
}
24
while ( (n % a) != 0 ) { a = a - 1;
Ví dụ
Viết chương trình nhập vào số nguyên dương N. Yêu cầu nhập lại nếu N <=0. In ra màn hình các số dương chia hết cho 4 nhỏ hơn N.
Ví dụ
4. Vòng lặp DO-WHILE
Cú pháp : do {
công việcc
} while (<điều kiện>) ;
đúng
Quá trình thực hiện
Điều kiện
1. Thực hiện
sai
2. Kiểm tra <điều kiện>. Nếu sai: dừng lặp
3. Quay về bước 1
27
Khác nhau giữa DO-WHILE và WHILE
DO-WHILE: làm trước, kiểm tra điều kiện dừng sau,
do đó
28
WHILE: kiểm tra điều kiện dừng trước, làm sau
Khác nhau giữa DO-WHILE và WHILE
DO-WHILE: làm trước, kiểm tra điều kiện dừng sau,
do đó
Cú pháp :
while (<điều kiện>)
Cú pháp : do {
{
} while (<điều kiện>) ;
}
29
WHILE: kiểm tra điều kiện dừng trước, làm sau
Vòng lặp DO-WHILE – Làm lại ví dụ trên
30
5. Từ khoá break và continue
◮ break: được dùng khi cần thoát khỏi vòng lặp
◮ continue: được dùng khi cần dừng bước lặp
hiện tại để tiếp tục bước lặp mới
31
6. Bài tập
Bài 1
Nhập vào số nguyên dương n. Tính tổng các số từ 0 đến n.
trúc lặp khác nhau : do-while, while, for.
Viết ba hàm cùng làm công việc trên nhưng sử dụng các cấu
Nhập vào số nguyên dương n. Tính giá trị của biểu thức
Bài 2
X = 1 + 1/2 + 1/3 +. . . + 1/n.
Bài 3
Nhập các số thực từ bàn phím cho đến khi tổng của chúng lớn
32
hơn hoặc bằng 100 thì dừng.