Tải bản đầy đủ (.ppt) (58 trang)

Bài giảng ngôn ngữ lập trình cấu trúc điều khiển

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (171.64 KB, 58 trang )

Chương 4
CẤU TRÚC ĐIỀU KHIỂN

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

11


Nội dung
 Điều khiển trình tự (Sequence Control)

– Expressions
– Statements
– Subprograms
 Điều khiển dữ liệu (Data control)







Basic concepts
Local data and environments
Shared data: dynamic scope
Shared data: block structure
Shared data: parameter transmission

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

2




4.1. Điều khiển trình tự
 Biểu thức (expressions)
 Phát biểu (statements)
 Chương trình con (subprograms)

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

3


Biểu thức
 Cơ chế điều khiển
 Cú pháp
 Dạng thời gian thực thi của biểu thức

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

4


Cơ chế điều khiển
 Sự chồng chất hàm (functional composition)

(A + B)∗(C - A)

*

∗ (+ (A, B), - (C, A))


-

+

A

B

C

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

A

5


Cơ chế điều khiển
 Hiệu ứng lề

+

– A* FUNC(X) + A
*
A

A
FUNC(X)


(A+)

(A*)

– A*B*C với số dương nhỏ nhất biểu diễn được trong máy
tính
10-38 và A= 1020 , B=10-20 và C=10-20
(A * B) * C = (1020*10-20) * 10-20 = 1*10-20= 10-20
A * (B * C) = 1020*(10-20 * 10-20) = 1020 * 0= 0
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

6


Cú pháp của biểu thức
 Trung tố (infix): phổ biến và tự nhiên
(A + B) * (C - A)

– Chỉ dùng cho các phép toán hai toán hạng
– Cần có qui định về độ ưu tiên về thứ tự thực hiện các
phép toán để giảm tính mơ hồ (ambiguity)

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

7


Cú pháp của biểu thức
 Dạng tiền tố (prefix)


– Tiền tố thường (ordinary)
∗ (+ (A, B), - (C, A))
– Tiền tố Cambridge Polish
(∗ (+ A B) (- C A))
– Tiền tố Polish
∗ +AB-CA

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

8


Cú pháp biểu thức
 Dạng hậu tố (postfix / suffix)

– Thông thường
((A, B) +, (C, A) -) ∗
– Polish
AB+CA-∗
– Thích hợp cho việc biểu diễn dạng thời gian thực thi
của biểu thức

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

9


Dạng thời gian thực thi của biểu thức
 Các biểu thức ở các dạng cú pháp được dịch sang dạng thời
gian thực thi trước khi được thực thi thật sự bởi phần cứng

máy tính hoặc chương trình thông dịch

– Biên dịch: chuỗi các lệnh máy
– Thông dịch: cấu trúc cây, dạng tiền tố hoặc hậu tố

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

10


Dạng thời gian thực thi của biểu thức
 Biên dịch: chuỗi các lệnh máy sinh ra cho biểu thức ở dạng hâu
tố:
((A, B) +, (C, A)-) *

PUSH
PUSH
ADD
PUSH
PUSH
SUB
MUL

A
B
C
A

A


A
B

A+B

A+B

A+B

A+B

C

C
A

C-A

AB+CA∗

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

(A+B)∗(C-A)

11


Điều khiển trình tự giữa các phát biểu






Phát
Phát
Phát
Phát

biểu
biểu
biểu
biểu

GOTO
ghép
điều kiện
lặp

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

12


GOTO

GOTO L

JMP L

L


Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

13


Phát biểu ghép

begin
S 1;
S 2;

S n;
end

S1 codes
S2 codes

Sn codes

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

14


Phát biểu điều kiện

• if:

if A = 0 then S1

else S2;
JEQ0 A L1

S3;

S2 codes
JMP L2

L1
L2

S1 codes
S3 codes

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

15


Phát biểu điều kiện

case:
var E: 0..2;
case E of
1: S1;
2: S2;
else: S0
end;
S 3;


α

α+1
α+2
L1
L2
L0
L3

E →v
JMP α+v
JMP L0
JMP L1
JMP L2
S1 codes
JMP L3

JUMP
table

S2 codes
JMP L3
S0 codes
S3 codes

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

16



