Lệnh CASE trong Pascal
Ở bài trước mình đã hướng dẫn sử dụng lệnh if dùng để rẻ nhánh chương trình trong Pascal. Vậy thì trong bài này ta sẽ tiếp tục học một lệnh khác cũng có công dụng rẻ nhánh tương tự, đó là lệnh CASE.
Lưu ý: Lệnh CASE ít khi được sử dụng để lập trình hơn trong thực tế, thay vào đó người ta sẽ sử dụng lệnh if để thay thế.
1. Lệnh CASE trong Pascal là gì?
Nếu lệnh if-then-else dùng để rẻ chương trình thành nhiều hướng khác nhau thì lệnh CASE cũng có chức năng tương tự. Nghĩa là bạn có thể sử dụng CASE để điều hướng code thành nhiều nhánh khác nhau.
Cú pháp của CASE như sau:
Bài viết này được đăng tại [free tuts .net]
case (expression) of L1 : S1; L2: S2; ... ... Ln: Sn; end;
Trong đó:
- Case, of và end là 3 từ khóa bắt buộc phải có. Cuối lệnh end phải có cặp dấu chấm phẩy ;.
- L1, L2, ..., Ln là những trường hợp có thể xảy ra của chương trình.
Hãy xem một ví dụ dưới đây để hiểu hơn về CASE.
program checkCase; var level: char; begin level := 'A'; case (level) of 'A' : writeln('Level A!' ); 'B', 'C': writeln('Level B' ); 'D' : writeln('Level D' ); 'F' : writeln('Level F' ); end; writeln('Level cua ban la: ', grade ); end.
Chạy chương trình này bạn sẽ thu được kết quả như sau:
Level A! Level cua ban la: A
2. Lệnh CASE ... ELSE trong Pascal
Trong lệnh if có dòng ELSE dùng để xử lý mặc định nếu những điều kiện ở phía trên không đúng. Trong CASE cũng vậy, bạn có thể bổ sung lệnh này để thực hiện những đoạn code sẽ xảy ra nếu những nhánh trên không thỏa yêu cầu. Cú pháp như sau:
case (expression) of L1 : S1; L2 : S2; ... ... Ln: Sn; else Sm; end;
Quay lại ví dụ trên, ta sẽ thực hiện lại có kèm lệnh ELSE như sau:
program checkCaseElse; var level: char; begin level := 'A'; case (level) of 'A' : writeln('Level A!' ); 'B', 'C': writeln('Level B' ); 'D' : writeln('Level D' ); 'F' : writeln('Level F' ); else writeln('Ban nhap level sai roi'); end; writeln('Level cua ban la: ', grade ); end.
Nếu bạn thay đổi giá trị ở dòng level := 'A'
thành một giá trị khác ngoài (A, B, D, F) thì sẽ xuất hiện dòng 'Ban nhap level sai roi'.
3. Nested CASE trong Pascal
Nested CASE hay còn gọi là CASE lồng nhau. Thực ra đây cũng là một lệnh rẻ nhánh, vì vậy bạn có thể lồng nó vào nhau để tạo ra một chương trình có rất nhiều nhánh. Tuy nhiên lời khuyên là nếu chương trình cần phải sử dụng CASE lồng nhau thì bạn hãy chuyển sang sử dụng IF vì nó rõ ràng và tường minh hơn.
Hãy xem ví dụ dưới đây để biết cách sử dụng CASE lồng nhau.
program checknestedCase; var a, b: integer; begin a := 100; b := 200; case (a) of 100: begin writeln('Gia tri a la 100' ); case (b) of 200: writeln('Gia tri b la 200' ); end; end; end; end.
Case b chỉ xảy ra khi a có giá trị là 100. Bạn hãy thay đổi giá trị của từng biến để chạy và xem kết quả nhé.
Như vậy là mình đã giới thiệu xong cách sử dụng lệnh CASE trong Pascal. Đây là lệnh xếp thứ hai sau lệnh If, trong danh sách những lệnh rẻ nhánh của Pascal.