You are on page 1of 3

56.

Đặc tả phân số, inv_Phanso, đặc tả hàm tính tổng của một mảng các phân số

phanso = compose of phanso of


tuso: z
mauso: z
end
mk_phanso: ZxZ -> phanso
inv_phanso: phanso -> B
inv_phanso(d) ≜
d.mauso != 0
RutGonPhanSo: phanso
RutGonPhanSo(d) ≜
Ext wr ps: phanso
Let ts = ps.tuso, ms = ps.mauso in
let u=uscln(ts,ms) in
let tsmoi = ts/u, msmoi = ms/u in
ps = 𝜇(𝑝𝑠, 𝑡𝑢𝑠𝑜 ↦ 𝑡𝑠𝑚𝑜𝑖, 𝑚𝑎𝑢𝑠𝑜 ↦ 𝑚𝑠𝑚𝑜𝑖)
Tong2ps: phanso x phanso -> phanso
Tong2ps (a,b) ≜
Let ts = a.tuso * b.mauso + b.tuso * a.mauso, ms = a.mauso * b.mauso in ps = RutGonPhanSo(mk-
phanso(ts,ms))
Tổng_phanso: seq X -> phanso
Tổng_phanso: (X) ≜
If len ps = 0 then
0
Else
If len ps = 1 then
Ps
Else
Tong2ps(hd ps, Tong_phanso(tail ps))

58. Đặc tả điểm, đường thẳng trong không gian hai chiều

diem= compose of diem of


x: R
y: R
end
mk_diem: RxR -> diem
duongthang = compose of duongthang of
A: R
B: R
PTDT: y=Ax+B
End
mk_duongthang: R, R -> duongthang
ThuocDuongThang(A: Diem) r:B
Ext Rd d: duongthang
Pre true
Post r = (d.A*A.x + d.B ) = A.y
59. Đặc tả điểm, tam giac trong không gian hai chiều

diem= compose of diem of


x: R
y: R
end
mk_diem: RxR -> diem
diemTrung: Diem x Diem -> B
diemTrung(A,B) ≜
A.x != B.x ∧ A.y != B.y
tamgiac= compose of tamgiac of
A: R
B: R
PTDT: y=Ax+B
End
mk_ tamgiac: R, R -> tamgiac
Inv_tamgiac: Diem x Diem x Diem
Inv_tamgiac(a,b,c) ≜
diemTrung(a,b) ∧ diemTrung(a,c) ∧ diemTrung(b,c)
Thanghang: Diem x Diem x Diem -> B
Thanghang (a,b,c) ≜
(a.x – b.x)*(b.y – c.y) == (a.x – c.x)*(c.y – b.y)

60. Đặc tả stack chứa các số tự nhiên

stack= compose of stack of


max: N
A: N-set
End
mk_stack: A,N -> stack
push: Stack x N -> B
push(s, n) ≜
if len s = N then
false
else
s.A = 𝜇(𝑠, , 𝑠. 𝐴 ⟼ 𝑠. 𝐴 ↷ 𝑛 )
pop: Stack x N
pop(s, n) ≜
if len len s.A = 0 then
false
else
s.A = 𝜇(𝑠, 𝑠. 𝐴 ⟼ 𝑠. 𝐴(1, 𝑙𝑒𝑛 𝑠. 𝐴 − 1))
true
top: -> B
top( ) ≜
ext rd s: Stack
if len len s.A = 0 then
-1
else
s.A(len s.A)

You might also like