1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Ngôn ngữ đặc tả hình thức và phương pháp phát triển phần mềm RAISE

11 86 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 920,24 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

lời gọi hàm increase sẽ làm cho trạng thái counter tăng thêm môt' đơn VỊ, và cho ra giá trị của biến counter đó.. Như vậy hàm nay có đoi là thuộc Unit {nghĩa là không có đối s ố nào thực

Trang 1

Chương III BIẾN, TUẦN TỤ VÀ ĐẶC TẢ LỆNH

Bài mỏt Biến

Đinh nghĩa b iến : Một dính nĩ^hĩa hiến có dạng sau:

ininh-chứng-biến : biểu-thức-kiếu

hoặc

m inh-chứ ng-biến : biểu-thức-kiểu := biểu-thức-trị

{biếii-rhức-rrị p hải có kiểu là hiêìi-thức-kiểu)

Khai báo b iến : Khai háo hiến có dạng sau:

variable danh-sách-các-định-nghĩa-biến

♦ Tâp hợp tấp ca các giá trị của tập hợp tất cả các biến-tạo thành một irạns; thái của hệ Ihòng

♦ Một thí dụ:

schem e C O U N T E R -

class

variable counter : Nat 0

value

Mc:'c;;.sc ; Ỉ,Hit - write ctiumer Nat

incrcascỉ ) is c o u n ic r ’■Diinici' I ; jo u n te r

Trang 2

Trong thí dụ này trạng thá dược xác định bòi giá In cua biến counter

lời gọi hàm increase sẽ làm cho trạng thái counter tăng thêm môt' đơn VỊ, và cho ra giá trị của biến counter đó Như vậy hàm nay có đoi là

thuộc Unit {nghĩa là không có đối s ố nào thực sự), có trị là môl số nguyên (có kiểu Nat) và có một hiệu ứng phụ; làm cho biến c o u n te /ta n a

Bài hai Truy cập biến

khoa nay cho phép ta truy cập biến counter trong phần biểu thức w rite counter RAISE cho phép hai kiểu truy cập biến nhờ ỏ’ hai từ khóa w rite

và read Sau mỗi từ khóa đó là một dãy các biến, từ khóa read cho phép đọc các biến đi sau nó, nghĩa là cho phep lấy ra các giá trị cu^a các bieiì đi sau nó mà không cho phép thay đổi các b iá i đó, từ khóa w rite cho phép

các biến đó đồng thời cho phép thay đổi các giá trị của các bien đo, n d iia

là cho phép gây ra các hiệu ứng phụ

V

ta sẽ xét các hàm có truy cập biến Định nghĩa tonầ

biểu-thức-kiểu-1 ->

mô-tả-truy-cập-biến-1 mô-tả-truy-cập-biến-k biểu-thức-kiểu-2

thức-kiểu-1 là kiểu của miền xác định của hàm

biểu-thức-kiêu-2 là kiểu của m iền giá trị của hàm, phần sau dấu còn cá^c m

ô-tá-truy-cập-biến là các biểu thức có dạng read hoặc write theo sau là môt

dãy các biến ■ ' '

Trang 3

Bleu thức <zán: Bieu ỉluíc »ứ/? daní: lonc quai la;

minh-chứníi-biến ;= biếu-thức-trị

{hiểu thức ĩrị này p h ả i có kiểu n h ư kiểu của hiến tươiĩ^ ứn^)

Kiểu của biểu thức sán bao giờ cũns là Unit

Trong thí dụ trên chúng ta có biểu thức gán counter := counter + 1

biểu thức không có phép gán và không có từ khóa write thì được gọi là

h iểu thức c h ỉ đọc.

không có gì đáng nói nữa Đối với các biểu thức chỉ đọc chúng ta vẫn có những ý nghĩa thông thuờng Đối với các biểu thức có biểu thức gán Ibì

có hiệu ứng phụ chỉ bởi biểu thức gán đó Việc định giá cho các biểu thức được tiến hành từ trái qua phải và từ trong ra ngoài Như vậy là trong khi định giá một biểu thức tliì trạng thái (lập các giá trị của các biến) đã bị thay đổi, sự thay đổi đó được gọi là hiệu ứng phụ khi đánh giá biểu thức

đó Thí dụ trong lược đồ COUNTER thì đánh giá biểu thức counter :=

counter -t- 1 ihì giá trị của biểu thức đó ỉà 0 {phản tử duy nhất có kiểu

Unit), nhưng nó có hiệu ứng phụ là biến counter đã bị tăng lên một đơn

