Câu lệnh Case - Of

Chúng ta có thể thấy câu lệnh If - Then - Else cho phép chúng ta kiểm tra và thực hiện nhiều quyết định trong chương trình. Tuy nhiên khi có quá nhiều giá trị cần phải kiểm tra thì Pascal cung cấp thêm câu lệnh Case - Of để thực hiện điều này dễ dàng hơn.

Giống như If - Then - Else, Case - Of cũng có 2 dạng như sau:

Dạng thiếu

Cú pháp:

Case <Giá trị> Of
    <Trường hợp 1> : <Công việc 1>;
    <Trường hợp 2> : <Công việc 2>;
    ...
    <Trường hợp n> : <Công việc n>;
End;

Trong đó <Giá trị> là một biến hoặc biểu thức là kiểu đếm được (kiểu số nguyên, kiểu liệt kê hoặc kiểu miền con). Nếu giá trị của biểu thức hoặc biến đó rơi vào trường hợp nào thì công việc tương ứng sẽ được thực hiện rồi kết thúc lệnh Case - Of. Nếu giá trị của biểu thức hoặc biến không rơi vào trường hợp nào thì sẽ kết thúc lệnh Case - Of mà không làm gì.

Program checkCase;
Var grade: char;
Begin
    grade := 'A';
    Case grade Of
        'A' : Writeln('Excellent!');
        'B', 'C': Writeln('Well done');
        'D' : Writeln('You passed');
        'F' : Writeln('Better try again');
    End;
    Writeln('Your grade is  ', grade );
end.

Khi đoạn code trên được biên dịch và thực thi, nó in ra kết quả như sau:

Excellent!
Your grade is A

Ví dụ về sử dụng kiểu miền con trong việc kiểm tra giá trị:

Program charChecking;
Var c : char;
Begin
    c := 'X';
    Write(c,' là: ')
    Case c Of
     '0' .. '9' : Writeln('chữ số (0-9)');
     'a' .. 'z' : Writeln('chữ viết thường (a-z)');
     'A' .. 'Z' : Writeln('chữ viết hoa (A-Z)');
     '+' , '-'  : Writeln('dấu (+ hoặc -)');
    end;
    result := s;
End.

Khi đoạn code trên được biên dịch và thực thi, nó in ra kết quả như sau:

X là: chữ viết hoa (A-Z)

Dạng đầy đủ

Cú pháp:

Case <Giá trị> Of
    <Trường hợp 1>: <Công việc 1>;
    <Trường hợp 2>: <Công việc 2>;
    ...
    <Trường hợp n>: <Công việc n>;
    Else <Công việc n + 1>;
End;

Nếu giá trị của biểu thức hoặc biến đó rơi vào trường hợp nào thì công việc tương ứng sẽ được thực hiện rồi kết thúc lệnh Case - Of. Nếu giá trị của biểu thức hoặc biến không rơi vào trường hợp nào thì sẽ thực hiện <Công việc n + 1> và kết thúc lệnh Case - Of.

Program checkCase;
Var grade: char;
Begin
    grade := 'F';
    Case grade Of
        'A' : Writeln('Excellent!');
        'B', 'C': Writeln('Well done');
        'D' : Writeln('You passed');
    Else 
        Writeln('Better try again');
    End;
    Writeln('Your grade is  ', grade );
end.

Khi đoạn code trên được biên dịch và thực thi, nó in ra kết quả như sau:

Better try again Your grade is F

Bình luận