超久々に、シリーズ「VDMのお勉強」。
前回は、overtureを使って、VDM-SLの骨格を出力させた。
こんな感じ
module HelloVDM exports all definitions state StateName of -- TODO Define state here end types -- TODO Define types here values -- TODO Define values here functions -- TODO Define functions here operations -- TODO Define operations here end HelloVDM |
今回は、書く中身について、概略。
■とにかく、サンプルコード
名前を入力したら、
”Hello ”+名前+”!!"
と出力する処理、Helloを定義すると、こんなかんじ
module HelloVDM exports all definitions types -- ここに、レコードの型とか書くけど、今回は使わない values state StateName of -- ここに、状態として、 -- state HelloVDM管理 of -- 変数 : 型という形で書いていくけど、今回は使わない -- 不変条件 -- inv mk_HelloModule管理(変数1,変数2・・・) == -- 以降、不変条件を並べるけど、今回は使わない -- 初期化 -- init HelloVDMデータ == HelloVDMデータ -- = mk_HelloVDM管理(変数1の初期値,変数2の初期値・・・) -- という形で書いていくけど、今回は使わないので書かない end functions -- 関数を書くところ。今回は使わない。 operations Hello : seq of char ==> seq of char Hello(名前) == ( return "Hello " ^ 名前 ^ "!!" ) -- 事前条件: pre len 名前 > 0; -- 事後条件: -- post 条件式だが、今回は特にない end HelloVDM |
■そして
このソースを、
VDMのお勉強-その4 使い方
http://blog.goo.ne.jp/xmldtp/e/e08a21fa14c65253fa145563935571bb
で書いたツールを立ち上げて、ファイルを追加し、
実行用のパネルをひらいて、
init
print Hello("vdm")
と入力すると、
"Hello vdm!!"
と返ってくる。
細かい話の前に、同じコトをVDM++でもやってみる。