vị Các biểu thức gán đều như vậy tức là đều có trị là 0 và đều tạo ra một hiệu ứng phụ, hiệu ứng phụ này được xác định bởi biểu thức gán đó

Bài ba Tuần tự

Kết nối tuần tự của hai biểu thức được biểu thị bởi dấu ; cụ thể là

chúng có dạng tổng quát là:

biểu-thức-trị-1 ; biểu-thức-trị-2

Trang 4

{à đ á y h ieu -íỉiư c -írị-/ p h a i có trị U nit, kiêu của hiếu thức kết hợp nủ\'

là kiêu cùa hiéu-thức-trị-2 )

♦ Đ á n h giá biểu thứ c báng: Dấu = được xác định như nói ở trèn cho

các biểu thức, nghĩa là đối với biểu thức

biéu-thức-1 = biếu-thức-2

thì ta dịnh íiiá cho biéu-thức-1 trước (tronc đó có cá việc định íziá trị cua biểu thức va việc dinh tĩiá trị hiệu ứnc phụ), sau đó dịnh tiếp g:á trị cúa biếu-thức-2 trên trạnc thái mới (do hiệu ứnc phụ) và các hiệu ứnc phu của chúng, và sau đó so đọ hai giá trị của biếu-thức-1 và biếu-thức-2

hoán

(x := x + ỉ;x ) = ( x ; = x + l ; 4 )

Biếu thức này có giá tọ tru e tai các trạng thái hệ thôns mà ở đó biến X

chứa giá 3, và có giá trị false nếu khác đi Hiệu ứng phụ của nó là làm

cho giá trị được chứa trong biến X tăng lên 2

Tlií dụ;

( x : = x , + l;x) = X

Biêu thức này luỏn iuôn có giá trị là tru e, hiệu ứng phụ là 2Ìá trị trong biến X tăn s lên 1

(x := x + l;x ) = ( \;:= x -l;x + l)

Biêu ihức này luỏn có giá Irị tru e và nó khôno: có hiệu ứntz phu, lức là

nó khỏiig làm [hay đói Irang thái cua hệ (sau khi dánh iZiá biểu thức)

liựp is (dâu lương dương) Định giá cho hiếii ihức này hoàn loàn kliac việc định giá cho biếu thức với dâu =

Vứi bi cu ihức

lìicu-lliức-1 is lìicii-lhức-I

Trang 5

■ỈUIIILI la phai co iiiol liiin sao ỈIC ihong tic đinh gia biéu-thức-1 và inòt

ao ỉie ihong dè dinh ‘iia bieu-ilurc-2 Sau đó phai so sánh ca giá tri

Ki l l s :

V i_l c é

iìav c

nieu ưníi pỉiLi

a lneu ứn<j phu mơi xác dinh dược biéu thức kct hợp co giá tri true

co ựui iri false hay có ‘iiá iri chaos Biéu ilìức hơp thành khong co

♦ (.liLing ra xem lai ihi du ơ bài mòt tren

counter := counter - 1 ; counter

inot no là kicLi Nat) Đê dinh iziá cho biẻu ihức nay, trước het la dịnh gui

ciio t:>ieu thưc iián ơ bén tnii Khi dó trị cua nó là 0 và liiẹu ứng phụ là

lain cho biến counter bi tãne thêm 1 Sau đó tiếp tuc định giá biếu thức kế

Iiep ơ bén phai (tronc ihí du nàv nó à bèn phải dấu ;) Biêu thức nay cho

ra izia tri cua biến (trong còng-tên-nơ) counter và khòng có hiệu ưng phụ Vày ihì toàn bộ bièu thức ớ trên khi được định giá có hiệu ứng phụ là biến counter bị tãnc lên 1 và cho ra siá trị là giá trị ban dầu cua biẽn

c; o L i n t e r công thêm

ix:=x+l;x) i s ( x ; - x + ỉ ; 4 ) Biếu thức nàv là true nếu nẹav trước khi đánh d á biếu thức thì biến X

chứa íziá tri 3, còn trái lai nó có giá trị false

♦ Xét b i ế u thức

(x;=x+l;x) isx+1

Bièu thức này luòn luòn có 2iá trị false vì hiệu ứng phụ cua hai vế là

((x:=x 4-l;x) = (x+l)) is true

Cá hai biểu ihức ứ hai vế dề có iiiá iri true, tuy vây hièu ứng phu của

chúng khác nỉiaư LÌC) tló bicLi lliưc iươníỊ dươniz này co uiá Iri false

♦ Xcl Iiioi ihi liu kliac

