流れ図(フローチャート)を描く 山中和義 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回)