Tải bản đầy đủ (.pptx) (11 trang)

DỮ LIỆU & GIẢI THUẬT k

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 (432.33 KB, 11 trang )

SINH VIÊN: Bùi Duy thành
Lớp: CNTT- K6
DỮ LiỆU VÀ GiẢI THUẬT


(hay) là một hệ đếm chỉ dùng hai ký tự
làvàđể biểu đạt một giá trị số.

Nguyên tắc của phương pháp này là lấy số cần chuyển đổi chia cho 2 (kết quả
chỉ lấy phần nguyên), sau đó tiếp tục lấy kết quả chia 2 (và cũng chỉ lấy phần
nguyên), kết quả số nhị phân thu được là tập hợp các số dư của các phép chia.
VÍ DỤ

Chuyển số 30 sang hệ nhị phân:
41 2
20
1
2
10 2
0 5 2
1 2
0
-> 001001
Đầu ên , chúng ta lấy 41 chia 2, kết quả được 20 và
số dư là 1.
Kế ếp , chúng ta lấy số 20 chia 2, kết quả được 10 và
số dư là 0
Tiếp theo, ta lấy số 10 chia 2, kết quả được 5 và dư 0
Ta ếp tục lặp lại quá trình này cho đến khi kết quả
chia 2 chúng ta được 0.
Số nhị phân chúng ta thu được chính là tập hợp các


số dư của các phép chia (lấy từ dưới lên).
Số 41 trong hệ nhị phân sẽ là 001001
0
2
1
0
2
MINH HỌA BẰNG STACK
1
0
0
0
0
(41)
10
= (001001)
2
1
Ý nghĩa của stack:

Là phần tử nào vào trước thì sẽ là phần tử ra cuối cùng và ngược lại, phần
tử nào vào sau thì ra trước. Hay còn gọi là LIFO( Last In Firt Out).
2.Tính giá trị biểu thức hậu tố
Ta có ba cách là biểu thức tiền tố (prefix), trung tố (infix) và hậu tố (postfix). Hãy xem một chút
giới thiệu về cách biểu diễn biểu thức tiền tố và hậu tố để hiểu rõ hơn về chúng.
-  !: Biểu thức tiền tố được biểu diễn bằng cách đặt toán tử lên trước các toán hạng.
Cách biểu diễn này còn được biết đến với tên gọi “"#$%&” . Với cách biểu diễn này,
thay vì viết x+y như dạng trung tố, ta sẽ viết +xy. Tùy theo độ ưu tiên của toán tử mà chúng sẽ
được sắp xếp khác nhau.
- ' !: Ngược lại với cách Prefix, tức là các toán tử sẽ được đặt sau các toán hạng.

Cách biểu diễn này được gọi là “"#$('%&” .
)*+, !' !
Thuật toán để chuyển một biểu thức Infix sang dạn Prefix:
Đọc từng token(Biểu thức) trong biểu thức infix từ trái qua phải, với mỗi token ta thực hiện các bước sau:
- Nếu là toán hạng: cho ra output.a
- Nếu là dấu mở ngoặc “(“: cho vào stack
- Nếu là dấu đóng ngoặc “)”: lấy các toán tử trong stack ra và cho vào output cho đến khi gặp
dấu mở ngoặc “(“. (Dấu mở ngoặc cũng phải được đưa ra khỏi stack)
- Nếu là toán tử:

Chừng nào ở đỉnh stack là toán tử và toán tử đó có độ ưu tiênlớn hơn hoặc bằng toán tử hiện
tại thì lấy toán tử đó ra khỏi stack và cho ra output.

Đưa toán tử hiện tại vào stack
Sau khi duyệt hết biểu thức in9x, nếu trong stack còn phần tử thì lấy các token trong đó ra và cho
lần lượt vào output.
Một số ví dụ:
, !  ! ' !
!- -! !-
!-./ !/ !-/.
!-0/ -!0/ !/0-
!-1./2 -!./ !/
Quy tắc tính như sau:

Nói đơn giản hơn là:

- Nếu là toán hạng: push vào stack

- Nếu là toán tử: pop hai toán hạng trong stack ra và tính giá trị của chúng
dựa vào toán tử này. Push kết quả đó lại vào stack.


Phần tử còn sót lại trong stack sau vòng lặp chính là kết quả của biểu thức.
Ví dụ:Biểu thức trung tố304.có kết quả là 17,chuyển sang hậu tố ta được:
6 3 * 1 –

Lặp từ trái qua phải của biểu thức:

- 6:  push vào Stack

- 3:  push vào Stack

- *:  pop 6 và 3 ra rồi tính 6*3=18, push 18 vào Stack

- 1:  push 1 vào Stack

- -:  pop 18 và 1 ra rồi tính 18-1=17, push 17 vào Stack

THE END

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×