Trang 6

scheme COUNTER =

class

variable counter ; N at ~ 0

value

increase : Unit -> write counter Nat

increaseO is counter ~ counter +1; counter

end

COUNTER

scheme RETURNE_COUNTER =

extend COUNTER with

class

variable counterl : Nat := 0

value

save_counter: Unit -> read counter write counter! Unit

save_counter() is counter] ;= counter

end

Nếu như trong lược đổ này chúng ta xét biểu thức

save_counter() ; counter := counter + 1 ; counter

thì chúng ta thấy rằng khi định giá biểu thức thứ nhất thì chỉ có hiệu

ứng phụ là counter 1 bị thay đổi, sau đó đến biểu thức thứ hai thì chỉ có hiệu ứng phụ là counter bị thay đổi và sau đó định giá là giá tn của counter 1

Với biểu thức

counter := counter + 1 ; sa v e_ co u n te r(); counter

Trang 7

ihì nói chung cách thức đmh giá vẫn như vây nhưne kết quả là khác nhau, chúng la có thể dẽ dàng thử lại ràns giá Irị của hai biểu thức đó là như nhau (cùng bằng giá trị ban đầu của biến counter công thêm 1) nhưng hiệu ứng phụ là khác nhau

Bài bòn Thí dụ

Trong đoạn này chúng tôi đưa ra một thí dụ về một hệ cơ sở dữ liệu quan hệ dạng ánh xạ

scheme I_DATABASE =

class

tvpe Key, Data

variable db ; Key -m-> Data

value

empty : Unit -> write db Unit

em pty0 is db ;= [],

i n s e r t : Key >< Data -> write db Unit

insert(k,d) is db := db !! [k +> d],

Trang 8

remove ; Key -> write db Unit

defined ; Key -> read db Bool

defined(k) is k isin dom db

lookup ; Kev — > read db Data

lookup(k) is db(k) pre defmed(k)

end

Trong RAISE tools lược đồ này phải ghi vào một file có tên là

I DATABASE.rsl

Bài năm Vài biểu thức khác

Biếu thức if có claĩig (đày dú ) là

i f b i ế u - t h ứ c - b o o l t h e n b i ế u - t h ứ c - u - Ị - 1 e l s e b i è u - i h ư c - t r Ị - 2 e n d

tronụ bicu ihức này hai biếu-thức-irị-1 và biểu-thức-tn-2 phái có cùng

inột kieu biếu-thức-trị-bool phái có kièu Bool hoác kiếu có kièii cưc dai

là k i c u B o o l i.xeni R S L ) , n ó c ó i hỏ c ó I r u y c á p b i è n

♦ Bièu thức while Các biòLi thưc có đang lõng quát;

w h i l e b i ẽ u - i h ứ c - t r i - b o o l d u b i é u - i h ứ c - i r i - U n i t e n d

Trang 9

l i i i cỉ u m o l I u o ' l ' t l ỏ s a i l

sc lie me

F R A C ' T I ( ) N _ S U M =

class

variable

counter : Nat,

result : Real

value

fraction_siim ; Nat —r> write counter, result Unit

fraction_sum(n) is

counter := n ị

while counter > 0 do

result := result -r 1.0/(real counter);

counter := counter - 1

end

pre n>0

end

Lưọc đổ này phải được ghi vào file có tên là FRACTION_SUM.rsl

Biêu thức until Dane tone quát của biểu thức until là:

Chãns hạn cliúng ta có lược đo sau đâv:

scheme

FRACTION_SUM =

Trang 10

variable

counter: Nat,

result; Real

value

fraction_sum : Nat -—> write counter, result Unit

fraction_sum(n) is

counter ;= n ; result := 0.0 ; do

result := result + 1.0/(real counter);

counter := counter - ]

until counter = 0 end

pre n>0

end

Lược đồ này phải được ghi vào file có tên là FRACTION_SUM.rsl

♦ Biểu thức for Dạng tổng quát của biểu thức for là :

for bó-minh-chứng in biểu-thức-trị-danh-sách

do biểu-thức-trị-Unit end scheme

FRACTION_SUM =

class

variable

Trang 11

resuit : Real

value

i r a c n o n _ s u m : Nat — > write result Unit

axiom torall n : Nat

fraction_sum (n) is

result — 0.0 ;

for 1in < 1 n > do

re su lt := result - 1 0 / i r e a l i)

end

p r e n > 0

end

Lược đồ nàv phải được slìi vào file có tên là FRACTION_SUM.rsl

Ngày đăng: 27/03/2020, 23:25

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w