Phát biểu lặp
for I := E
for:

1

to E2 do S;

I := E1;
L0: if I > E2 then GOTO L1;
S;
I := I + 1;
GOTO L0;
L1 : …

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

17


Phát biểu lặp

while C do S;
while:
L0: if not(C) then GOTO L1;
S;
GOTO L0;
L1 : …

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN


18


Phát biểu lặp

repeat:

repeat S until C;
L0: S;
if not(C) then GOTO L0;

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

19


Điều khiển trình tự giữa các chương trình
con
 Gọi trở về đơn giản
 Gọi đệ qui

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

20


Cấu trúc gọi trở về đơn giản
 Khi chương trình được thực thi, chương trình chính được
thực hiện đầu tiên. Trong thời gian thực thi chương trình

chính có thể gọi các ctc thực hiện. Và mỗi chương trình con
này, đến lượt nó, lại có thể gọi các chương trình con khác
thực hiện
 Nếu ctc A gọi ctc B, thì A gọi là chương trình gọi, B gọi là
chương trình được gọi. Trong thời gian thực thi B thì A tạm
thời bị treo. Khi sự thực thi B hoàn thành, sự thực thi A sẽ
tiếp tục tại ‘điểm’ ở ngay sau nơi gọi B

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

21


Hạn chế của cấu trúc gọi trở về đơn giản
 Chương trình con không được đệ qui (bao gồm đệ qui trực
tiếp, gián tiếp)
 Cần có các phát biểu gọi tường minh
 Chương trình con phải được hoàn thành ở mỗi lần gọi
 Điều khiển được chuyển ngay tức thời ở điểm gọi
 Trình tự thực thi đơn

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

22


Cấp phát bộ nhớ ctc gọi trở về đơn giản
 Các bản ghi hoạt động của cùng 1 ctc tạo ra trong mỗi lần
gọi ctc có thể sử dụng chung một khối lưu trữ và khối lưu trữ
này cũng được cấp phát tĩnh như khối lưu trữ phân đoạn mã.

 Các đối tượng dữ liệu trong các bản ghi hoạt động hòan toàn
xác định trong thời gian thực thi chương trình và có thể truy
cập dễ dàng, do đó tốc độ thực thi chương trình tăng lên.
 Tuy nhiên, cách lưu trữ này có nhược điểm là các ctc chiếm
dụng vùng nhớ nhiều, do phải cấp phát các khối lưu trữ cho
các bản ghi hoạt động của tất cả các ctc có mặt trong
chương trình. Các khối này nằm trong bộ nhớ trong suốt thời
gian thực thi chương trình, mặc dù ctc chưa được gọi tới
thâm chí không bao giờ được gọi

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

23


Cấu trúc gọi đệ qui
 Về mặt hiện thực gọi đệ qui khác gọi trở về đơn giản ở chỗ,
với gọi đệ qui nhiều bản hoạt động của cùng 1 ctc có thể
cùng tồn tại trong bộ nhớ, trong thời gian thực thi chương
trình. VD A gọi B rồi B gọi A, có tới 2 bản hoạt động của A
nằm trong bộ nhớ khi B gọi A
 Để gọi đệ qui ctc phải cấp phát động khối lưu trữ cho các
bản hoạt động trong thời gian thực thi chương trình

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

24


Cấp phát bộ nhớ cho ctc gọi đệ qui

 Việc cấp phát các khối lưu trữ thường được thực hiện theo
cơ chế chồng. Các khối lưu trữ được cấp phát trong một
chồng gọi là chồng trung tâm (central stack)
 Khi thực thi chương trình, bản ghi hoạt động của chương
trình chính được cấp phát ở đáy chồng. Khi một chương
trình A được gọi, bản ghi hoạt động của A được bố trí ngay
tiếp theo. Nếu A gọi tới B thì bản ghi hoạt động của B sẽ lại
được bố trí ngay tiếp vùng nhớ bản ghi hoạt động của A,
việc cấp phát cứ diễn ra tiếp tục như vậy.
 Khi B kết thúc trả điều khiển cho A thì bản ghi hoạt động
của B được giải phòng. Khi A kết thúc trả điều khiển cho
chương trình chính thì bản ghi hoạt động A được giải phóng,

Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH SPHN

25


×