Bai 3- Dong dieu khien.pdf
-
Upload
phuc-phan-tu -
Category
Documents
-
view
225 -
download
0
Transcript of Bai 3- Dong dieu khien.pdf
-
8/19/2019 Bai 3- Dong dieu khien.pdf
1/41
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Ngôn ngữ lập trình C và C++
Bài 3: Dòng Điều Khiển
TS. Đỗ Đăng Khoa
Bộ môn Cơ học Ứng dụngViện Cơ khí
http://chud-dhbkhn.blogspot.com/
-
8/19/2019 Bai 3- Dong dieu khien.pdf
2/41
Điều khiển Tuần Tự: Lệnh Đơn & Lệnh Phức
Các câu lệnh được xử lýtuần tự theo thứ tự từ trên
xuống dưới
Lệnh đơn: là một câu lệnhriêng lẻ được kết thúc bằng
{
int min i
Ví dụ:
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
u c m p y ; .
Lệnh phức: Nhóm nhiềulệnh đơn thành một lệnhphức bằng cách rào chúngbên trong các dấu ngoặcnhọn {...}.
min = (i < j ? i : j);cout
-
8/19/2019 Bai 3- Dong dieu khien.pdf
3/41
Dò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
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
u r n w e Chu trình do while
Chu trình for
Lệnh continue: bắt đầu chu trình tiếp theo Lệnh break: kết thúc chu trình
-
8/19/2019 Bai 3- Dong dieu khien.pdf
4/41
Điều khiển Rẽ Nhánh
Cho phép thay đổi hướng thực hiện của chươngtrình
Biểu thức điều kiện trả về giá trị đúng hoặc sai
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
ụ: c n m s s c n ay s :1) Nhập vào một số2) Chia số đó cho 2 để xác định số dư3) Nếu số dư là 0, số đó là “SỐ CHẴN”
4) Ngược lại số dư không bằng 0, số đó là“SỐ LẺ”
-
8/19/2019 Bai 3- Dong dieu khien.pdf
5/41
Điều khiển Rẽ Nhánh: If
Cú pháp:if (điều kiện)
lệnh đơn / lệnh phức;Ý nghĩa:Nếu biểu thức điều kiện có giá trị
Điều kiện
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
ng rue , n eo saulệnh if được thực thi.Điều kiện: biến, hằng, biểuthức, hàm
Chú ý: “đúng” là một giá trịkhác 0“sai” là giá trị 0
Lệnh Đơn/ Lệnh Phức
Đúng Sai
-
8/19/2019 Bai 3- Dong dieu khien.pdf
6/41
Điều khiển Rẽ Nhánh: If
•Ví dụ 1: lấy trị tuyệt đốiif(value < 0)
value = -value;•Vídụ2: xếp 2 số từ nhỏ đến lớn
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
f(value1 > value2){temp = value1;value1 = value2;
value2 = temp;}
-
8/19/2019 Bai 3- Dong dieu khien.pdf
7/41
Điều khiển Rẽ Nhánh: If - Else
Cú pháp:if (điều kiện)
lệnh đơn 1 / lệnh phức 1;else
lệnh đơn 2 / lệnh phức 2;
Biểu thứcđiều kiện
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
Nếu biểu thức điều kiện trả vềgiá trị đúng, lệnh đơn 1/ lệnh phức1 được thực hiện.
Nếu biểu thức của if không trả vềgiá trị đúng thì lệnh đơn 2/ lệnhphức 2 được thực hiện.
Lệnh đơn 1/
Lệnh phức 1
Đúng Sai
Lệnh đơn 2/
Lệnh phức 2
-
8/19/2019 Bai 3- Dong dieu khien.pdf
8/41
Điều khiển Rẽ Nhánh: If - Else
•Ví dụ 1: tìm số lớn hơntrong 2 số
if(value1 > value2)larger = value1;
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
elselarger = value2;
-
8/19/2019 Bai 3- Dong dieu khien.pdf
9/41
Điều khiển Rẽ Nhánh: If - Else
Ví dụ 2: Kiểm tra một số là chẵn hay lẻ#include
int main (){
int n;
#include
using namespace std;int main (){
int n;cout n;
if (n%2 == 0)cout
-
8/19/2019 Bai 3- Dong dieu khien.pdf
10/41
Điều khiển Rẽ Nhánh: If – Else - If
Cú pháp:if (điều kiện 1)
lệnh đơn 1 / lệnh phức 1;else if (điều kiện 2 )
lệnh đơn 2 / lệnh phức 2;
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
.......else if (điều kiện n-1)lệnh đơn n-1 / lệnh phức n-1;
else
lệnh đơn n / lệnh phức n;
-
8/19/2019 Bai 3- Dong dieu khien.pdf
11/41
Điều khiển Rẽ Nhánh: If – Else - If Ý nghĩa:Khi biểu thức điều kiện mang
nhiều giá trịCác biểu thức được kiểm tra theothứ tự đã viết
if Ngày =={
học Toán;
}
else if Ngày=={
học C++;
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
thì câu lệnh tương ứng sẽ đượcthực hiện và rồi kết thúc toàn bộkết cấuPhần else xử lý khi không có điêukiện nào được thỏa mãn. Phần nàycó thể được bỏ đi
else if Ngày=={
chơi;
}
else{ngủ;
}
-
8/19/2019 Bai 3- Dong dieu khien.pdf
12/41
Điều khiển Rẽ Nhánh: If – Else - If
•Ví dụ 1:if(diem_so >= 90)
cout
-
8/19/2019 Bai 3- Dong dieu khien.pdf
13/41
Điều khiển Rẽ Nhánh: If – Else - If
#include
#include using namespace std;
int main ()
{
cout
-
8/19/2019 Bai 3- Dong dieu khien.pdf
14/41
Điều khiển Rẽ Nhánh: If lồng nhau
Lệnh if lồng nhau là mộtlệnh if được đặt trong mộtlệnh if hoặc else khácSự nhập nhằng khi dẫy if lồng nhau (else luôn được
int a=-1, b=1,c=1;
if(a>0)
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
g n v ng c e segần nhất trước đó)Nên sử dụng móc nhọn{..} để làm rõ các khối lệnh
trong mọi trường hợp
if(b>0)c = 2;
else
c = 3;
-
8/19/2019 Bai 3- Dong dieu khien.pdf
15/41
Điều khiển Rẽ Nhánh: Switch
Cú pháp:Switch (Biểu thức ){
case giá trị hằng 1:khối lệnh 1;
Điều kiện
Khối lệnh 1Case 1
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
case g r ng :khối lệnh 2;......
default:
khối lệnh n;}
Khối lệnh 2Case 2
Khối lệnh ndefault
-
8/19/2019 Bai 3- Dong dieu khien.pdf
16/41
Câu lệnh lựa chọn switch
Cú phápswitch (expression){case value1:Statement-1;break;
Biến, hằng, biểu thức,
hàm (kiểu trả về) có kiểukí tự hoặc số nguyên
Hằng kí tự hoặc nguyên
- Tùy chọn- Không có lệnh break, tất cả các
case sẽ được thực hiện sau khiso khớ iá trị
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
case va ue :Statement-2;break;......
default:Statement;}
- Dùng break để thoát ngay khỏiswitch (không phải tiếp tụcchuyển sang các case còn lại).
- Tùy chọn
- Các lệnh trong default sẽ đượcthực hiện nếu tất cả các caseđều không khớp giá trị
-
8/19/2019 Bai 3- Dong dieu khien.pdf
17/41
Câu lệnh lựa chọn switch
Cú pháp
Thứ tự của các case và default tùy ý
switch (expression){case value2:Statement-2;break;
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
default:Statement;case value1:Statement-1;break;
......}
-
8/19/2019 Bai 3- Dong dieu khien.pdf
18/41
Câu lệnh lựa chọn switch
Cú pháp
Gộp lại các case để thực hiện cùngcác lệnh
switch (expression){case value1:case value2:Statement-x;
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
break;......
default:Statement;
}
-
8/19/2019 Bai 3- Dong dieu khien.pdf
19/41
Đ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 trongsố giá trị hằng hay không (từ đầu) và nhảy đến lệnh
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
• Dùng câu lệnh break để thoát ra ngay khỏi switchkhi không muốn kiểm tra tiếp các trường hợp cònlạ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
-
8/19/2019 Bai 3- Dong dieu khien.pdf
20/41
Đ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.
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
switch đúng switch sai case đúng case saiswitch(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:
-
8/19/2019 Bai 3- Dong dieu khien.pdf
21/41
Điều khiển Rẽ Nhánh: Switch
•Ví dụ:int th;
cout > th ;
switch (th) {
case 1: case 3: case 5: case 7: case 8: case 10:
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
case 12: cout
-
8/19/2019 Bai 3- Dong dieu khien.pdf
22/41
Điều khiển Vòng Lặp
Vòng lặp: Một đoạn mã lệnh trong chương trìnhthực hiện lặp đi lặp lại cho đến khi một điều kiệnxác định được thỏa mãn
Ba điều khiển vòng lặp:
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
• Vòng lặp For • Vòng lặp While• Vòng lặp Do.. While
-
8/19/2019 Bai 3- Dong dieu khien.pdf
23/41
Điều khiển Vòng Lặp- For
Cú pháp:for (khởi gán biến lặp ;điều kiện lặp ; thay đổibiến lặp){ khối lệnh lặp; }
Điều kiện lặp
Khởi gán biến lặp
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
•Ví dụ:int i;for(i=1; i
-
8/19/2019 Bai 3- Dong dieu khien.pdf
24/41
Đ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.
Cú phápfor (initialization;condition;incr/decr){
Statement
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
- 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áofor (int i = 0, j = 0; và khởi tạo
-
8/19/2019 Bai 3- Dong dieu khien.pdf
25/41
Đ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.
Cú phápfor (initialization;condition;incr/decr){
Statement
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
- hằng, biến, biểu thức vàhàm
- Nếu đúng, thực hiện cáclệnh trong chu trình
- Nếu sai thì kết thúc chu
trình
-
8/19/2019 Bai 3- Dong dieu khien.pdf
26/41
Đ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.
Cú phápfor (initialization;condition;incr/decr){
Statement
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
- Thực hiện ngay sau cáclệnh trong chu trình
- Các lệnh cập nhật cácbiến đã khởi tạo (thườnglà tăng/giảm các biến
đếm)for (...; ....; i++)for (...; ....; i ++, j ++)
-
8/19/2019 Bai 3- Dong dieu khien.pdf
27/41
Đ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.
Cú phápfor (initialization;condition;incr/decr){
Statement
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
-
8/19/2019 Bai 3- Dong dieu khien.pdf
28/41
Điều khiển Vòng Lặp- For
Ý nghĩa: Khởi gán biến lặp: là một lệnh gán để khởi tạo biến điều
khiển của vòng lặp
Điều kiện lặp: là một biểu thức quan hệ qui định khi nào
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
v ng p s c
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ấuchấm phẩy(;)
-
8/19/2019 Bai 3- Dong dieu khien.pdf
29/41
Điều khiển Vòng Lặp- For
Ý nghĩa:Ba phần này có thể để trống nhưng vẫn phải phân cách bởidấu chấm phẩy ;
Phần lệnh tạo nên thân vòng lặp có thể là một lệnh đơn
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
hoặc một lệnh phức (một tập nhi u lệnh)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
-
8/19/2019 Bai 3- Dong dieu khien.pdf
30/41
Điều khiển Vòng Lặp- For
•Ví dụ: tính n!int n, giai_thua, i;
cout
-
8/19/2019 Bai 3- Dong dieu khien.pdf
31/41
Đ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ềugiá trị khởi tạo và nhiều biểu thức tăng trị trong đặc tả củavòng lặp for #include
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
void main(){int i, j , max;coutmax;for(i = 0 , j = max ; i
-
8/19/2019 Bai 3- Dong dieu khien.pdf
32/41
Điều khiển Vòng Lặp- For
•Vòng lặp for có thể để trống các biểu thứcChu trình sau là một chu trình vô hạn:
for ( ; ; ) {...
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
}
-
8/19/2019 Bai 3- Dong dieu khien.pdf
33/41
Điều khiển Vòng Lặp- For
Vòng lặp for có thể lồng nhau:
for (i = 1; i
-
8/19/2019 Bai 3- Dong dieu khien.pdf
34/41
Điều khiển Vòng Lặp- dowhile
Cú pháp:do{
khối lệnh;} while (điều kiện);
Ý nghĩa:
Khối lệnh
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
n c a v ng p ược ựctrước khi biểu thức điều kiện đượckiểm tra Khi điều kiện mang giá trị sai
(False), vòng lặp do while sẽ được kếtthúc, và điều khiển chuyển đến lệnhxuất hiện ngay sau lệnh while
ng
sai
Điều kiện
-
8/19/2019 Bai 3- Dong dieu khien.pdf
35/41
Điều khiển Vòng Lặp- do..while
•Ví dụ: tính n!int n, giai_thua, i;
cout
-
8/19/2019 Bai 3- Dong dieu khien.pdf
36/41
Điều khiển Vòng Lặp- while
Cú pháp:while (điều kiện){
khối lệnh;}Ý nghĩa:
Điều kiện
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
•Vòng lặp while lặp lại các lệnhtrong khi một biểu thức điềukiện mang giá trị đúng (True) Khối lệnh
đúng sai
-
8/19/2019 Bai 3- Dong dieu khien.pdf
37/41
Điều khiển Vòng Lặp- while
•Ví dụ: tính n!int n, giai_thua, i;
cout
-
8/19/2019 Bai 3- Dong dieu khien.pdf
38/41
Cá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
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
•Sử dụng khi khả năng thực hiện kh i lặp không xảyra lần nào
Vòng lặp do-whileGiố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 đượcthực hiện ít nhất một lần
-
8/19/2019 Bai 3- Dong dieu khien.pdf
39/41
Một số lệnh chuyển điều khiển
Lệnh Break: Lệnh break được sử dụng để kết thúc một mệnh đề
case trong câu lệnh switch Nó cũng có thể được sử dụng để kết thúc ngang
giữa vòng lặp
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
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àivòng lặp
-
8/19/2019 Bai 3- Dong dieu khien.pdf
40/41
Một số lệnh chuyển điều khiển
Lệnh 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
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
n v ng p qua v u n ược c uy nđến lần lặp kế tiếp
-
8/19/2019 Bai 3- Dong dieu khien.pdf
41/41
Một số lệnh chuyển điều khiển
Lệnh Continue:
Đoạn mã sau xử lý các phần tử dương trong bảng a,bỏ qua các giá trị âm.
TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI
or = ; < n; ++if (a[i] < 0) /* nhảy qua các
phần tử âm */continue;
... /* xử lý phần tử dương*/