Ngôn ngữ lập trình Chương VII: Điều khiển tuần tự 74
1/ Vì ký hiệu trung tố chỉ thích hợp đối với phép toán hai ngôi nên một ngôn ngữ
không chỉ dùng ký hiệu trung tố mà còn kết hợp với ký hiệu Prexfix hoặc Postfix. Ðiều
này làm cho việc dịch trở nên phức tạp hơn.
2/ Khi có nhiều hơn một toán tử trung tố xuất hiện trong một biểu thức thì có thể xẩy
ra tình trạng mập mờ, nghĩa là một biểu thức có thể biểu diễn bằng nhiều cây biểu
thức. Ví dụ biểu thức trung tố: A * B + C có thể được biểu diễn thành hai cây như sau:
Dấu ngoặc có thể được dùng để chia các toán tử và toán hạng thành các nhóm, như (A
* B) + C hoặc A * (B + C), nhưng trong các biểu thức phức tạp thì các dấu ngoặc lồng
nhiều lớp là một trở ngại lớn cho người lập trình. Vì lý do này các ngôn ngữ thường sử
dụng quy tắc điều khiển ẩn mà việc dùng dấu ngoặ
c là không cần thiết. Hai quy tắc ẩn
phổ biến là:
a/ Quy tắc ưu tiên trước: Các phép toán xuất hiện trong biểu thức được sắp xếp theo
một thứ bậc hoặc một thứ tự ưu tiên trước. Trong một biểu thức có nhiều phép toán,
thứ bậc theo quy tắc ẩn là phép toán nào có bậc ưu tiên cao hơn sẽ được thực hiện
trước. Ví dụ trong biểu thức A * B + C, phép nhân ưu tiên trước phép cộng nên sẽ
được thực hiện trước.
b/ Quy tắc kết hợp: Trong một biểu thức có nhiều phép toán cùng cấp theo thứ tự ưu
tiên thì nguyên tắc kết hợp là cần thiết để hoàn thiện việc xác định thứ tự các phép
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
a
c
k
.
c
o
m
.
Ngôn ngữ lập trình Chương VII: Điều khiển tuần tự 75
7.3.5 Biểu diễn trong thời gian thực hiện của biểu thức
Nhiều sự biểu diễn thời gian thực của biểu thức được dùng trong cài đặt ngôn ngữ. Sau
đây là một số sự lựa chọn đươc dùng:
1/ Dãy mã máy. Kỹ thuật phổ biến nhất là dịch các biểu thức thành dạng mã máy. Thứ
tự các lệnh phản ánh cấu trúc điều khiển tuần tự của biế
n thức ban đầu. Biễu diễn mã
máy cho phép dùng trình thông dịch của phần cứng nên thực hiện rất nhanh.
2/ Cấu trúc cây. Biểu thức có thể được thực hiện một cách trực tiếp trong biểu diễn cấu
trúc cây tự nhiên của chúng, sử dụng trình thông dịch mềm. Ðây là kỹ thuật cơ bản
đươc dùng trong LISP nơi mà toàn bộ chương trình được biểu diễn như là một cấu trúc
cây trong quá trình thực hiện.
3/ Dạng frefix hoặ
c Postfix. Biểu thức trong dạng prefix hoặc postfix có thể được thực
hiện bằng giải thuật thông dịch mà nó quét biểu thức từ trái qua phải. Biểu diễn postfix
có một lợi ích đặc biệt ở đây, là thứ tự của các ký hiệu trong biểu diễn postfix tương
ứng với thứ tự trong đó các phép toán khác nhau phải được thực hiện. Biểu diễn prefix
là dạng có thể thực hiện của chương trình trong SNOBOL4.
Các chi
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
t
r
a
c
k
.
c
o
m
.
Ngôn ngữ lập trình Chương VII: Điều khiển tuần tự 76
Lệnh hợp thành Lệnh lựa chọn Lệnh lặp lại
S0 S0 S0
GOTO L1 IF A=0 THEN GOTO
L1
L1: IF A=0 THEN
GOTO L2
L2: S2 S1 S1
GOTO L3 GOTO L2 GOTO L1
L1: S1 L1: S2 L2: S2
GOTO L2 L2: S3
L3 : S3
Chuỗi lệnh thực hiện Chuỗi lệnh thực hiện Chuỗi lệnh thực hiện
S0 S1 S2 S3 S0 S1 S3 S0 S2
Hoặc S0 S2 S3 Hoặc S0 S1 S2
Hoặc S0 S1 S1 S2
F
-
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
u
-
t
r
a
c
k
.
c
o
m
.
Ngôn ngữ lập trình Chương VII: Điều khiển tuần tự 77
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
CASE TAG OF
0: <Lệnh 0>
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
.
Ngôn ngữ lập trình Chương VII: Điều khiển tuần tự 78
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
khi một ngoại lệ có thể diễn ra. Ví dụ
void example () {
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
.