Các lệnh cơ bản
Lệnh cơ bản là lệnh mà trong đó không chứa các lệnh khác. Các lệnh cơ bản bao gồm lệnh gán, lời gọi chương trình con, các lệnh nhập, xuất, lệnh nhảy goto. Trong một lệnh cơ bản có thể chứa các biểu thức mà cấu trúc điều khiển đã được trình bày ở phần trên. Các cấu trúc trong chương trình thường có là: hợp thành, lựa chọn và lặp lại. Các ngôn ngữ khác nhau cài đặt các cấu trúc này một cáh khác nhau.
Điều khiển tuần tự dùng nhãn lệnh và lệnh GOTO
Cơ chế ban đầu của điều khiển tuần tự trong hầu hết các ngôn ngữ là ghi nhãn lệnh và chuyển điều khiển tới lệnh có nhãn từ chỗ này sang chỗ khác trong chương trình. Việc chuyển điều khiển thường được thực hiện bằng lệnh GOTO. Có hai dạng của lệnh GOTO là:
1/ GOTO không điều kiện. Trong một chuỗi các lệnh, một lệnh GOTO không điều kiện như GOTO NEXT chuyển điều khiển tới lệnh có nhãn là NEXT. Lệnh đứng sau GOTO sẽ không được thực hiện.
2/ GOTO có điều kiện. Trong một chuỗi lệnh, một lệnh GOTO có điều kiện như IF A = 0 then GOTO NEXT chuyển điều khiển tới lệnh có nhãn là NEXT chỉ khi điều kiện sau IF đúng.
Sử dụng hai dạng GOTO này, chúng ta dễ dàng biểu diễn các dạng điều khiển cơ bản như sau
Lệnh GOTO có thuận tiện là dễ dùng, và có hiệu quả trong thực hiện vì nó phản ánh cấu trúc cơ bản của máy tính quy ước (conventional computers), trong đó mỗi một từ lệnh hoặc byte lệnh đều có địa chỉ, và trong phần cứng có các lệnh nhảy được xây dựng để chuyển điều kkhiển đến địa chỉ được chỉ định. Lệnh GOTO biểu thị một cấu trúc điều khiển tự nhiên để người lập trình chuyển ngôn ngữ cấp cao sang hợp ngữ. Hầu hết các ngôn ngữ cũ đều có cả lệnh GOTO cơ bản và nhiều dạng cải tiến đặt nền móng cho việc dùng nhãn như là dữ liệu. Trong các ngôn ngữ mới như Pascal điều khiển tuần tự trên cơ sở lệnh GOTO ít quan trong hơn mặc dù vẫn còn lệnh đó.
Trong một số ngôn ngữ mới, lệnh GOTO đã bị loại bỏ hoàn toàn. Vì sử dụng nhãn và lệnh GOTO thì chương trình trở nên rất khó đọc vì không có cấu trúc tổng thể và thứ tự các lệnh trong văn bản chương trình nguồn không tương ứng với thứ tự các lệnh khi thực hiện.
Các lệnh cấu trúc
Một lệnh có cấu trúc là một lệnh chứa các lệnh khác. Các lệnh thành phần của một lệnh có cấu trúc có thể là một lệnh cơ bản hoặc một lệnh có cấu trúc. Hầu hết ngôn ngữ cung
cấp một tập hợp các lệnh có cấu trúc biểu thị các dạng điều khiển cơ bản ( hợp thành, lựa chọn và lặp lại) mà không cần dùng lệnh GOTO.
Lệnh hợp thành (Compound Statements)
Lệnh hợp thành là một chuỗi các lệnh được đặt vào trong một cặp ký hiệu thể hiện sự mở đầu và kết thúc của chuỗi đó. Chẳng hạn trong Pascal, lệnh hợp thành là chuỗi các lệnh được đặt trong cặp tữ khóa begin và end như sau:
Begin Lệnh 1; Lênh 2; ... Lệnh n End
Cấu trúc lệnh hợp thành cho phép một tập hợp các lênh được trừu tượng hóa thành một lệnh đơn.
Lệnh hợp thành được cài đặt trong máy tính ảo bằng cách thiết lập một khối các mã lệnh có thể thực hiện được biểu diễn cho mỗi một lệnh của chuỗi lệnh trong bộ nhớ. Thứ tự mà chúng xuất hiện trong bộ nhớ xác định thứ tự trong đó chúng được thực hiện.
Lệnh điều kiện (Conditional Statements)
Lệnh điều kiện là một lệnh biểu thị sự lựa chọn của hai hoặc nhiều lệnh. Việc lưạ chọn được điều khiển bằng cách kiểm tra một số điều kiện thường được viết trong dạng biểu thức của các phép toán quan hệ và logic. Các lệnh điều kiện phổ biến là lệnh IF và lệnh CASE.
Lệnh IF được cụ thể hóa thành các dạng IF một nhánh, IF hai nhánh và IF đa nhánh. Chọn thực hiện một lệnh được biểu thị là IF một nhánh: IF <điều kiện> THEN <Lệnh> ENDIF
Chọn một trong hai dùng IF hai nhánh: IF <điều kiện> THEN <Lệnh1> ELSE <Lệnh2> ENDIF
IF <điều kiện1> THEN <Lệnh1> ELSIF<điều kiện2> THEN <Lệnh2> .
. .
ELSIF <điều kiệnN> THEN <LệnhN> ELSE <LệnhN+1> ENDIF
Lệnh CASE
Ðiều kiện trong lệnh If đa nhánh thường phải lặp lại việc kiểm tra giá trị của một biến, ví dụ:
IF TAG = 0 THEN <Lệnh 0>
ELSIF TAG = 1 THEN <Lệnh 1>
ELSIF TAG = 2 THEN <Lệnh 2>
ELSE <Lệnh 3> ENDIF
Cấu trúc phổ biến này được biểu diễn một cách súc tích hơn bằng lệnh CASE CASE TAG OF
0: <Lệnh 0> 1: <Lệnh 1>
2: <Lệnh 2>
OTHERS: <Lệnh3> ENDCASE
Cài đặt lệnh điều kiện
Lệnh IF được cài đặt bằng cách dùng lệnh rẽ nhánh và lệnh nhảy có điều kiện hoặc không có điều kiện trong phần cứng. Kết quả tương tự như đã mô tả trong phần 7.3.2.
Lệnh lặp (Interation Statements)
Lặp lại đơn, kiểu đơn giản nhất của lệnh lặp xác định phần thân (của lệnh) được thực hiện một số cố định lần. Lệnh PERFORM của COBOL là một điển hình: PERFORM <thân> k TIMES
Lặp lại khi điều kiện đúng: WHILE < test > DO <thân>
Lặp lại trong khi tăng một sự đếm: FOR i:=1 STEP 2 UNTIL 30 DO <thân>
Lặp không xác định, trong đó điều kiện để thoát khỏi vòng lặp không đặt tại đầu vòng, như trong Ada:
LOOP ...
EXIT WHEN <điều kiện> ...
END LOOP;
Hoặc trong Pascal sử dụng vòng lặp WHILE với điều kiện luôn luôn đúng: WHILE true DO BEGIN .... END;