switch <điều kiện> case giá trị thử 1 khối lệnh 1
case {giá trị thử 2, giá trị thử 3,...} khối lệnh 2
otherwise khối lệnh 3
end
Điều kiện trong cấu trúc switch-case phải cĩ giá trị dạng số nguyên hoặc dạng chuỗi. lệnh case sẽ so sánh giá trị của điều kiện với các giá trị thử để thực hiện khối lệnh tương ứng. Nếu khơng cĩ giá trị thử nào phù hợp thì thực hiện khối lệnh 3.
Ví dụ:
diem=input('Nhap diem so: '); switch (diem) case {1,2,3,4} disp('loai yeu') case {5,6} disp('trung binh') case {7,8} disp('loai kha') case {9,10} disp('loai gioi') otherwise
disp('So lieu khong hop le') end
4.3 Vịng lặp
4.3.1 Vịng lặp for
for i= i1: Δi : i2 % hoặc i=i1:i2 nếu Δi = 1 Khối các lệnh
end
Ví dụ 1:
disp('chương trình tính tổng giai thừa 1!+2! +3!+...+n!') n = input ('Nhap gia tri n:');
if n==0, tong=1; else
tong=0; % gia tri khoi dau
for k=1:n
tong= tong+prod(1:k);
end
end
Ví dụ 2:
% chương trình giải tìm nghiệm đa thức bậc n
% Các hệ số nhập theo dạng véctơ hàng. Ví dụ: [2 5 3 1] p = input ('Nhap cac he so cua da thuc:');
x = roots(p)
disp(['Da thuc bac ',num2str(length(x)),', co cac nghiem la:']) for i=1:length(x)
disp(['Nghiem thu ',num2str(i),'= ',num2str(x(i))]) end
Ví dụ 3:
% chương trình in ra và tính tổng n số chẵn đầu tiên % S=2+4+...+2*n bằng vịng lặp for
n=input('nhap gia tri n: '); S=0;
for i=1:n
S=S+2*i;
fprintf('%2d la so chan thu:%3d\n',2*i,i) end
fprintf('Tong %2d so chan dau tien la:%3d\n',n,S)
4.3.2 Vịng lặp while
while <điều kiện>
Khối các câu lệnh thực hiện nếu điều kiện cịn đúng
end
Khác với vịng lặp for, số lần lặp của vịng lặp while khơng được xác định. Ta xét ví dụ tính tổng n số chẵn ở phần trên bằng vịng lặp while (thay vì for) :
% chương trình in ra và tính tổng n số chẵn đầu tiên % S=2+4+...+2*n bằng vịng lặp while
n = input ('Nhap gia tri n: '); while n<=0,
disp('Dieu kien: n>0'),
n = input ('Nhap lai gia tri n: '); end
S=0;i=1; while i<=n
S=S+2*i;
fprintf('%2d la so chan thu:%3d\n',2*i,i) i=i+1;
end
disp(['Tong can tim la: ',num2str(S)]);
Ghi chú : Việc kiểm tra điều kiện nhập n>0 cũng được thực hiện bằng vịng lặp while để
4.4 Các lệnh tạo sự gián đoạn
• Lệnh continue
Trong vịng lặp for hay while, khi gọi continue ngay lập tức chu trình tính chuyển sang bước lặp kế tiếp, mọi lệnh chưa được thực hiện của vịng lặp (thuộc về
bước lặp hiện tại) sẽ bị bỏ qua.
• Lệnh break
Lệnh break mạnh hơn lệnh continue, nĩ làm ngừng ngay lập tức vịng lặp đang tính. Lệnh break cĩ tác dụng cả trong các cấu trúc điều kiện if, switch. Nếu break được sử dụng ngồi vịng lặp for hay while trong phạm vi của một M-file, khi ấy M-file sẽ bị ngừng tại vị trí của break.
Ví dụ: Viết đoạn chương trình tìm và in ra màn hình các số nguyên tố bé hơn 100.
clear, clc
disp('================================================') disp('Chuong trinh tim va in ra cac so nguyen to < 100') fprintf('%3d la so nguyen to thu:%3d\n',2,1)
count=1; % bien dung de dem so thu tu for m= 3:1:100
for k=2:1:m-1
if mod(m,k)==0, break, end end
if k == m-1, count=count+1;
fprintf('%3d la so nguyen to thu:%3d\n',m,count) end
end • Lệnh return
Việc thi hành các M-file hàm sẽ kết thúc khi gặp dịng cuối cùng của file đĩ hoặc gặp dịng lệnh return. Lệnh return giúp ta kết thúc một hàm mà khơng cần phải thi hành hết các lệnh của hàm đĩ.
• Hàm error
Hàm error sẽ hiển thị một chuỗi lên cửa sổ lệnh và dừng thực hiện hàm, trả điều khiển về cho cửa sổ lệnh và bàn phím. Hàm này rất hữu dụng để cảnh báo việc sử dụng hàm khơng đúng mục đích.
error('dịng nhắn') : kết thúc thực thi lệnh và hiển thị dịng nhắn trên màn hình. errordlg('dịng nhắn') : kết thúc thực thi lệnh và hiển thị hộp thoại chứa dịng nhắn.
Ví dụ: % chương trình tính định thức ma trận A A = input('Nhap ma tran vuong A:') if isempty(A) % Nếu A rỗng
errordlg('Nhap lai ma tran A','Dialog') return
else
DET=det(A) end
CHƯƠNG 5