Ngôn Ngữ Lập Trình C#
Console.WriteLine( “Ban cho mau cham”);
goto case mauTim;
case mauTim:
Console.WriteLine( “Ban chon mau tim”);
goto case mauLuc;
default:
Console.WriteLine( “Ban khong chon mau nao het”);
break;
}
Console.WriteLine( “Xin cam on!”);
}
}
Trong ví dụ 3.9 trên liệt kê bảy loại màu và dùng câu lệnh switch để kiểm tra các trường hợp
chọn màu.Ở đây chúng ta thử phân tích từg câu lệnh case mà không quan tâm đến giá trị
biến chonMau.
Giá trị chonMau Câu lệnh case thực hiện Kết quả thực hiện
mauDo case mauDo Ban chon mau do
mauCam case mauCam Ban chon mau cam
mauVang case mauVang
case mauLuc
Ban chon mau luc
mauLuc case mauLuc Ban chon mau luc
mauLam case mauLam
case mauCham
case mauTim
case mauLuc
Ban chon mau lam
Ban chon mau cham
Ban chon mau tim
như sau:
case 1:
DoAnything();
// Trường hợp này không thể nhảy xuống case 2
case 2:
trong đoạn chương trình thứ hai trường hợp case 1 có một câu lệnh nên không thể nhảy
xuống được. Nếu muốn trường hợp case1 nhảy qua case 2 thì ta phải sử dụng câu lệnh goto
một các tường minh:
case 1:
DoAnything();
goto case 2;
case 2:
Do vậy khi thực hiện xong các câu lệnh của một trường hợp nếu muốn thực hiện một trường
hợp case khác thì ta dùng câu lệnh nhảy goto với nhãn của trường hợp đó:
goto case <giá trị>
Khi gặp lệnh thoát break thì chương trình thoát khỏi switch và thực hiện lệnh tiếp sau khối
switch đó.
Nếu không có trường hợp nào thích hợp và trong câu lệnh switch có dùng câu lệnh defalut
thì các câu lệnh của trường hợp default sẽ được thực hiện. Ta có thể dùng default để cảnh
báo một lỗi hay xử lý một trường hợp ngoài tất cả các trường hợp case trong switch.
Trong ví dụ minh họa câu lệnh switch trước thì giá trị để kiểm tra các trường hợp thích hợp
là các hằng số nguyên. Tuy nhiên C# còn có khả năng cho phép chúng ta dùng câu lệnh
switch với giá trị là một chuỗi, có thể viết như sau:
switch (chuoi1)
{
case “mau do”:
break;
case “mau cam”:
Nền Tảng Ngôn Ngữ C#
{
int i = 0;
lap: // nhãn
Console.WriteLine(“i:{0}”,i);
i++;
if ( i < 10 )
goto lap; // nhãy về nhãn lap
return 0;
}
}
Nền Tảng Ngôn Ngữ C#
60
.
.
Ngôn Ngữ Lập Trình C#
Kết quả:
i:0
i:1
i:2
i:3
i:4
i:5
i:6
i:7
i:8
i:9
Nếu chúng ta vẽ lưu đồ của một chương trình có sử dụng nhiều lệnh goto, thì ta sẽ thấy kết
quả rất nhiều đường chồng chéo lên nhau, giống như là các sợi mì vậy. Chính vì vậy nên
return 0;
}
}
Kết quả:
i:0
i:1
i:2
i:3
i:4
i:5
i:6
i:7
i:8
i:9
Đoạn chương trình 3.11 cũng cho kết quả tương tự như chương trình minh họa 3.10 dùng
lệnh goto. Tuy nhiên chương trình 3.11 rõ ràng hơn và có ý nghĩa tự nhiên hơn. Có thể diễn
giải ngôn ngữ tự nhiên đoạn vòng lặp while như sau: “Trong khi i nhỏ hơn 10, thì in ra giá
trị của i và tăng i lên một đơn vị”.
Lưu ý rằng vòng lặp while sẽ kiểm tra điều kiện trước khi thực hiện các lệnh bên trong, điều
này đảm bảo nếu ngay từ đầu điều kiện sai thì vòng lặp sẽ không bao giờ thực hiện. do vậy
nếu khởi tạo biến i có giá trị là 11, thì vòng lặp sẽ không được thực hiện.
Vòng lặp do while
Đôi khi vòng lặp while không thoả mãn yêu cầu trong tình huống sau, chúng ta muốn chuyển
ngữ nghĩa của while là “chạy trong khi điều kiện đúng” thành ngữ nghĩa khác như “làm điều
này trong khi điều kiện vẫn còn đúng”. Nói cách khác thực hiện một hành động, và sau khi
hành động được hoàn thành thì kiểm tra điều kiện. Cú pháp sử dụng vòng lặp do while như
sau:
do