Matlab cung cấp cho người lập trình các cấu trúc luồng sau: if, switch và
cases, for,while, continue, break
• Câu lệnh if, esle, và elseif
Câu lệnhif đánh giá một biểu thức logic và thi hành một nhóm các câu lệnh khi biểu thức đó là TRUE. Các từ khóa tùy chọn khác nhưelseifhay elsethi hành các nhóm câu lệnh khác. Một từ khóaend, khớp vớiif, được sử dụng ở phần cuối của nhóm nhóm câu lệnh cuối cùng.
Ví dụ sau đây hiển thị trên mà hình yêu cầu nhập câu trả lời và nhận câu trả lời ở dạng ký tự (string) từ bàn phím. Nếu câu trả lời làY thì máy tính in ra màn hình thông báo “Bạn đã đồng ý.” còn nếu câu trả lời là N thì máy tính thông báo “Bạn không đồng ý.” Trong trường hợp chữ nhập vào khác
Y hay N máy tính in ra màn hình thông báo “Bạn nhập sai câu trả lời.”
và thực hiện ngắt chế độ nhập bàn phím.
r=input(’Nhap "Y" neu dong y hoac "N" neu khong (Y/N):’,’s’);
if r==’Y’
disp(’Ban da dong y.’) elseif r==(’N’)
disp(’Ban khong dong y.’) else
disp(’Ban nhap sai cau tra loi.’) return
end
• Câu lệnh switch và case
Câu lệnh switch thi hành một nhóm các câu lệnh dựa vào giá trị của một biến hoặc một biểu thức. Các từ khóa case and otherwise được dùng cho các nhóm câu lệnh. Chỉ có trường hợp khớp với điều kiện đầu tiên là được thi hành. Kết thúc luồng switch là một từ khóaend. Ví dụ sau đây mô tả ví dụ nhập câu trả lời từ bàn phím ở mục trên sử dụng cấu trúc switch
s=input(’Nhap "Y" neu dong y hoac "N" neu khong (Y/N):’,’s’); switch s
disp(’Ban da dong y.’) case ’N’
disp(’Ban khong dong y.’) otherwise
disp(’Ban nhap sai cau tra loi.’) end
• Câu lệnh for
Vòng lặp for lặp lại một nhóm câu lệnh một số thời gian cố định cho trước. Cấu trúc vòng lặp được kết thúc bới từ khóa end. Ví dụ sau đây mô tả việc cách dùng vòng forđể tìm các phần tử của một ma trận lớn hơn một giá trị cho trước1 (bằng 5)
H=[1 8 3; 4 9 6; 7 2 5]
[nRow,nCol]=size(H);
disp(’Cac phan tu sau >= 5:’) for i=1:nRow
for k=1:nCol if H(i,k)>=5
disp([’Phan tu o dong ’ num2str(i) ’ cot ’ num2str(k)]) end
end end
Kết quả của vòng for này là
H =
1 8 3
4 9 6
7 2 5
Cac phan tu sau >= 5: Phan tu o dong 1 cot 2 Phan tu o dong 2 cot 2 Phan tu o dong 2 cot 3 Phan tu o dong 3 cot 1 Phan tu o dong 3 cot 3
Do hàm disp chỉ làm việc với các ký tự (string) nên hàm num2str được dùng ở phần đối số của hàm dispđể biến đổi các chỉ sối vàk về dạng ký tự. • Câu lệnh while
Vòng lặp while lặp lại một nhóm câu lệnh một số lần nhất định bằng điều khiển của một điều kiện logic. Cấu trúc vòng lặpwhileđược kết thúc bởi một từ khoá end. Ví dụ sau đây mô tả cách tạo ra một chuỗi dữ liệu {1,−1}trong đó chứa 10 bit 1.
2.5. Lập trình với Matlab 21 clear all rand(’seed’,0) noOne=0; k=1; while noOne<=9 n(k)=rand>0.5; s(k)=1-2*n(k); if s(k)==1 noOne=noOne+1 end k=k+1; end s
Kết quả thu được là một chuỗi 24 bit 1,−1trong đó có chứa 10 bit 1
s = Columns 1 through 15 1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 Columns 16 through 24 1 -1 -1 -1 -1 -1 1 -1 1 • Câu lệnh break
Câu lệnh break cho phép thoát sớm khỏi vòng lặp for hay vòng lặp while. Trong trường hợp có nhiều vòng lặp lồng vào nhau thì câu lệnhbreak chỉ cho phép thoát ra khỏi vòng lặp trong cùng. Ví dụ sau đây mô tả lại phương pháp tạo một chuỗi dữ liệu{1,−1}trong đó chứa 10 bit1sử dụng vòng lặpforkết hợp với câu lệnh break. Trong trường hợp có 100 bit đã được tạo ra nhưng chưa có đủ 10 bit 1 thì chương trình cũng dừng lại.
rand(’seed’,0) noOne=0; for k=1:100 n(k)=rand>0.5; s(k)=1-2*n(k); if s(k)==1 noOne=noOne+1; end if noOne==10 break end end s
Kết quả chúng ta cũng thu được một chuỗi 24 bit giống như ở ví dụ về câu lệnh while
s =
Columns 1 through 15
1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1
Columns 16 through 24
1 -1 -1 -1 -1 -1 1 -1 1