新しく発言する  EXIT  インデックスへ
流れ図(フローチャート)を描く

  流れ図(フローチャート)を描く 山中和義 2008/01/09 16:18:14  (修正1回)
  つづき 山中和義 2008/01/09 16:20:23  (修正1回)
   └流れ図でアルゴリズムを検証する。2008.1.1... 山中和義 2008/01/10 12:53:57  (修正4回)
    ├つづき 山中和義 2008/01/10 12:55:58  (修正4回)

Re: 流れ図でアルゴリズムを検証する。2008.1.1...  返事を書く  ノートメニュー
山中和義 <drdlxujciw> 2008/01/10 12:55:58 ** この記事は4回修正されてます
つづき

!   1
! ┌─↑─┐
!2← s$ →0 c$
! └─↓─┘
!   3
PICTURE FChart(n,d$,s$,c$) !流れ図記号を描く
IF BLEN(s$)>9 THEN LET a=BLEN(s$)/9 ELSE LET a=1 !枠
DRAW chart(n) WITH SCALE(a,1) !※横倍のみ

SET TEXT JUSTIFY "CENTER","HALF"
PLOT TEXT ,AT 0,0: s$ !処理の内容

IF d$<>"" AND VAL(d$(1:1))=0 THEN !右方向に矢印がある場合、左側に記述する
SET TEXT JUSTIFY "RIGHT","HALF"
PLOT TEXT ,AT -a,0: c$
ELSE
SET TEXT JUSTIFY "LEFT","HALF"
PLOT TEXT ,AT a,0: c$ !枠外の注釈
END IF

IF d$<>"" THEN !矢印
LET d=VAL(d$(1:1)) !1文字目は向き、2文字目以降は注釈
DRAW ArrowAndComment(d,d$(2:LEN(d$)))
END IF
END PICTURE
PICTURE FChart2(n,d1$,d2$,s$,c$) !流れ図記号を描く
DRAW FChart(n,d1$,s$,c$)

IF n=5 THEN !「判断」なら、もう1本
LET d2=VAL(d2$(1:1))
DRAW ArrowAndComment(d2,d2$(2:LEN(d2$)))
ELSEIF n=6 OR n=7 OR n=16 OR n=17 THEN !「繰り返し」なら、番号を対応させる
SET TEXT JUSTIFY "CENTER","HALF"
PLOT TEXT ,AT 0,0.4: "ループ "&d2$(1:1)
END IF
END PICTURE
!--------------------


SUB ReadData(n,d1$,d2$,s$,c$) !流れ図記号を得る
READ n
IF n=5 OR n=6 OR n=7 OR n=16 OR n=17 THEN !「判断」「繰り返し」は矢印が2本!
READ d1$,d2$
ELSE
READ d1$
LET d2$=""
END IF
READ s$,c$
END SUB


DEF ToString$(s$)=CHR$(34)&s$&CHR$(34) !クォーテーション付文字データへ

!流れ図記号
! ┌───┐
! │ 命令 │注釈
! └─↓─┘
!を
! 行番号
! 命令文 !注釈
! GOTO 飛び先の行番号
!のような組で、コードを生成する。

DEF trim$(s$)=LTRIM$(RTRIM$(s$)) !左右の空白を削除する

DEF var$(s$)=trim$(s$(POS(s$,"→")+1:LEN(s$))) !変数名を得る ※expr→V
DEF expr$(s$)=trim$(s$(1:POS(s$,"→")-1)) !式を得る ※EXPR→v
DEF exprL$(s$)=trim$(s$(1:POS(s$,":")-1)) !左辺式を得る ※EXPR:expr
DEF exprR$(s$)=trim$(s$(POS(s$,":")+1:LEN(s$))) !右辺式を得る ※expr:EXPR
DEF fnc$(s$)=trim$(s$(1:POS(s$&"{","{")-1)) !関数名を得る ※F{p1,p2,…,pn}
DEF parm$(s$)=trim$(s$(POS(s$&"{","{")+1:POS(s$&"}","}")-1))&"," !引数を得る ※f{P1,P2,…,Pn}
DEF var2$(s$)=trim$(s$(1:POS(s$,"=")-1)) !変数名を得る ※V=p1,p2,…,pn
DEF parm2$(s$)=trim$(s$(POS(s$,"=")+1:LEN(s$)))&"," !引数を得る ※v=P1,P2,…,Pn
DEF op$(s$)=trim$(s$(2:LEN(s$))) !演算子を得る ※xOP

DIM LBL(20),JMP(20),NAM$(50) !「繰り返し」「結合子」「端子」用の行番号

    ├つづき2 山中和義 2008/01/10 13:01:14  (修正4回)
    ├つづき3 山中和義 2008/01/11 21:06:32  (修正2回)
    └つづき4 山中和義 2008/01/13 20:10:24  (修正1回)
     └サンプル(右から左へ受け流す〜♪) 山中和義 2008/01/13 20:18:23  (修正1回)
      └高校数学「数値計算とコンピュータ」 山中和義 2008/01/22 20:37:31  (修正1回)

 インデックスへ  EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。