9/3/2019
1
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 1
Giảng viên: Ths. Trần Kim Bằng
Bộ môn Cơ Kỹ Thuật, P.106B4
Khoa Khoa Học Ứng Dụng
Đại học Bách Khoa TpHCM
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 2
Chương 4
Các cấu trúc điều khiển
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 3
4.1. Cấu trúc rẽ nhánh
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 4
< :bé hơn;
> :lớn hơn;
<= :bé hơn hoặc bằng;
>= :bé hơn hoặc bằng;
== :bằng;
~= :khác
4.1.1. Toán tử quan hệ
&& : và
| | : hoặc
~ : không
4.1.2. Toán tử luận lý
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 5
4.1.3. Cấu trúc rẽ nhánh if-end
if điều kiện
hành động
end
Code Matlab:
a = 3;
b = 10;
if a<b
disp('xin chao');
c=2*a
end
Giải thích:
Gán giá trị 3 cho a.
Gán giá trị 10 cho b.
Nếu thỏa điều kiện a<b
thì xuất chuỗi “xin chao”
ra command window. Sau
đó, tính 2*a rồi gán vào c.
Cấu trúc rẽ nhánh if-end bắt đầu bằng if kết thúc bằng end, nếu điều kiện sau
từ khóa if được thỏa mãn thì một lệnh hoặc một khối lệnh nằm giữa hai dòng if và
end sẽ được thực thi.
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory
Code Matlab:
clc
a =3;
b = 10;
If a<b
disp(‘xin chao’)
else
disp(‘nhap lai a va b)
end
6
4.1.4. Cấu trúc rẽ nhánh if-else-end if-elseif-else-end
if điều kiện
hành động 1
else
hành động 2
end
if điều kiện 1
hành động 1
elseif điều kiện 2
hành động 2
elseif điều kiện 3
hành động 3
….
else
hành động N
end
Giải thích:
Nếu thỏa điều kiện a<b thì xuất chuỗi
“xin chao” ra command window.
Đối với tất cả trường hợp còn lại ngoài
điều kiện a<b thì xuất chuỗi “nhap lai a
va b” ra command window.
9/3/2019
2
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 7
Code Matlab:
If a>b
disp(‘a lon hon b’);
elseif a>0
disp(‘a lon hon 0’);
elseif b>0
disp(‘b lon hon 0’);
else
disp(‘nhap lai a’);
end
Giải thích:
Nếu điều kiện thứ nhất a>b thỏa mãn thì hiển
thị chuỗi “a lon hon b” ra command window end
(bỏ qua tất cả điều kiện còn lại).
Nếu điều kiện thứ nhất không thỏa mãn thì tiếp
tục xét điều kiện thứ hai a>0.
oNếu điều kiện thứ hai thỏa n thì hiển thị
chuỗi “a lon hon 0”end.
oNếu điều kiện thứ hai không thỏa n thì
tiếp tục xét điều kiện thứ ba là b>0.
Nếu điều kiện thứ ba thỏa n thì hiển
thị chuỗi “b lon hon 0”end.
Nếu điều kiện thứ ba không thỏa mãn thì
hiển thị chuỗi “nhap lại a” cho tất cả trường
hợp còn lại và end (else tất cả c
trường hợp còn lại ngoài ba điều kiện trên)
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 8
Code Matlab:
If a>b
disp(‘a lon hon b’)
end
If a>0
disp(‘a lon hon 0’)
end
If b>0
disp(‘b lon hon 0’)
end
Chú ý: so nh ý nghĩa giữa
đoạn code Matlab trong slide
7 với slide 8
Ba cấu trúc rẽ nhánh if-end
trong slide 8 có ý nghĩa khác
với cấu trúc rẽ nhánh if-
elseif-else-end trong slide 7.
Ba cấu trúc if-end này độc
lập với nhau.
Cho điều kiện a>b được
thỏa mãn thì các điều kiện
các cấu trúc if-end còn lại
vẫn tiếp tục được xét, chứ
không phải được bỏ qua như
khi sử dụng cấu trúc if-else-
elseif-end.
4.1.5. Sự khác nhau giữa if-elseif-else-end if-end
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 9
switch biểu thức
case giá trị 1
hành động 1
case giá trị 2
hành động 2
….
otherwise
hành động N
end
4.1.6. Cấu trúc rẽ nhánh switch - case
Kết quả của biểu thức được tính toán, rồi được so sánh với các giá trị 1, 2, …
Khi tìm thấy một giá trị bằng với kết quả của biểu thức, một lệnh hoặc một khối
lệnh sau các giá trị 1, 2, … sẽ được thực thi.
Trường hợp không tìm được giá trị nào bằng với kết quả biểu thức, một hoặc
một khối lệnh sau otherwise sẽ được thực thi.
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 10
Code Matlab:
x=5; unit = ‘cm’;
switch unit
case ‘in’
y=x*2.54
case ‘ft’
y=x*2.54*12
case ‘m’
y=x/100
otherwise
disp(‘Chua biet don vi’)
end
Giải thích:
Gán giá trị 5 cho biến x.
Gán chuỗi ‘cm’ cho biến unit. unit
sẽ có định dạng chuỗi.
So sánh kết quả unit với các chuỗi
khác.
Nếu unit giống chuỗi ‘in’ thì tính
y=x*2.54
Tiếp tục so sánh unit.
Nếu unit giống chuỗi ‘ft’ thì tính
y=x*2.54*12
Tiếp tục so sánh unit.
Nếu unit giống chuỗi ‘m’ thì tính
y=x/100
Với các trường hợp còn lại của
unit, hiển thị chuỗi ‘Chua biet don
vi’ ra command window.
Kết thúc
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 11
4.2. Cấu trúc lặp
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 12
4.2.1. Cấu trúc lặp for-end
for mảng một chiều
hành động
end
Cấu trúc lặp for-end thực hiện lặp đi lặp lại một lệnh hoặc một khối lệnh
(các công việc có quy tắc chung) với số lần lặp đã được xác định trước.
Code Matlab:
a = 0;
for i = [9 5 -1 20 -8 40]
a=a+i;
end
Giải thích:
Ban đầu a được gán bằng 0
Lặp 5 lần lệnh a=a+i với mỗi lần lặp, giá trị
i thay đổi lần lượt bằng 9, 5, -1, 20, -8, 40
Giá trị a lúc sau schồng lấp lên giá tra
trước đó qua phép tính a=a+i
Nếu bỏ dấu chấm phẩy tại dòng code
a=a+i; t các kết quả trung gian khi tính a
được hiển thị trên command window
9/3/2019
3
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 13
Giải thích:
Ban đầu, biến tong được gán bằng 0.
Cho i đi từ 3 đến 9 với bước nhảy là 2 (nếu b
số ở giữa thì mặc định bước nhảy là 1).
i ban đầu bằng 3, tong ban đầu bằng 0. Khi i
bằng 3 thì giá trị tong hiện tại sbằng giá trị
tong trước đó cộng với i = 3. Kết thúc một lần
lặp.
Qua lần lặp thứ hai thì i bằng 5, tong lúc sau
bằng tong trước cộng i.
Quá trình cứ lặp lại như vậy cho đến khi i = 9
ta đã tính được tổng của dãy số mong
muốn.
Giả sử, muốn tính tổng = 3+5+7…+9. Dựa trên quy tắc đã biết số nhsẽ cộng
cho số lớn hơn nó hai đơn vị và cộng cho đến khi gặp số 9, cấu trúc lặp for-end sẽ
được ứng dụng để thực hiện việc này.
Code Matlab:
tong = 0;
for i = 3:2:9
tong = tong + i;
end
disp(tong)
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 14
4.2.2. Cấu trúc lặp while - end
while điều kiện lặp
hành động
end
Code Matlab:
x=0; n=5;
while x<1000
x=x+n
end
Cấu trúc lặp while – end thực hiện lặp đi lặp lại một lệnh hoặc khối lệnh
nào đó nhiều lần nếu điều kiện lặp vẫn còn được thoả mãn.
Không xác định trước được số lần lặp như cấu trúc lặp for-end
Cấu trúc lặp while – end có thể dẫn đến vòng lặp vô tận.
Giải thích:
Gán 0 cho biến x.
Gán 5 cho biến n.
Lặp lại dòng lệnh x=x+n
bằng cách lấy n cộng x
trước đó rồi gán cho x
hiện tại (giá trị mới của x
chồng lấp lên giá trị
của x).
Lặp trong khi điều kiện
x<1000 còn thỏa mãn.
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 15
Code Matlab:
x=1; n=5;
while x>0
x=x+n
end
Giải thích:
Gán 1 cho biến x.
Gán 5 cho biến n.
Lặp lại dòng lệnh
x=x+n đến khi thỏa
điều kiện x>0
Do x luôn luôn lớn
hơn 0 nên dẫn đến
vòng lặp vô tận