新しく発言する  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回)
    ├つづき2 山中和義 2008/01/10 13:01:14  (修正4回)
    ├つづき3 山中和義 2008/01/11 21:06:32  (修正2回)

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


SUB CodeJump(d) !飛び先を生成する
PRINT "GOTO";
SELECT CASE d !方向に応じて
CASE 0 !右
PRINT 100*(x+1)+y
CASE 1 !上
PRINT 100*x+(y+1)
CASE 2 !左
PRINT 100*(x-1)+y
CASE 3 !下
PRINT 100*x+(y-1)
CASE ELSE
END SELECT
END SUB
SUB CodeParm(t$,flg) !引数を生成する ※t$=p1,p2,…,pn,形式
LET i=1
LET p=POS(t$,",")
DO WHILE p>0 AND t$<>","
IF flg>0 THEN
PRINT "LET ";trim$(t$(1:p-1));"=PARM";STR$(i) !引数から
ELSE
PRINT "LET PARM";STR$(i);"=";trim$(t$(1:p-1)) !引数へ
END IF
LET t$=t$(p+1:LEN(t$)) !eat it

LET i=i+1 !次へ
LET p=POS(t$,",")
LOOP
END SUB
SUB CodeComment(c$) !注釈を生成する
IF c$<>"" THEN PRINT " !";
PRINT c$
END SUB
!-------------------- ここまでがサブルーチン



LET h=7 !行数
LET w=5 !列数

LET s=MAX((w+1)*2,(h+1)*1.5)
SET WINDOW 0,s,0,s !表示領域 ※正方形
DRAW grid(2,1.5)

!1パス目(流れ図の描画、飛び先の行番号の定義)
RESTORE 10
FOR x=1 TO w !格子を走査する
FOR y=h TO 1 STEP -1
CALL ReadData(n,d1$,d2$,s$,c$) !流れ図記号を得る

DRAW FChart2(n,d1$,d2$,s$,c$) WITH SHIFT(x*2,y*1.5) !流れ図を描く

SELECT CASE n !コード生成に備えて位置を記録する
CASE 1 !端子
IF POS(s$,"開始")>0 THEN
ELSEIF POS(s$,"終了")>0 THEN
ELSEIF POS(s$,"戻る")>0 THEN
ELSE !関数、手続きなら
LET NAM$(x+w*y)=fnc$(s$) !名称
END IF
CASE 2!結合子
IF d1$<>"" THEN LET JMP(VAL(s$))=100*x+y !入口なら
CASE 6,16 !繰り返しの開始
LET d2=VAL(d2$) !ループ番号
IF s$<>"" THEN !前判定なら
LET LBL(d2)=100*x+y
ELSE
IF LBL(d2)>0 THEN !後判定が確定なら
ELSE
LET LBL(d2)=-(100*x+y) !後判定か無条件か
END IF
END IF
CASE 7,17 !繰り返しの終了
LET d2=VAL(d2$) !ループ番号
IF LBL(d2)>0 THEN !前判定が確定なら
ELSE
IF s$<>"" THEN LET LBL(d2)=100*x+y !後判定なら
!無条件は負!
END IF
CASE ELSE
END SELECT
NEXT y
NEXT x

!2パス目(コード生成)
RESTORE 10
FOR x=1 TO w !格子を走査する
FOR y=h TO 1 STEP -1
CALL ReadData(n,d1$,d2$,s$,c$)

IF n>0 THEN CALL CodeGen(n,d1$,d2$,s$,c$) !コードを生成する
NEXT y
NEXT x

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

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