[Pascal 4] Câu lệnh có cấu trúc trong pascal

0
221

1. Câu lệnh rẽ nhánh trong pascal

a. Câu lệnh rẽ nhánh dạng không đầy đủ

Cú pháp:

if <dieu_kien> then <cong_viec>;

Câu lệnh trên được hiểu rằng nếu điều kiện là đúng thì thực hiện công việc còn nếu điều kiện sai thì không làm gì cả.

b. Câu lệnh rẽ nhánh dạng đầy đủ

Cú pháp

if <dieu_kien> then <cong_viec_1>
else <cong_viec_2>;

Nếu điều kiện là đúng thì thực hiện công việc 1, ngược lại là điều kiện sai thì thực thi công việc 2.
Chú ý trước ELSE không có dấu ; (chấm phẩy).

* Nếu công việc thực hiện có từ 2 câu lệnh trở lên ta phải đặt chúng trong cặp từ khóa BEGIN và END;


2. Câu lệnh rẽ nhiều nhánh case of trong pascal

a. Case of dạng không đầy đủ

Cú pháp:

case <bieu_thuc> of
Hang_1: <cong_viec_1>;
Hang_2: <cong_viec_1>;
...
Hang_n: <cong_viec_1>;
end;

Nếu giá trị của biểu thức rơi vào hằng nào thi 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 không bằng một hằng nào thì sẽ kết thúc lệnh case of mà không làm gì.

b.Case of dạng đầy đủ

Cú pháp:

case <bieu_thuc> of
Hang_1: <cong_viec_1>;
Hang_2: <cong_viec_2>;
...
Hang_n: <cong_viec_n>
else <cong_viec_n+1>;
end;

Nếu giá trị của biểu thức rơi vào hằng nào thi 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 không bằng một hằng nào thì sẽ thực hiện công việc thứ n+1 và thoát.
Lưu ý:
+ Các giá trị hang_1hang_2,…,hang_n phải là kiểu đếm được (không phải là kiểu số thực).
+ Các giá trị hang_1hang_2,…,hang_n có thể là kiểu liệt kê hay kiểu đoạn con.

Ví dụ:
Kiểu liệt kê:

  • 1,3,5,7
  • a,c,d

Kiểu đoạn con:

  • 1..10 (2 dấu chấm)
  • a..z

3. Câu lệnh lặp với số lần biết trước (vòng lặp FOR)

a. Dạng 1 (lặp tăng dần)

for <bien>:=<gia_tri_dau> to <gia_tri_cuoi> do
<cong_viec>;

– Bước 1: Kiểm tra giá trị đầu có <= (nhỏ hơn hoặc bằng) giá trị cuối hay không. Nếu đúng thì gán giá trị đầu cho biến và thực thi công việc.
– Bước 2: Kiểm tra giá trị biến <> (khác) giá trị cuối hay không. Nếu đúng thì tăng thêm biến một đơn vị (bien:=SUCC(bien)) rồi thực hiện công việc.
– Lập lại bước 2, cho đến khi giá trị biến bằng giá trị cuối thì kết thúc câu lệnh.
Lưu ý:Biến sau từ khoá for phải là biến đếm được và giá trị đầu phải <= giá trị cuối.

b. Dạng 2 (lặp giảm dần)

for &lt;bien&gt;:=&lt;gia_tri_dau&gt; downto &lt;gia_tri_cuoi&gt; do
&lt;cong_viec&gt;;

– Bước 1: Kiểm tra giá trị đầu có >= (nhỏ hơn hoặc bằng) giá trị cuối hay không. Nếu đúng thì gán giá trị đầu cho biến và thực thi công việc.
– Bước 2: Kiểm tra giá trị biến <> (khác) giá trị cuối hay không. Nếu đúng thì giảm biến xuống một đơn vị(bien:=PRED(bien)) rồi thực hiện công việc.
– Lập lại bước 2, cho đến khi giá trị biến bằng giá trị cuối thì kết thúc câu lệnh.

