Trong mỗi chương trình thường bao gồm rất nhiều dòng lệnh từ các câu lệnh đơn, lệnh ghép...để thể hiện thuật toán. Tuy nhiên, các lệnh này được diễn tả và thực hiện theo các cấu trúc điều khiển là: Cấu trúc tuần tự: Các lệnh trong hàm được thực hiện lần lượt từ dấu mở ‘{’ đến dấu kết thúc ‘}’. Thực hiện từ trái sang phải và từ trên xuống dưới cho đến khi kết thúc chương trình.
Trang 1Bài 2
CÁC CẤU TRÚC ĐIỀU KHIỂN
Trang 2 Trong mỗi chương trình
thường bao gồm rất
nhiều dòng lệnh từ các
câu lệnh đơn, lệnh
ghép để thể hiện thuật
toán Tuy nhiên, các
lệnh này được diễn tả và
thực hiện theo các cấu
trúc điều khiển là:
lệnh trong hàm được thực hiện lần lượt từ dấu
mở ‘{’ đến dấu kết thúc
‘}’ Thực hiện từ trái sang phải và từ trên xuống dưới cho đến khi kết thúc chương trình
Trang 3đúng thì các lệnh này được thực hiện cho đến khi C sai
Trang 4ở giữa là dãy các lệnh Mỗi lệnh đơn kết thúc bằng dấu chấm phảy (;)
Trang 5Chú ý: Để chương trình rõ dàng, sáng sủa, dễ soát lỗi
và debug thuật tiện ta nên viết riêng mỗi lệnh trên một dòng Dưới đây là ví dụ:
Trang 10 Máy lần lượt thực hiện từ C1 trở
đi Nếu Ci=true chỉ lệnh Si được thực hiện và thoát khỏi if, các Ci+1trở đi sẽ không được thực hiện Nếu không có Ci nào bằng true, lệnh S_other được thực hiện và kết thúc lệnh if
Cấu trúc này có thể được móc nối để kiểm tra giá trị của biến
có tính liên tục trong khoảng giá trị nào đó
Trang 11cout<<"KHA";else if (dtb>=5)
cout<<"TB";else
cout<<"KEM";
return 0;
}
Trang 122 L nh if… ệ
VD: VCT giải ptb1: ax + b = 0
Trang 13 C-i: là một hằng kiểu đếm được;
S-i: là câu lệnh;
break: gặp lệnh này sẽ thoát khỏi lệnh switch, các lệnh phía sau break này không được
thực hiện
Trang 143 L nh switch ệ
switch tính giá trị biểu thức E và kiểm tra xem:
Nếu E=C1 thì thực hiện các lệnh S ngay sau C1 cho đến khi gặp lệnh break, và thoát khỏi lệnh switch
Nếu không, switch sẽ kiểm tra E với C2 Nếu E=C2 thì thực hiện các lệnh S ngay sau C2 cho đến khi gặp
lệnh break, và thoát khỏi lệnh switch Nếu không,
switch sẽ kiểm tra E với C3, cứ tiếp tục như vậy
Cuối cùng, nếu E không bằng bất kì C-i nào, máy thực hiện lệnh trong phần default: (nếu có)
Trang 15} }
Trang 174 C u trúc l p ấ ặ
Mục đích của các vòng lặp là thực hiện lệnh với một số lần nhất định hoặc chừng nào điều kiện còn đúng thì lệnh còn được thực hiện
Trang 184 C u trúc l p ấ ặ
a L nh while…: ệ
Thực hiện:
B1: máy tính giá trị của C
- Nếu C = true sang B2
- Nếu C = false sang B3
B2: thực hiện lệnh S, chuyển B1
B3: thoát khởi lệnh while…do…, chuyển đến các lệnh sau while
Trang 19cout<<n<<" ";
n;
}}
Trang 20 Trong ví dụ trên, lệnh n; để làm cho C=false sau một
số lần lặp.
Lệnh S có thể không được thực hiện lần nào.
Trang 22n++;
s +=n;
} cout<<"n = "<<n;
return 0;
}
Trang 23thực hiện lần lặp tiếp theo từ lệnh S… ngược lại, thoát khỏi vòng lặp.
Trang 264 C u trúc l p ấ ặ
c L nh for() ệ
Cú pháp: for (init; condition; increase) statement;
Lặp lại statement chừng nào condition còn mang giá trị đúng, như vòng lặp while Thêm vào đó, for cung cấp chỗ dành cho lệnh khởi tạo và lệnh tăng Vì vậy vòng lặp này được áp dụng cho hành động với số lần xác định Cách thức hoạt động của nó như sau:
Trang 273, statement được thực hiện
4, Cuối cùng, increase được thực hiện để tăng biến điều khiển và vòng lặp quay trở lại bước 2
Trang 284 C u trúc l p ấ ặ
c L nh for() ệ
Ví dụ: Tính tổng của dãy các số từ 1 đến 100
HD:
CT dùng một biến đếm i được khởi tạo từ 1, và một
biến s để chứa tổng Mỗi bước lặp, cộng i vào s và sau
đó tăng i lên 1 đơn vị Chương trình còn lặp khi nào i còn chưa vượt qua 100 Khi i lớn hơn 100 chương
trình dừng Sau đây là chương trình:
Trang 30Với m= 3, n=5, HCN như sau:
*****
*****
*****
Trang 31Với m= 3, n=5, HCN như sau:
*****
*****
*****
Trang 33 Đếm số lượng các số thuộc đoạn [a,b]
Đếm số lượng các số lẻ mà chia hết cho 3
Trang 344 C u trúc l p ấ ặ
c L nh for() ệ
Có thể dùng nhiều lệnh trong các thành phần của for, các lệnh cách nhau dấu phảy (,)
VD:Vòng lặp này sẽ thực hiện 50 lần nếu như n và i
không bị thay đổi trong thân vòng lặp:
Trang 36 11 <enter>
11, 10, 8, 7, 5, 4, 2, 1, FIRE!
Trang 374 L nh nh y ệ ả
Lệnh goto.
Lệnh này cho phép nhảy vô
điều kiện tới bất kì điểm nào
Trang 38L u ý: ư
FOR thường được sử dụng trong những vòng lặp
mà số lần lặp được biết trước, nghĩa là vòng lặp thường được tổ chức dưới dạng một (hoặc nhiều) biến đếm chạy từ một giá trị nào đó và đến khi đạt được
đến một giá trị khác cho trước thì dừng
Ngược lại với FOR, WHILE và DO … WHILE thường
dùng trong các vòng lặp mà số lần lặp không biết
trước
while: kiểm tra C trước, C=true thì thực hiện S, do vậy
S có thể không đươc thực hiện lần nào
do…while…: thực hiện S trước, sau đó kiểm tra C nên
S được thực hiện ít nhất một lần