Bài 3 Dòng điều khiển do TS. Đỗ Đăng Khoa biên soạn, sau khi học xong chương này người học có thể hiểu về: Điều khiển tuần tự: Lệnh đơn và lệnh phức, điều khiển rẽ nhánh, câu lệnh lựa chọn switch, điều khiển Vòng Lặp- For,...
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Trang 2Điều khiển Tuần Tự: Lệnh Đơn & Lệnh Phức
Trang 3Dòng điều khiển
Điều khiển rẽ nhánh
Câu lệnh điều kiện if
Câu lệnh lựa chọn switch
Điều khiển chu trình
Trang 5Nếu biểu thức điều kiện có giá trị
đúng (true), khối lệnh theo sau
Trang 7Điều khiển Rẽ Nhánh: If - Else
Trang 8Điều khiển Rẽ Nhánh: If - Else
Trang 9Điều khiển Rẽ Nhánh: If - Else
int n;
cout << "Nhập một số nguyên:" ; printf(L "Nhập một số nguyên:" );
if (n%2 == 0) cout << "n là số chẵn" ;
else
cout << "n là số lẻ" ;
return 0;
}
Trang 10Điều khiển Rẽ Nhánh: If – Else - If
Trang 11Điều khiển Rẽ Nhánh: If – Else - If
học C++;
}
Nếu một biểu thức nào đó đúng
thì câu lệnh tương ứng sẽ được
thực hiện và rồi kết thúc toàn bộ
kết cấu
Phần else xử lý khi không có điêu
kiện nào được thỏa mãn Phần này
có thể được bỏ đi
} else if Ngày==<CN>{
chơi;
} else{
ngủ;
}
Trang 12Điều khiển Rẽ Nhánh: If – Else - If
Trang 13Điều khiển Rẽ Nhánh: If – Else - If
}
else
{
Tệp chứa các hàm toán học: sin, cos, tan, ln, log, fabs (trị tuyệt đối),
Trang 14Điều khiển Rẽ Nhánh: If lồng nhau
Lệnh if lồng nhau là một
lệnh if được đặt trong một
lệnh if hoặc else khác
Sự nhập nhằng khi dẫy if
lồng nhau (else luôn được
gắn với if không có else
Trang 15Điều khiển Rẽ Nhánh: Switch
Khối lệnh n default
Trang 16Câu lệnh lựa chọn switch
- Dùng break để thoát ngay khỏi
switch (không phải tiếp tục chuyển sang các case còn lại).
Trang 17Câu lệnh lựa chọn switch
Trang 18Câu lệnh lựa chọn switch
Trang 19Điều khiển Rẽ Nhánh: Switch
Ý nghĩa:
•Tạo quyết định nhiều nhánh đặc biệt (Nếu dùng if
rẽ nhiều nhánh khiến chương trình khó đọc )
• Kiểm tra xem một biểu thức có ứng với một trong
số giá trị hằng hay không (từ đầu) và nhảy đến lệnh
tương ứng khi so trúng
tương ứng khi so trúng
• Dùng câu lệnh break để thoát ra ngay khỏi switch
khi không muốn kiểm tra tiếp các trường hợp còn
lại
•Không cần bao dãy lệnh bởi cặp dấu {}
•Nhánh default có thể nằm bất cứ đâu, không cần ở
cuối cùng
Trang 20Điều khiển Rẽ Nhánh: Switch
Minh họa switch và case
int x,y,z;
char a,b;
float f;
hàm func() có giá trị trả về là số nguyên.
switch đúng switch sai case đúng case sai
switch (x) switch (f) case 3: case 2.5:
switch (x>y) switch (x+2.5) case 'a‘: case x:
switch (a+b-2) case 1+2: case x+2:
switch (func(x,y)) case 'x'>'y‘: case 1,2,3:
Trang 21Điều khiển Rẽ Nhánh: Switch
•Ví dụ:
int th;
cout << “Cho biet thang can tinh ngay: “ ; cin >> th ;
switch (th) {
case 1: case 3: case 5: case 7: case 8: case 10:
case 12: cout << “thang nay co 31 ngay" ; break ;
case 2: cout << “thang nay co 28 ngay" ; break;
case 4: case 6: case 9:
case 11: cout << “thang nay co 30 ngay" ; break;
default: cout << “Nhap sai thang" ;
}
Trang 22Điều khiển Vòng Lặp
thực hiện lặp đi lặp lại cho đến khi một điều kiện
Trang 23Điều khiển Vòng Lặp- For
for (khởi gán biến lặp ;
điều kiện lặp ; thay đổi
biến lặp)
{ khối lệnh lặp; }
•Ví dụ:
Điều kiện lặp Khởi gán biến lặp
Trang 24Điều khiển Vòng Lặp- For
Thực hiện khởi tạo Lặp quá trình kiểm tra điều kiện đúng thì
thực hiện khối lệnh và cập nhật, sai thì dừng.
- Thực hiện đầu tiên
- Các lệnh khai báo hoặc
khởi tạo biến
for ( i = 0 ; Khởi tạo
for ( i = 0, j = 5 ;
for ( int i = 0; Khai báo
for ( int i = 0, j = 0; và khởi tạo
Trang 25Điều khiển Vòng Lặp- For
Thực hiện khởi tạo Lặp quá trình kiểm tra điều kiện đúng thì
thực hiện khối lệnh và cập nhật, sai thì dừng.
- Nếu đúng , thực hiện các lệnh trong chu trình
- Nếu sai thì kết thúc chu trình
Trang 26Điều khiển Vòng Lặp- For
Thực hiện khởi tạo Lặp quá trình kiểm tra điều kiện đúng thì
thực hiện khối lệnh và cập nhật, sai thì dừng.
là tăng/giảm các biến đếm)
for ( ; ; i++ )
for ( ; ; i ++, j ++ )
Trang 27Điều khiển Vòng Lặp- For
Thực hiện khởi tạo Lặp quá trình kiểm tra điều kiện đúng thì
thực hiện khối lệnh và cập nhật, sai thì dừng.
Trang 28Điều khiển Vòng Lặp- For
Thay đổi biến lặp: định nghĩa cách thức thay đổi của biến
điều khiển vòng lặp mỗi khi vòng lặp được thực thi
Ba phần của vòng lặp for phải được phân cách bởi dấu
Trang 29Điều khiển Vòng Lặp- For
Vòng lặp for tiếp tục được thực thi khi biểu thức kiểm tra
điều kiện vẫn có giá trị đúng(true) Khi điều kiện trở thành
sai(false), chương trình thực hiện lệnh theo sau vòng lặp for
Trang 30Điều khiển Vòng Lặp- For
Trang 31Điều khiển Vòng Lặp- For
Một số trường hợp đặc biệt:
•Vòng lặp for có thể được mở rộng bằng cách chứa nhiều
giá trị khởi tạo và nhiều biểu thức tăng trị trong đặc tả của
Trang 32Điều khiển Vòng Lặp- For
Trang 33Điều khiển Vòng Lặp- For
Vòng lặp for có thể lồng nhau:
for (i = 1; i<=max1; i++) {
…for (j = 0; j < = max2; j++){
Trang 34Điều khiển Vòng Lặp- doawhile
Thân của vòng lặp được thực thi
trước khi biểu thức điều kiện được
kiểm tra
Khi điều kiện mang giá trị sai
thúc, và điều khiển chuyển đến lệnh
đúng
sai Điều kiện
Trang 35Điều khiển Vòng Lặp- do while
Trang 36Điều khiển Vòng Lặp- while
trong khi một biểu thức điều
kiện mang giá trị đúng (True) Khối lệnh
Trang 37Điều khiển Vòng Lặp- while
Trang 38Cách chọn vòng lặp?
Vòng lặp For
Dùng khi số lần lặp biết trước
Vòng lặp while
•Dùng khi số lần lặp chưa biết trước
•Điều kiện lặp hay dừng phụ thuộc biểu thức logic
•Sử dụng khi khả năng thực hiện khối lặp không xảy
•Sử dụng khi khả năng thực hiện khối lặp không xảy
ra lần nào
Vòng lặp do-while
Giống với vòng lặp while, khác biệt duy nhất là sử
dụng khi ta biết chắc chắn khối lệnh lặp phải được
thực hiện ít nhất một lần
Trang 39Một số lệnh chuyển điều khiển
Khi gặp lệnh break, vòng lặp sẽ kết thúc ngay và
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
Trang 40Một số lệnh chuyển điều khiển
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
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
Trang 41Một số lệnh chuyển điều khiển
Đoạn mã sau xử lý các phần tử dương trong bảng a,
bỏ qua các giá trị âm