Lưu ý:

  • Biến sau từ khoá for phải là biến đếm được và giá trị đầu phải >= giá trị cuối.
  • Không giống với các ngôn ngữ khác, Pascal không kiểm tra (biến>cuối) trong câu lệnh FOR … TO … DO để kết thúc vòng lặp mà là kiểm tra (biến=cuối) để thực hiện lần lặp cuối cùng. Vì lẽ đó việc can thiệp vào biến đếm có thể gây ra sự cố “vòng lặp vô tận”. Ngay cả khi bien đã duyệt qua hết phạm vi của kiểu dữ liệu (tức giá trị 255) thì bien quay lai giá trị 0 … và mọi thứ lại tiếp tục …trừ khi gõ Ctrl – Break.

4. Câu lệnh lặp trong pascal với số lần chưa biết trước

a. Vòng lặp WHILE trong pascal

Cú pháp:

while &lt;dieu_kien&gt; do
&lt;cong_viec&gt;;

Khi gặp vòng lặp chương trình sẽ kiểm tra điều kiện, nếu điều kiện đúng thì thực thi công việc, sau đó quay lại kiểm tra điều kiện. Cứ tiếp tục như thế cho tới khi nào điều kiện sai thì kết thúc.
{Trong khi điều kiện đúng thì làm công việc}.

b. Vòng lặp REPEAT  trong pascal

Cú pháp:

repeat
&lt;cong_viec&gt;
until &lt;dieu_kien&gt;;

Khi gặp vòng lặp chương trình sẽ thực thi công việc, sau đó kiểm tra điều kiện, nếu điều kiện sai thì tiếp tục thực hiện công việc sau đó kiểm tra điều kiện. Cứ tiếp tục như thế cho tới khi nào điều kiện đúng thì kết thúc. {Làm công việc cho đến khi điều kiện đúng}.

Lưu ý:

+ Không giống với vòng lặp For cả hai vòng lặp While và Repeat đều là vòng lặp không xác định trước số lần lặp. Cần phải có câu lệnh thay đổi giá trị biến điều khiển vòng lặp để có thể thoát ra khỏi vòng lặp.
+ Trong vòng lệnh while thì điều kiện sẽ được kiểm tra trước, nếu điều kiện đúng thì thực hiện công việc. Còn trong lệnh repeat thì ngược lại, công việc được làm trước rồi mới kiểm tra điều kiện, nếu điều kiện đúng thì vòng lặp kết thúc. Như vậy đối với vòng lặp repeat bao giờ thân vòng lặp cũng được thực hiện ít nhất một lần, trong khi thân vòng lặp while có thể không được thực hiện lần nào.
+ Nếu dùng 2 lệnh này để giải cùng một bài toán, cùng một giải thuật như nhau thì điều kiện sau while và điều kiện sau until là phủ định nhau.
+ Các câu lệnh trong vòng lặp repeat không cần phải đặt trong cặp từ khóa BEGIN và END;

 

* Một số lệnh khác liên quan

a. Lệnh goto trong pascal

– Cú pháp: goto nhan;
Trong đó nhan là một nhãn, tên nhãn được đặt theo quy tắc đặt tên {đã biết} hoặc là số nguyên từ 0 đến 9999
– Hoạt động: Khi gặp lệnh goto chương trình nhảy vô điều kiện đến câu lệnh sau nhãn.
– Lưu ý: Lệnh goto cho phép nhảy từ vị trí này đến vị trí khác trong cùng 1 thân hàm, thủ tục, nhảy từ trong vòng lặp ra ngoài, không cho phép nhảy từ ngoài vào trong vòng lặp, hàm, thủ tục, khối lệnh

b. Lệnh break trong pascal

– Cú pháp: break;
– Hoạt động: lệnh break hoạt động khi được đặt trong thân các vòng lặp for, while, repeat. Khi gặp lệnh break; thì máy sẽ thoát khỏi chu trình của vòng lặp, nếu có nhiều vòng lặp lồng nhau sẽ thoát vòng lặp trong nhất chứa lệnh break;

c. Lệnh exit trong pascal

– Cú pháp: Exit;
– Hoạt động: Lệnh exit sẽ làm chấm dứt chương trình con nếu nó được đặt trong ctc, làm chấm dứt chương trình chính nếu nó ở chương trình chính

d. Lệnh halt  trong pascal

– Cú pháp: halt;
– Hoạt động: Khi gặp lệnh halt thì máy sẽ dừng ngay chương trình đang chạy. Lệnh này thường dùng khi thuật toán gặp 1 TH không thể tiếp tục được.

LEAVE A REPLY

Please enter your comment!
Please enter your name here